From e3e6679361254a237c51dd4e6356a4cd58007085 Mon Sep 17 00:00:00 2001 From: Jamie D Date: Sun, 22 Feb 2026 21:52:00 +0000 Subject: [PATCH 1/3] feat: Implement LspModelProvider for SysML model fetching and processing - Added LspModelProvider to handle requests to the sysml-v2-lsp server for model data. - Introduced sysmlModelTypes for defining data transfer objects (DTOs) used in LSP communication. --- .github/workflows/release.yml | 12 - .gitignore | 11 +- .sysml-cache/library.json | 28764 ----------- .vscodeignore | 3 - ARCHITECTURE.md | 133 +- CHANGELOG.md | 31 + Makefile | 65 - eslint.config.js | 33 +- grammar/SysMLv2Lexer.g4 | 922 - grammar/SysMLv2Parser.g4 | 2400 - package-lock.json | 1230 +- package.json | 79 +- scripts/generate-visual-test-guide.js | 359 - scripts/postprocess-antlr.js | 85 - scripts/run-all-tests.js | 127 - scripts/test-all-samples.js | 74 - scripts/test-all-views.js | 582 - scripts/test-parser-standalone.js | 308 - src/explorer/modelExplorerProvider.ts | 66 +- src/extension.ts | 382 +- src/library/cacheManager.ts | 125 - src/library/compiler.ts | 362 - src/library/index.ts | 13 - src/library/service.ts | 217 - src/library/types.ts | 140 - src/lsp/client.ts | 73 +- src/panels/featureInspectorPanel.ts | 661 + src/panels/modelDashboardPanel.ts | 377 + src/parser/antlrSysMLParser.ts | 3504 -- .../generated/grammar/SysMLv2Lexer.interp | 692 - .../generated/grammar/SysMLv2Lexer.tokens | 442 - src/parser/generated/grammar/SysMLv2Lexer.ts | 1272 - .../generated/grammar/SysMLv2Parser.interp | 956 - .../generated/grammar/SysMLv2Parser.tokens | 442 - src/parser/generated/grammar/SysMLv2Parser.ts | 40923 ---------------- .../generated/grammar/SysMLv2ParserVisitor.ts | 1006 - src/parser/libraryIndexer.ts | 275 - src/parser/parserWorker.ts | 93 - src/parser/parserWorkerHost.ts | 154 - src/parser/sysmlParser.ts | 3225 -- src/parser/vscodeMock.ts | 39 - src/providers/lspModelProvider.ts | 157 + src/providers/sysmlModelTypes.ts | 208 + src/resolver/diagnostics.ts | 283 - src/resolver/index.ts | 10 - src/resolver/resolver.ts | 672 - src/resolver/types.ts | 136 - src/test/activityDiagram.test.ts | 209 - src/test/advancedGrammar.test.ts | 373 - src/test/antlrParser.test.ts | 299 - src/test/docExtraction.test.ts | 470 - src/test/exportScaleLogic.test.ts | 91 +- src/test/parser.test.ts | 270 - src/test/phase4Verification.test.ts | 125 - src/test/register-vscode-mock.ts | 23 + src/test/visualizationInteraction.test.ts | 356 - src/test/visualizationPanel.test.ts | 790 - src/test/vscode-mock.ts | 539 + src/types/sysml-v2-lsp.d.ts | 3 - src/types/sysmlTypes.ts | 99 + src/visualization/visualizationPanel.ts | 580 +- 61 files changed, 3118 insertions(+), 93232 deletions(-) delete mode 100644 .sysml-cache/library.json delete mode 100644 grammar/SysMLv2Lexer.g4 delete mode 100644 grammar/SysMLv2Parser.g4 delete mode 100644 scripts/generate-visual-test-guide.js delete mode 100644 scripts/postprocess-antlr.js delete mode 100644 scripts/run-all-tests.js delete mode 100644 scripts/test-all-samples.js delete mode 100644 scripts/test-all-views.js delete mode 100644 scripts/test-parser-standalone.js delete mode 100644 src/library/cacheManager.ts delete mode 100644 src/library/compiler.ts delete mode 100644 src/library/index.ts delete mode 100644 src/library/service.ts delete mode 100644 src/library/types.ts create mode 100644 src/panels/featureInspectorPanel.ts create mode 100644 src/panels/modelDashboardPanel.ts delete mode 100644 src/parser/antlrSysMLParser.ts delete mode 100644 src/parser/generated/grammar/SysMLv2Lexer.interp delete mode 100644 src/parser/generated/grammar/SysMLv2Lexer.tokens delete mode 100644 src/parser/generated/grammar/SysMLv2Lexer.ts delete mode 100644 src/parser/generated/grammar/SysMLv2Parser.interp delete mode 100644 src/parser/generated/grammar/SysMLv2Parser.tokens delete mode 100644 src/parser/generated/grammar/SysMLv2Parser.ts delete mode 100644 src/parser/generated/grammar/SysMLv2ParserVisitor.ts delete mode 100644 src/parser/libraryIndexer.ts delete mode 100644 src/parser/parserWorker.ts delete mode 100644 src/parser/parserWorkerHost.ts delete mode 100644 src/parser/sysmlParser.ts delete mode 100644 src/parser/vscodeMock.ts create mode 100644 src/providers/lspModelProvider.ts create mode 100644 src/providers/sysmlModelTypes.ts delete mode 100644 src/resolver/diagnostics.ts delete mode 100644 src/resolver/index.ts delete mode 100644 src/resolver/resolver.ts delete mode 100644 src/resolver/types.ts delete mode 100644 src/test/activityDiagram.test.ts delete mode 100644 src/test/advancedGrammar.test.ts delete mode 100644 src/test/antlrParser.test.ts delete mode 100644 src/test/docExtraction.test.ts delete mode 100644 src/test/parser.test.ts delete mode 100644 src/test/phase4Verification.test.ts create mode 100644 src/test/register-vscode-mock.ts delete mode 100644 src/test/visualizationInteraction.test.ts delete mode 100644 src/test/visualizationPanel.test.ts create mode 100644 src/test/vscode-mock.ts create mode 100644 src/types/sysmlTypes.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 823d890..4d7e24f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,18 +26,6 @@ jobs: node-version: '20.x' cache: npm - - name: Setup Java (for ANTLR4) - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '17' - - - name: Download ANTLR4 jar - run: | - mkdir -p tools - curl -fsSL -o tools/antlr-4.13.2-complete.jar \ - https://www.antlr.org/download/antlr-4.13.2-complete.jar - - name: Install dependencies run: npm ci diff --git a/.gitignore b/.gitignore index 5bb5669..cd5de96 100644 --- a/.gitignore +++ b/.gitignore @@ -56,15 +56,10 @@ Thumbs.db *.tmp *.temp -# Official SysML v2 Library (downloaded at build time) -sysml.library/ +docs/ -docs - -# Grammar generation -.grammar-cache/ -tools/*.jar -__pycache__/ +# Cache files +.sysml-cache/ # Test output test-output/ diff --git a/.sysml-cache/library.json b/.sysml-cache/library.json deleted file mode 100644 index f3e7f7e..0000000 --- a/.sysml-cache/library.json +++ /dev/null @@ -1,28764 +0,0 @@ -{ - "version": "lib-23d26712", - "timestamp": 1770834755610, - "symbols": [ - [ - "ToolExecution", - { - "qualifiedName": "ToolExecution", - "name": "ToolExecution", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/AnalysisTooling.sysml", - "line": 9, - "specializes": [], - "features": [ - { - "name": "toolName", - "kind": "attribute", - "isComposite": true - }, - { - "name": "uri", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "toolName", - { - "qualifiedName": "toolName", - "name": "toolName", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/AnalysisTooling.sysml", - "line": 16, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "uri", - { - "qualifiedName": "uri", - "name": "uri", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/AnalysisTooling.sysml", - "line": 17, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ToolVariable", - { - "qualifiedName": "ToolVariable", - "name": "ToolVariable", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/AnalysisTooling.sysml", - "line": 20, - "specializes": [], - "features": [ - { - "name": "name", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "name", - { - "qualifiedName": "name", - "name": "name", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/AnalysisTooling.sysml", - "line": 30, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SamplePair", - { - "qualifiedName": "SamplePair", - "name": "SamplePair", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 15, - "specializes": [], - "features": [ - { - "name": "domainValue", - "kind": "attribute", - "isComposite": true - }, - { - "name": "rangeValue", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "domainValue", - { - "qualifiedName": "domainValue", - "name": "domainValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines key", - { - "qualifiedName": "redefines key", - "name": "redefines key", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "rangeValue", - { - "qualifiedName": "rangeValue", - "name": "rangeValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines val", - { - "qualifiedName": "redefines val", - "name": "redefines val", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SampledFunction", - { - "qualifiedName": "SampledFunction", - "name": "SampledFunction", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 25, - "specializes": [], - "features": [ - { - "name": "samples", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "samples", - { - "qualifiedName": "samples", - "name": "samples", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 37, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines elements", - { - "qualifiedName": "redefines elements", - "name": "redefines elements", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 252, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Domain", - { - "qualifiedName": "Domain", - "name": "Domain", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 46, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Range", - { - "qualifiedName": "Range", - "name": "Range", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 56, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Sample", - { - "qualifiedName": "Sample", - "name": "Sample", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 66, - "specializes": [], - "features": [ - { - "name": "domainValues", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "calculation", - { - "qualifiedName": "calculation", - "name": "calculation", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "domainValues", - { - "qualifiedName": "domainValues", - "name": "domainValues", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 100, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Interpolate", - { - "qualifiedName": "Interpolate", - "name": "Interpolate", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 79, - "specializes": [], - "features": [ - { - "name": "fn", - "kind": "attribute", - "isComposite": true - }, - { - "name": "value", - "kind": "attribute", - "isComposite": true - }, - { - "name": "result", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "fn", - { - "qualifiedName": "fn", - "name": "fn", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 97, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "value", - { - "qualifiedName": "value", - "name": "value", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 107, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "result", - { - "qualifiedName": "result", - "name": "result", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 26, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "interpolateLinear", - { - "qualifiedName": "interpolateLinear", - "name": "interpolateLinear", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 91, - "specializes": [], - "features": [ - { - "name": "fn", - "kind": "attribute", - "isComposite": true - }, - { - "name": "value", - "kind": "attribute", - "isComposite": true - }, - { - "name": "domainValues", - "kind": "attribute", - "isComposite": true - }, - { - "name": "index", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "index", - { - "qualifiedName": "index", - "name": "index", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/Actions.sysml", - "line": 513, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Linear", - { - "qualifiedName": "Linear", - "name": "Linear", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 104, - "specializes": [], - "features": [ - { - "name": "lowerSample", - "kind": "attribute", - "isComposite": true - }, - { - "name": "upperSample", - "kind": "attribute", - "isComposite": true - }, - { - "name": "value", - "kind": "attribute", - "isComposite": true - }, - { - "name": "f", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "lowerSample", - { - "qualifiedName": "lowerSample", - "name": "lowerSample", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 105, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "upperSample", - { - "qualifiedName": "upperSample", - "name": "upperSample", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 106, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "f", - { - "qualifiedName": "f", - "name": "f", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/SampledFunctions.sysml", - "line": 108, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateSpace", - { - "qualifiedName": "StateSpace", - "name": "StateSpace", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 11, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Input", - { - "qualifiedName": "Input", - "name": "Input", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Output", - { - "qualifiedName": "Output", - "name": "Output", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 13, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "GetNextState", - { - "qualifiedName": "GetNextState", - "name": "GetNextState", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 15, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "GetOutput", - { - "qualifiedName": "GetOutput", - "name": "GetOutput", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateSpaceEventDef", - { - "qualifiedName": "StateSpaceEventDef", - "name": "StateSpaceEventDef", - "packagePath": "", - "kind": "action", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 27, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ZeroCrossingEventDef", - { - "qualifiedName": "ZeroCrossingEventDef", - "name": "ZeroCrossingEventDef", - "packagePath": "", - "kind": "action", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 33, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateSpaceItem", - { - "qualifiedName": "StateSpaceItem", - "name": "StateSpaceItem", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateSpaceDynamics", - { - "qualifiedName": "StateSpaceDynamics", - "name": "StateSpaceDynamics", - "packagePath": "", - "kind": "action", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 42, - "specializes": [], - "features": [ - { - "name": "input", - "kind": "attribute", - "isComposite": true - }, - { - "name": "stateSpace", - "kind": "attribute", - "isComposite": true - }, - { - "name": "output", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "input", - { - "qualifiedName": "input", - "name": "input", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 49, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "getNextState", - { - "qualifiedName": "getNextState", - "name": "getNextState", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 51, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "getOutput", - { - "qualifiedName": "getOutput", - "name": "getOutput", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 52, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "stateSpace", - { - "qualifiedName": "stateSpace", - "name": "stateSpace", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 53, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "output", - { - "qualifiedName": "output", - "name": "output", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 55, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateDerivative", - { - "qualifiedName": "StateDerivative", - "name": "StateDerivative", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 58, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "assert stateSpace.order==order", - { - "qualifiedName": "assert stateSpace.order==order", - "name": "assert stateSpace.order==order", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "GetDerivative", - { - "qualifiedName": "GetDerivative", - "name": "GetDerivative", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 68, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Integrate", - { - "qualifiedName": "Integrate", - "name": "Integrate", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 79, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ContinuousStateSpaceDynamics", - { - "qualifiedName": "ContinuousStateSpaceDynamics", - "name": "ContinuousStateSpaceDynamics", - "packagePath": "", - "kind": "action", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 93, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "getDerivative", - { - "qualifiedName": "getDerivative", - "name": "getDerivative", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 100, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines getNextState", - { - "qualifiedName": "redefines getNextState", - "name": "redefines getNextState", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 137, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "We compute nextState by Integrate...", - { - "qualifiedName": "We compute nextState by Integrate...", - "name": "We compute nextState by Integrate...", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 102, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "integrate", - { - "qualifiedName": "integrate", - "name": "integrate", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 103, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ContinuousStateSpaceDynamics may cause...", - { - "qualifiedName": "ContinuousStateSpaceDynamics may cause...", - "name": "ContinuousStateSpaceDynamics may cause...", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 113, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "GetDifference", - { - "qualifiedName": "GetDifference", - "name": "GetDifference", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 117, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DiscreteStateSpaceDynamics", - { - "qualifiedName": "DiscreteStateSpaceDynamics", - "name": "DiscreteStateSpaceDynamics", - "packagePath": "", - "kind": "action", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 129, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "getDifference", - { - "qualifiedName": "getDifference", - "name": "getDifference", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 136, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "diff", - { - "qualifiedName": "diff", - "name": "diff", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/StateSpaceRepresentation.sysml", - "line": 138, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "EvaluationFunction", - { - "qualifiedName": "EvaluationFunction", - "name": "EvaluationFunction", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 11, - "specializes": [], - "features": [ - { - "name": "result", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TradeStudyObjective", - { - "qualifiedName": "TradeStudyObjective", - "name": "TradeStudyObjective", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 34, - "specializes": [], - "features": [ - { - "name": "best", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "selectedAlternative", - { - "qualifiedName": "selectedAlternative", - "name": "selectedAlternative", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 44, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "eval", - { - "qualifiedName": "eval", - "name": "eval", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 60, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "best", - { - "qualifiedName": "best", - "name": "best", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 67, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "{eval(selectedAlternative)...}", - { - "qualifiedName": "{eval(selectedAlternative)...}", - "name": "{eval(selectedAlternative)...}", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 76, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MinimizeObjective", - { - "qualifiedName": "MinimizeObjective", - "name": "MinimizeObjective", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 79, - "specializes": [], - "features": [ - { - "name": "redefines best", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines best", - { - "qualifiedName": "redefines best", - "name": "redefines best", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 105, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MaximizeObjective", - { - "qualifiedName": "MaximizeObjective", - "name": "MaximizeObjective", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 97, - "specializes": [], - "features": [ - { - "name": "redefines best", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TradeStudy", - { - "qualifiedName": "TradeStudy", - "name": "TradeStudy", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 115, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "studyAlternatives", - { - "qualifiedName": "studyAlternatives", - "name": "studyAlternatives", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 125, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "evaluationFunction", - { - "qualifiedName": "evaluationFunction", - "name": "evaluationFunction", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 135, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tradeStudyObjective", - { - "qualifiedName": "tradeStudyObjective", - "name": "tradeStudyObjective", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 145, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines selectedAlternative", - { - "qualifiedName": "redefines selectedAlternative", - "name": "redefines selectedAlternative", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 156, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines alternatives", - { - "qualifiedName": "redefines alternatives", - "name": "redefines alternatives", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 157, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines eval", - { - "qualifiedName": "redefines eval", - "name": "redefines eval", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Analysis/TradeStudies.sysml", - "line": 158, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "causes", - { - "qualifiedName": "causes", - "name": "causes", - "packagePath": "", - "kind": "occurrence", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 31, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "effects", - { - "qualifiedName": "effects", - "name": "effects", - "packagePath": "", - "kind": "occurrence", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 37, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Multicausation", - { - "qualifiedName": "Multicausation", - "name": "Multicausation", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 19, - "specializes": [], - "features": [ - { - "name": "nCauses", - "kind": "attribute", - "isComposite": true - }, - { - "name": "nEffects", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines causes", - { - "qualifiedName": "redefines causes", - "name": "redefines causes", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 31, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines effects", - { - "qualifiedName": "redefines effects", - "name": "redefines effects", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 37, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: causes.startShot", - { - "qualifiedName": "end: causes.startShot", - "name": "end: causes.startShot", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 50, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: effects", - { - "qualifiedName": "end: effects", - "name": "end: effects", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 50, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "nCauses", - { - "qualifiedName": "nCauses", - "name": "nCauses", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 52, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "nEffects", - { - "qualifiedName": "nEffects", - "name": "nEffects", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 53, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "multicausations", - { - "qualifiedName": "multicausations", - "name": "multicausations", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 57, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Causation", - { - "qualifiedName": "Causation", - "name": "Causation", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 61, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "theCause", - { - "qualifiedName": "theCause", - "name": "theCause", - "packagePath": "", - "kind": "occurrence", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 70, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines source", - { - "qualifiedName": "redefines source", - "name": "redefines source", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 71, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "theEffect", - { - "qualifiedName": "theEffect", - "name": "theEffect", - "packagePath": "", - "kind": "occurrence", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 74, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines target", - { - "qualifiedName": "redefines target", - "name": "redefines target", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "causations", - { - "qualifiedName": "causations", - "name": "causations", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Cause and Effect/CausationConnections.sysml", - "line": 79, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "cause", - { - "qualifiedName": "cause", - "name": "cause", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CauseAndEffect.sysml", - "line": 7, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines annotatedElement", - { - "qualifiedName": "redefines annotatedElement", - "name": "redefines annotatedElement", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines baseType", - { - "qualifiedName": "redefines baseType", - "name": "redefines baseType", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Requirement Derivation/RequirementDerivation.sysml", - "line": 36, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "effect", - { - "qualifiedName": "effect", - "name": "effect", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 349, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CausationMetadata", - { - "qualifiedName": "CausationMetadata", - "name": "CausationMetadata", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CauseAndEffect.sysml", - "line": 29, - "specializes": [], - "features": [ - { - "name": "isNecessary", - "kind": "attribute", - "isComposite": true - }, - { - "name": "isSufficient", - "kind": "attribute", - "isComposite": true - }, - { - "name": "probability", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isNecessary", - { - "qualifiedName": "isNecessary", - "name": "isNecessary", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Cause and Effect/CauseAndEffect.sysml", - "line": 39, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isSufficient", - { - "qualifiedName": "isSufficient", - "name": "isSufficient", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Cause and Effect/CauseAndEffect.sysml", - "line": 48, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "probability", - { - "qualifiedName": "probability", - "name": "probability", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "multicausation", - { - "qualifiedName": "multicausation", - "name": "multicausation", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CauseAndEffect.sysml", - "line": 63, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "causation", - { - "qualifiedName": "causation", - "name": "causation", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Cause and Effect/CauseAndEffect.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "PlanarCurve", - { - "qualifiedName": "PlanarCurve", - "name": "PlanarCurve", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 24, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines outerSpaceDimension", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines length", - { - "qualifiedName": "redefines length", - "name": "redefines length", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 894, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines outerSpaceDimension", - { - "qualifiedName": "redefines outerSpaceDimension", - "name": "redefines outerSpaceDimension", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 556, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "PlanarSurface", - { - "qualifiedName": "PlanarSurface", - "name": "PlanarSurface", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 36, - "specializes": [], - "features": [ - { - "name": "redefines area", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines outerSpaceDimension", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines area", - { - "qualifiedName": "redefines area", - "name": "redefines area", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 42, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines shape", - { - "qualifiedName": "redefines shape", - "name": "redefines shape", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 270, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Line", - { - "qualifiedName": "Line", - "name": "Line", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 48, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines outerSpaceDimension", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Path", - { - "qualifiedName": "Path", - "name": "Path", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 58, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines faces", - { - "qualifiedName": "redefines faces", - "name": "redefines faces", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 84, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines edges", - { - "qualifiedName": "redefines edges", - "name": "redefines edges", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 89, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines vertices", - { - "qualifiedName": "redefines vertices", - "name": "redefines vertices", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 893, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "semiMajorAxis", - { - "qualifiedName": "semiMajorAxis", - "name": "semiMajorAxis", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 75, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "semiMinorAxis", - { - "qualifiedName": "semiMinorAxis", - "name": "semiMinorAxis", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 76, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "xoffset", - { - "qualifiedName": "xoffset", - "name": "xoffset", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 77, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "yoffset", - { - "qualifiedName": "yoffset", - "name": "yoffset", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 78, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "baseLength", - { - "qualifiedName": "baseLength", - "name": "baseLength", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 79, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "baseWidth", - { - "qualifiedName": "baseWidth", - "name": "baseWidth", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 80, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConicSection", - { - "qualifiedName": "ConicSection", - "name": "ConicSection", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 82, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Ellipse", - { - "qualifiedName": "Ellipse", - "name": "Ellipse", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 94, - "specializes": [], - "features": [ - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines semiMajorAxis", - { - "qualifiedName": "redefines semiMajorAxis", - "name": "redefines semiMajorAxis", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 519, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines semiMinorAxis", - { - "qualifiedName": "redefines semiMinorAxis", - "name": "redefines semiMinorAxis", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 520, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Circle", - { - "qualifiedName": "Circle", - "name": "Circle", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 106, - "specializes": [], - "features": [ - { - "name": "redefines radius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines radius", - { - "qualifiedName": "redefines radius", - "name": "redefines radius", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 518, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "length", - { - "qualifiedName": "length", - "name": "length", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 117, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Parabola", - { - "qualifiedName": "Parabola", - "name": "Parabola", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 121, - "specializes": [], - "features": [ - { - "name": "focalDistance", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "focalDistance", - { - "qualifiedName": "focalDistance", - "name": "focalDistance", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 321, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Hyperbola", - { - "qualifiedName": "Hyperbola", - "name": "Hyperbola", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 132, - "specializes": [], - "features": [ - { - "name": "tranverseAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "conjugateAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tranverseAxis", - { - "qualifiedName": "tranverseAxis", - "name": "tranverseAxis", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 138, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "conjugateAxis", - { - "qualifiedName": "conjugateAxis", - "name": "conjugateAxis", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 333, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Polygon", - { - "qualifiedName": "Polygon", - "name": "Polygon", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 142, - "specializes": [], - "features": [ - { - "name": "redefines isClosed", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines isClosed", - { - "qualifiedName": "redefines isClosed", - "name": "redefines isClosed", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 546, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Triangle", - { - "qualifiedName": "Triangle", - "name": "Triangle", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 158, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines width", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines xoffset", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines width", - { - "qualifiedName": "redefines width", - "name": "redefines width", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 895, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines xoffset", - { - "qualifiedName": "redefines xoffset", - "name": "redefines xoffset", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 831, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "base", - { - "qualifiedName": "base", - "name": "base", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 835, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "e2", - { - "qualifiedName": "e2", - "name": "e2", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 203, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "e3", - { - "qualifiedName": "e3", - "name": "e3", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 204, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "v12", - { - "qualifiedName": "v12", - "name": "v12", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 208, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "apex", - { - "qualifiedName": "apex", - "name": "apex", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 850, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "apex", - "target": "apex" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "v31", - { - "qualifiedName": "v31", - "name": "v31", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 177, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RightTriangle", - { - "qualifiedName": "RightTriangle", - "name": "RightTriangle", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 180, - "specializes": [], - "features": [ - { - "name": "redefines xoffset", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines e2", - { - "qualifiedName": "redefines e2", - "name": "redefines e2", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 224, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "hypotenuse", - { - "qualifiedName": "hypotenuse", - "name": "hypotenuse", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 190, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines e3", - { - "qualifiedName": "redefines e3", - "name": "redefines e3", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 225, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Quadrilateral", - { - "qualifiedName": "Quadrilateral", - "name": "Quadrilateral", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 195, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "e1", - { - "qualifiedName": "e1", - "name": "e1", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 202, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "e4", - { - "qualifiedName": "e4", - "name": "e4", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 205, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "v23", - { - "qualifiedName": "v23", - "name": "v23", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 209, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "v34", - { - "qualifiedName": "v34", - "name": "v34", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 210, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "v41", - { - "qualifiedName": "v41", - "name": "v41", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 211, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Rectangle", - { - "qualifiedName": "Rectangle", - "name": "Rectangle", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 214, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines width", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines e1", - { - "qualifiedName": "redefines e1", - "name": "redefines e1", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 223, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines e4", - { - "qualifiedName": "redefines e4", - "name": "redefines e4", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 226, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Shell", - { - "qualifiedName": "Shell", - "name": "Shell", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 229, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Disc", - { - "qualifiedName": "Disc", - "name": "Disc", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 236, - "specializes": [], - "features": [ - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines innerSpaceDimension", - { - "qualifiedName": "redefines innerSpaceDimension", - "name": "redefines innerSpaceDimension", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 549, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CircularDisc", - { - "qualifiedName": "CircularDisc", - "name": "CircularDisc", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 260, - "specializes": [], - "features": [ - { - "name": "redefines radius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConicSurface", - { - "qualifiedName": "ConicSurface", - "name": "ConicSurface", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 277, - "specializes": [], - "features": [ - { - "name": "redefines genus", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines genus", - { - "qualifiedName": "redefines genus", - "name": "redefines genus", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 558, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Ellipsoid", - { - "qualifiedName": "Ellipsoid", - "name": "Ellipsoid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 290, - "specializes": [], - "features": [ - { - "name": "semiAxis1", - "kind": "attribute", - "isComposite": true - }, - { - "name": "semiAxis2", - "kind": "attribute", - "isComposite": true - }, - { - "name": "semiAxis3", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "semiAxis1", - { - "qualifiedName": "semiAxis1", - "name": "semiAxis1", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 296, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "semiAxis2", - { - "qualifiedName": "semiAxis2", - "name": "semiAxis2", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 297, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "semiAxis3", - { - "qualifiedName": "semiAxis3", - "name": "semiAxis3", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 298, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Sphere", - { - "qualifiedName": "Sphere", - "name": "Sphere", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 303, - "specializes": [], - "features": [ - { - "name": "redefines radius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiAxis1", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiAxis2", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiAxis3", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines semiAxis1", - { - "qualifiedName": "redefines semiAxis1", - "name": "redefines semiAxis1", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 310, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines semiAxis2", - { - "qualifiedName": "redefines semiAxis2", - "name": "redefines semiAxis2", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 311, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines semiAxis3", - { - "qualifiedName": "redefines semiAxis3", - "name": "redefines semiAxis3", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 312, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Paraboloid", - { - "qualifiedName": "Paraboloid", - "name": "Paraboloid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 315, - "specializes": [], - "features": [ - { - "name": "focalDistance", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Hyperboloid", - { - "qualifiedName": "Hyperboloid", - "name": "Hyperboloid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 326, - "specializes": [], - "features": [ - { - "name": "transverseAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "conjugateAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "transverseAxis", - { - "qualifiedName": "transverseAxis", - "name": "transverseAxis", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 332, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Toroid", - { - "qualifiedName": "Toroid", - "name": "Toroid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 336, - "specializes": [], - "features": [ - { - "name": "revolutionRadius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines genus", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "revolutionRadius", - { - "qualifiedName": "revolutionRadius", - "name": "revolutionRadius", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 343, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "revolvedCurve", - { - "qualifiedName": "revolvedCurve", - "name": "revolvedCurve", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 345, - "specializes": [], - "features": [ - { - "name": "redefines isClosed", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Torus", - { - "qualifiedName": "Torus", - "name": "Torus", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 354, - "specializes": [], - "features": [ - { - "name": "majorRadius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "minorRadius", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "majorRadius", - { - "qualifiedName": "majorRadius", - "name": "majorRadius", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 360, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines revolutionRadius", - { - "qualifiedName": "redefines revolutionRadius", - "name": "redefines revolutionRadius", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 360, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "minorRadius", - { - "qualifiedName": "minorRadius", - "name": "minorRadius", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 361, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines revolvedCurve", - { - "qualifiedName": "redefines revolvedCurve", - "name": "redefines revolvedCurve", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 376, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RectangularToroid", - { - "qualifiedName": "RectangularToroid", - "name": "RectangularToroid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 367, - "specializes": [], - "features": [ - { - "name": "rectangleLength", - "kind": "attribute", - "isComposite": true - }, - { - "name": "rectangleWidth", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "rectangleLength", - { - "qualifiedName": "rectangleLength", - "name": "rectangleLength", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 373, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "rectangleWidth", - { - "qualifiedName": "rectangleWidth", - "name": "rectangleWidth", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 374, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConeOrCylinder", - { - "qualifiedName": "ConeOrCylinder", - "name": "ConeOrCylinder", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 383, - "specializes": [], - "features": [ - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines height", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines xoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines yoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines genus", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines height", - { - "qualifiedName": "redefines height", - "name": "redefines height", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 830, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines yoffset", - { - "qualifiedName": "redefines yoffset", - "name": "redefines yoffset", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 832, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "af", - { - "qualifiedName": "af", - "name": "af", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 406, - "specializes": [], - "features": [ - { - "name": "redefines innerSpaceDimension", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines innerSpaceDimension", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "cf", - { - "qualifiedName": "cf", - "name": "cf", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 413, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "be", - { - "qualifiedName": "be", - "name": "be", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 416, - "specializes": [], - "features": [ - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [ - { - "type": "connection", - "source": "be", - "target": "be" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ae", - { - "qualifiedName": "ae", - "name": "ae", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 420, - "specializes": [], - "features": [ - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [ - { - "type": "connection", - "source": "ae", - "target": "ae" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Bind face edges to specific edges", - { - "qualifiedName": "Bind face edges to specific edges", - "name": "Bind face edges to specific edges", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 765, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..*]base.edges = [0..*]be", - { - "qualifiedName": "[0..*]base.edges = [0..*]be", - "name": "[0..*]base.edges = [0..*]be", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 431, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..*]cf.edges = [0..*]be", - { - "qualifiedName": "[0..*]cf.edges = [0..*]be", - "name": "[0..*]cf.edges = [0..*]be", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 432, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Meeting edges", - { - "qualifiedName": "Meeting edges", - "name": "Meeting edges", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 786, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]be → [1]be", - { - "qualifiedName": "[1]be → [1]be", - "name": "[1]be → [1]be", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 435, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: be", - { - "qualifiedName": "end: be", - "name": "end: be", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 435, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Cone", - { - "qualifiedName": "Cone", - "name": "Cone", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 440, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Bind face vertices to specific vertices", - { - "qualifiedName": "Bind face vertices to specific vertices", - "name": "Bind face vertices to specific vertices", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 450, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..*]cf.vertices = [0..*]apex", - { - "qualifiedName": "[0..*]cf.vertices = [0..*]apex", - "name": "[0..*]cf.vertices = [0..*]apex", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 451, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "EccentricCone", - { - "qualifiedName": "EccentricCone", - "name": "EccentricCone", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 454, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CircularCone", - { - "qualifiedName": "CircularCone", - "name": "CircularCone", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 463, - "specializes": [], - "features": [ - { - "name": "redefines radius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines base", - { - "qualifiedName": "redefines base", - "name": "redefines base", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 891, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RightCircularCone", - { - "qualifiedName": "RightCircularCone", - "name": "RightCircularCone", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 478, - "specializes": [], - "features": [ - { - "name": "redefines xoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines num", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines yoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines num", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines num", - { - "qualifiedName": "redefines num", - "name": "redefines num", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 484, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Cylinder", - { - "qualifiedName": "Cylinder", - "name": "Cylinder", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 488, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines af", - { - "qualifiedName": "redefines af", - "name": "redefines af", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 525, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..*]cf.edges = [0..*]ae", - { - "qualifiedName": "[0..*]cf.edges = [0..*]ae", - "name": "[0..*]cf.edges = [0..*]ae", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 496, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]ae → [1]ae", - { - "qualifiedName": "[1]ae → [1]ae", - "name": "[1]ae → [1]ae", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 498, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: ae", - { - "qualifiedName": "end: ae", - "name": "end: ae", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 498, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "EccentricCylinder", - { - "qualifiedName": "EccentricCylinder", - "name": "EccentricCylinder", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 503, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CircularCylinder", - { - "qualifiedName": "CircularCylinder", - "name": "CircularCylinder", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 512, - "specializes": [], - "features": [ - { - "name": "redefines radius", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMajorAxis", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines semiMinorAxis", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RightCircularCylinder", - { - "qualifiedName": "RightCircularCylinder", - "name": "RightCircularCylinder", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 530, - "specializes": [], - "features": [ - { - "name": "redefines xoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines num", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines yoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines num", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Polyhedron", - { - "qualifiedName": "Polyhedron", - "name": "Polyhedron", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 540, - "specializes": [], - "features": [ - { - "name": "redefines isClosed", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines outerSpaceDimension", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines genus", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CuboidOrTriangularPrism", - { - "qualifiedName": "CuboidOrTriangularPrism", - "name": "CuboidOrTriangularPrism", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 561, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tf", - { - "qualifiedName": "tf", - "name": "tf", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 568, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bf", - { - "qualifiedName": "bf", - "name": "bf", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 572, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ff", - { - "qualifiedName": "ff", - "name": "ff", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 576, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "rf", - { - "qualifiedName": "rf", - "name": "rf", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 577, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "slf", - { - "qualifiedName": "slf", - "name": "slf", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 578, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "srf", - { - "qualifiedName": "srf", - "name": "srf", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 582, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tfe", - { - "qualifiedName": "tfe", - "name": "tfe", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 590, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "tfe", - "target": "tfe" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tre", - { - "qualifiedName": "tre", - "name": "tre", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 591, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "tre", - "target": "tre" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tsle", - { - "qualifiedName": "tsle", - "name": "tsle", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 592, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "tsle", - "target": "tsle" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tsre", - { - "qualifiedName": "tsre", - "name": "tsre", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 593, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "tsre", - "target": "tsre" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bfe", - { - "qualifiedName": "bfe", - "name": "bfe", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 594, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "bfe", - "target": "bfe" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bre", - { - "qualifiedName": "bre", - "name": "bre", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 595, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "bre", - "target": "bre" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bsle", - { - "qualifiedName": "bsle", - "name": "bsle", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 596, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "bsle", - "target": "bsle" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bsre", - { - "qualifiedName": "bsre", - "name": "bsre", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 597, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "bsre", - "target": "bsre" - }, - { - "type": "connection", - "source": "bsre", - "target": "bsre" - }, - { - "type": "connection", - "source": "bsre", - "target": "bsre" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ufle", - { - "qualifiedName": "ufle", - "name": "ufle", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 598, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "ufle", - "target": "ufle" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ufre", - { - "qualifiedName": "ufre", - "name": "ufre", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 599, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "ufre", - "target": "ufre" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "urle", - { - "qualifiedName": "urle", - "name": "urle", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 600, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "urle", - "target": "urle" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "urre", - { - "qualifiedName": "urre", - "name": "urre", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 601, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "urre", - "target": "urre" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tflv", - { - "qualifiedName": "tflv", - "name": "tflv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 610, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "tflv", - "target": "tflv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "tfrv", - { - "qualifiedName": "tfrv", - "name": "tfrv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 611, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "tfrv", - "target": "tfrv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "trlv", - { - "qualifiedName": "trlv", - "name": "trlv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 612, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "trlv", - "target": "trlv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "trrv", - { - "qualifiedName": "trrv", - "name": "trrv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 613, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "trrv", - "target": "trrv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bflv", - { - "qualifiedName": "bflv", - "name": "bflv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 614, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "bflv", - "target": "bflv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bfrv", - { - "qualifiedName": "bfrv", - "name": "bfrv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 615, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "bfrv", - "target": "bfrv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "brlv", - { - "qualifiedName": "brlv", - "name": "brlv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 616, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "brlv", - "target": "brlv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "brrv", - { - "qualifiedName": "brrv", - "name": "brrv", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 617, - "specializes": [], - "features": [], - "relationships": [ - { - "type": "connection", - "source": "brrv", - "target": "brrv" - } - ], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tf.edges = [0..1]tfe", - { - "qualifiedName": "[0..1]tf.edges = [0..1]tfe", - "name": "[0..1]tf.edges = [0..1]tfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 622, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tf.edges = [0..1]tre", - { - "qualifiedName": "[0..1]tf.edges = [0..1]tre", - "name": "[0..1]tf.edges = [0..1]tre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 623, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tf.edges = [0..1]tsle", - { - "qualifiedName": "[0..1]tf.edges = [0..1]tsle", - "name": "[0..1]tf.edges = [0..1]tsle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 624, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bf.edges = [0..1]bfe", - { - "qualifiedName": "[0..1]bf.edges = [0..1]bfe", - "name": "[0..1]bf.edges = [0..1]bfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 625, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bf.edges = [0..1]bre", - { - "qualifiedName": "[0..1]bf.edges = [0..1]bre", - "name": "[0..1]bf.edges = [0..1]bre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 626, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bf.edges = [0..1]bsle", - { - "qualifiedName": "[0..1]bf.edges = [0..1]bsle", - "name": "[0..1]bf.edges = [0..1]bsle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 627, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bf.edges = [0..1]bsre", - { - "qualifiedName": "[0..1]bf.edges = [0..1]bsre", - "name": "[0..1]bf.edges = [0..1]bsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 628, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ff.edges = [0..1]tfe", - { - "qualifiedName": "[0..1]ff.edges = [0..1]tfe", - "name": "[0..1]ff.edges = [0..1]tfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 630, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ff.edges = [0..1]bfe", - { - "qualifiedName": "[0..1]ff.edges = [0..1]bfe", - "name": "[0..1]ff.edges = [0..1]bfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 631, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ff.edges = [0..1]ufle", - { - "qualifiedName": "[0..1]ff.edges = [0..1]ufle", - "name": "[0..1]ff.edges = [0..1]ufle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 632, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]rf.edges = [0..1]tre", - { - "qualifiedName": "[0..1]rf.edges = [0..1]tre", - "name": "[0..1]rf.edges = [0..1]tre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 634, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]rf.edges = [0..1]bre", - { - "qualifiedName": "[0..1]rf.edges = [0..1]bre", - "name": "[0..1]rf.edges = [0..1]bre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 635, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]rf.edges = [0..1]urle", - { - "qualifiedName": "[0..1]rf.edges = [0..1]urle", - "name": "[0..1]rf.edges = [0..1]urle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 636, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Bind edge vertices to specific vertices", - { - "qualifiedName": "Bind edge vertices to specific vertices", - "name": "Bind edge vertices to specific vertices", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 775, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tfe.vertices = [0..1]tflv", - { - "qualifiedName": "[0..1]tfe.vertices = [0..1]tflv", - "name": "[0..1]tfe.vertices = [0..1]tflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 639, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tre.vertices = [0..1]trlv", - { - "qualifiedName": "[0..1]tre.vertices = [0..1]trlv", - "name": "[0..1]tre.vertices = [0..1]trlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 640, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tsle.vertices = [0..1]tflv", - { - "qualifiedName": "[0..1]tsle.vertices = [0..1]tflv", - "name": "[0..1]tsle.vertices = [0..1]tflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 641, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tsle.vertices = [0..1]trlv", - { - "qualifiedName": "[0..1]tsle.vertices = [0..1]trlv", - "name": "[0..1]tsle.vertices = [0..1]trlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 642, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bfe.vertices = [0..1]bflv", - { - "qualifiedName": "[0..1]bfe.vertices = [0..1]bflv", - "name": "[0..1]bfe.vertices = [0..1]bflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 644, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bfe.vertices = [0..1]bfrv", - { - "qualifiedName": "[0..1]bfe.vertices = [0..1]bfrv", - "name": "[0..1]bfe.vertices = [0..1]bfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 645, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bre.vertices = [0..1]brlv", - { - "qualifiedName": "[0..1]bre.vertices = [0..1]brlv", - "name": "[0..1]bre.vertices = [0..1]brlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 646, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bre.vertices = [0..1]brrv", - { - "qualifiedName": "[0..1]bre.vertices = [0..1]brrv", - "name": "[0..1]bre.vertices = [0..1]brrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 647, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bsle.vertices = [0..1]bflv", - { - "qualifiedName": "[0..1]bsle.vertices = [0..1]bflv", - "name": "[0..1]bsle.vertices = [0..1]bflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 648, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bsle.vertices = [0..1]brlv", - { - "qualifiedName": "[0..1]bsle.vertices = [0..1]brlv", - "name": "[0..1]bsle.vertices = [0..1]brlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 649, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bsre.vertices = [0..1]bfrv", - { - "qualifiedName": "[0..1]bsre.vertices = [0..1]bfrv", - "name": "[0..1]bsre.vertices = [0..1]bfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 650, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]bsre.vertices = [0..1]brrv", - { - "qualifiedName": "[0..1]bsre.vertices = [0..1]brrv", - "name": "[0..1]bsre.vertices = [0..1]brrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 651, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ufle.vertices = [0..1]tflv", - { - "qualifiedName": "[0..1]ufle.vertices = [0..1]tflv", - "name": "[0..1]ufle.vertices = [0..1]tflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 653, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ufle.vertices = [0..1]bflv", - { - "qualifiedName": "[0..1]ufle.vertices = [0..1]bflv", - "name": "[0..1]ufle.vertices = [0..1]bflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 654, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]urle.vertices = [0..1]trlv", - { - "qualifiedName": "[0..1]urle.vertices = [0..1]trlv", - "name": "[0..1]urle.vertices = [0..1]trlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 655, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]urle.vertices = [0..1]brlv", - { - "qualifiedName": "[0..1]urle.vertices = [0..1]brlv", - "name": "[0..1]urle.vertices = [0..1]brlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 656, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]tfe → [1]tfe", - { - "qualifiedName": "[1]tfe → [1]tfe", - "name": "[1]tfe → [1]tfe", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 659, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: tfe", - { - "qualifiedName": "end: tfe", - "name": "end: tfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 659, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]tre → [1]tre", - { - "qualifiedName": "[1]tre → [1]tre", - "name": "[1]tre → [1]tre", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 660, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: tre", - { - "qualifiedName": "end: tre", - "name": "end: tre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 660, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]tsle → [1]tsle", - { - "qualifiedName": "[1]tsle → [1]tsle", - "name": "[1]tsle → [1]tsle", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 661, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: tsle", - { - "qualifiedName": "end: tsle", - "name": "end: tsle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 661, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]bfe → [1]bfe", - { - "qualifiedName": "[1]bfe → [1]bfe", - "name": "[1]bfe → [1]bfe", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 662, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: bfe", - { - "qualifiedName": "end: bfe", - "name": "end: bfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 662, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]bre → [1]bre", - { - "qualifiedName": "[1]bre → [1]bre", - "name": "[1]bre → [1]bre", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 663, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: bre", - { - "qualifiedName": "end: bre", - "name": "end: bre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 663, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]bsle → [1]bsle", - { - "qualifiedName": "[1]bsle → [1]bsle", - "name": "[1]bsle → [1]bsle", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 664, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: bsle", - { - "qualifiedName": "end: bsle", - "name": "end: bsle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 664, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]bsre → [1]bsre", - { - "qualifiedName": "[1]bsre → [1]bsre", - "name": "[1]bsre → [1]bsre", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 790, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: bsre", - { - "qualifiedName": "end: bsre", - "name": "end: bsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 790, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]ufle → [1]ufle", - { - "qualifiedName": "[1]ufle → [1]ufle", - "name": "[1]ufle → [1]ufle", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 666, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: ufle", - { - "qualifiedName": "end: ufle", - "name": "end: ufle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 666, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]urle → [1]urle", - { - "qualifiedName": "[1]urle → [1]urle", - "name": "[1]urle → [1]urle", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 667, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: urle", - { - "qualifiedName": "end: urle", - "name": "end: urle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 667, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Meeting vertices", - { - "qualifiedName": "Meeting vertices", - "name": "Meeting vertices", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 792, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]tflv → [2]tflv", - { - "qualifiedName": "[2]tflv → [2]tflv", - "name": "[2]tflv → [2]tflv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 671, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: tflv", - { - "qualifiedName": "end: tflv", - "name": "end: tflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 671, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]trlv → [2]trlv", - { - "qualifiedName": "[2]trlv → [2]trlv", - "name": "[2]trlv → [2]trlv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 672, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: trlv", - { - "qualifiedName": "end: trlv", - "name": "end: trlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 672, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]bflv → [2]bflv", - { - "qualifiedName": "[2]bflv → [2]bflv", - "name": "[2]bflv → [2]bflv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 673, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: bflv", - { - "qualifiedName": "end: bflv", - "name": "end: bflv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 673, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]bfrv → [2]bfrv", - { - "qualifiedName": "[2]bfrv → [2]bfrv", - "name": "[2]bfrv → [2]bfrv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 674, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: bfrv", - { - "qualifiedName": "end: bfrv", - "name": "end: bfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 674, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]brlv → [2]brlv", - { - "qualifiedName": "[2]brlv → [2]brlv", - "name": "[2]brlv → [2]brlv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 675, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: brlv", - { - "qualifiedName": "end: brlv", - "name": "end: brlv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 675, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]brrv → [2]brrv", - { - "qualifiedName": "[2]brrv → [2]brrv", - "name": "[2]brrv → [2]brrv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 676, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: brrv", - { - "qualifiedName": "end: brrv", - "name": "end: brrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 676, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TriangularPrism", - { - "qualifiedName": "TriangularPrism", - "name": "TriangularPrism", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 679, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines ff", - { - "qualifiedName": "redefines ff", - "name": "redefines ff", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 811, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines rf", - { - "qualifiedName": "redefines rf", - "name": "redefines rf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 813, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tf.edges = [0..1]bsre", - { - "qualifiedName": "[0..1]tf.edges = [0..1]bsre", - "name": "[0..1]tf.edges = [0..1]bsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 702, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tfe.vertices = [0..1]bfrv", - { - "qualifiedName": "[0..1]tfe.vertices = [0..1]bfrv", - "name": "[0..1]tfe.vertices = [0..1]bfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 705, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tre.vertices = [0..1]bfrv", - { - "qualifiedName": "[0..1]tre.vertices = [0..1]bfrv", - "name": "[0..1]tre.vertices = [0..1]bfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 706, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RightTriangularPrism", - { - "qualifiedName": "RightTriangularPrism", - "name": "RightTriangularPrism", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 709, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines width", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines height", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines tf", - { - "qualifiedName": "redefines tf", - "name": "redefines tf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 807, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines bf", - { - "qualifiedName": "redefines bf", - "name": "redefines bf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 809, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines slf", - { - "qualifiedName": "redefines slf", - "name": "redefines slf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 815, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines srf", - { - "qualifiedName": "redefines srf", - "name": "redefines srf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 817, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines tfe", - { - "qualifiedName": "redefines tfe", - "name": "redefines tfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 733, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines tre", - { - "qualifiedName": "redefines tre", - "name": "redefines tre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 734, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines tsle", - { - "qualifiedName": "redefines tsle", - "name": "redefines tsle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 735, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines bfe", - { - "qualifiedName": "redefines bfe", - "name": "redefines bfe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 736, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines bre", - { - "qualifiedName": "redefines bre", - "name": "redefines bre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 737, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines bsle", - { - "qualifiedName": "redefines bsle", - "name": "redefines bsle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 738, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines bsre", - { - "qualifiedName": "redefines bsre", - "name": "redefines bsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 739, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines ufle", - { - "qualifiedName": "redefines ufle", - "name": "redefines ufle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 740, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines urle", - { - "qualifiedName": "redefines urle", - "name": "redefines urle", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 741, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Cuboid", - { - "qualifiedName": "Cuboid", - "name": "Cuboid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 745, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tf.edges = [0..1]tsre", - { - "qualifiedName": "[0..1]tf.edges = [0..1]tsre", - "name": "[0..1]tf.edges = [0..1]tsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 766, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ff.edges = [0..1]ufre", - { - "qualifiedName": "[0..1]ff.edges = [0..1]ufre", - "name": "[0..1]ff.edges = [0..1]ufre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 767, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]rf.edges = [0..1]urre", - { - "qualifiedName": "[0..1]rf.edges = [0..1]urre", - "name": "[0..1]rf.edges = [0..1]urre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 768, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]srf.edges = [0..1]tsre", - { - "qualifiedName": "[0..1]srf.edges = [0..1]tsre", - "name": "[0..1]srf.edges = [0..1]tsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 770, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]srf.edges = [0..1]bsre", - { - "qualifiedName": "[0..1]srf.edges = [0..1]bsre", - "name": "[0..1]srf.edges = [0..1]bsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 771, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]srf.edges = [0..1]ufre", - { - "qualifiedName": "[0..1]srf.edges = [0..1]ufre", - "name": "[0..1]srf.edges = [0..1]ufre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 772, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]srf.edges = [0..1]urre", - { - "qualifiedName": "[0..1]srf.edges = [0..1]urre", - "name": "[0..1]srf.edges = [0..1]urre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 773, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tfe.vertices = [0..1]tfrv", - { - "qualifiedName": "[0..1]tfe.vertices = [0..1]tfrv", - "name": "[0..1]tfe.vertices = [0..1]tfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 776, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tre.vertices = [0..1]trrv", - { - "qualifiedName": "[0..1]tre.vertices = [0..1]trrv", - "name": "[0..1]tre.vertices = [0..1]trrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 777, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tsre.vertices = [0..1]tfrv", - { - "qualifiedName": "[0..1]tsre.vertices = [0..1]tfrv", - "name": "[0..1]tsre.vertices = [0..1]tfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 778, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]tsre.vertices = [0..1]trrv", - { - "qualifiedName": "[0..1]tsre.vertices = [0..1]trrv", - "name": "[0..1]tsre.vertices = [0..1]trrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 779, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ufre.vertices = [0..1]tfrv", - { - "qualifiedName": "[0..1]ufre.vertices = [0..1]tfrv", - "name": "[0..1]ufre.vertices = [0..1]tfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 781, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]ufre.vertices = [0..1]bfrv", - { - "qualifiedName": "[0..1]ufre.vertices = [0..1]bfrv", - "name": "[0..1]ufre.vertices = [0..1]bfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 782, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]urre.vertices = [0..1]trrv", - { - "qualifiedName": "[0..1]urre.vertices = [0..1]trrv", - "name": "[0..1]urre.vertices = [0..1]trrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 783, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[0..1]urre.vertices = [0..1]brrv", - { - "qualifiedName": "[0..1]urre.vertices = [0..1]brrv", - "name": "[0..1]urre.vertices = [0..1]brrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 784, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]tsre → [1]tsre", - { - "qualifiedName": "[1]tsre → [1]tsre", - "name": "[1]tsre → [1]tsre", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 787, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: tsre", - { - "qualifiedName": "end: tsre", - "name": "end: tsre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 787, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]ufre → [1]ufre", - { - "qualifiedName": "[1]ufre → [1]ufre", - "name": "[1]ufre → [1]ufre", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 788, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: ufre", - { - "qualifiedName": "end: ufre", - "name": "end: ufre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 788, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[1]urre → [1]urre", - { - "qualifiedName": "[1]urre → [1]urre", - "name": "[1]urre → [1]urre", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 789, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: urre", - { - "qualifiedName": "end: urre", - "name": "end: urre", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 789, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]tfrv → [2]tfrv", - { - "qualifiedName": "[2]tfrv → [2]tfrv", - "name": "[2]tfrv → [2]tfrv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 793, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: tfrv", - { - "qualifiedName": "end: tfrv", - "name": "end: tfrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 793, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[2]trrv → [2]trrv", - { - "qualifiedName": "[2]trrv → [2]trrv", - "name": "[2]trrv → [2]trrv", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 794, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: trrv", - { - "qualifiedName": "end: trrv", - "name": "end: trrv", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 794, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RectangularCuboid", - { - "qualifiedName": "RectangularCuboid", - "name": "RectangularCuboid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 797, - "specializes": [], - "features": [ - { - "name": "redefines length", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines width", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines height", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Pyramid", - { - "qualifiedName": "Pyramid", - "name": "Pyramid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 822, - "specializes": [], - "features": [ - { - "name": "redefines height", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines xoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines yoffset", - "kind": "attribute", - "isComposite": true - }, - { - "name": "wallNumber", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "wall", - { - "qualifiedName": "wall", - "name": "wall", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 836, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "wallNumber", - { - "qualifiedName": "wallNumber", - "name": "wallNumber", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 840, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Base to wall and wall to wall edge...", - { - "qualifiedName": "Base to wall and wall to wall edge...", - "name": "Base to wall and wall to wall edge...", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 854, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Meeting apices.", - { - "qualifiedName": "Meeting apices.", - "name": "Meeting apices.", - "packagePath": "", - "kind": "comment", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 861, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[wallNumber]apex → [wallNumber]apex", - { - "qualifiedName": "[wallNumber]apex → [wallNumber]apex", - "name": "[wallNumber]apex → [wallNumber]apex", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 862, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: apex", - { - "qualifiedName": "end: apex", - "name": "end: apex", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 862, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Tetrahedron", - { - "qualifiedName": "Tetrahedron", - "name": "Tetrahedron", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 865, - "specializes": [], - "features": [ - { - "name": "redefines baseLength", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines baseWidth", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines baseLength", - { - "qualifiedName": "redefines baseLength", - "name": "redefines baseLength", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 888, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines baseWidth", - { - "qualifiedName": "redefines baseWidth", - "name": "redefines baseWidth", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 889, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RectangularPyramid", - { - "qualifiedName": "RectangularPyramid", - "name": "RectangularPyramid", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/ShapeItems.sysml", - "line": 882, - "specializes": [], - "features": [ - { - "name": "redefines baseLength", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines baseWidth", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SpatialItem", - { - "qualifiedName": "SpatialItem", - "name": "SpatialItem", - "packagePath": "", - "kind": "item def", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 22, - "specializes": [], - "features": [ - { - "name": "coordinateFrame", - "kind": "attribute", - "isComposite": true - }, - { - "name": "cunionNum", - "kind": "attribute", - "isComposite": true - }, - { - "name": "componentUnion", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines localClock", - { - "qualifiedName": "redefines localClock", - "name": "redefines localClock", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 97, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "coordinateFrame", - { - "qualifiedName": "coordinateFrame", - "name": "coordinateFrame", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 36, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "originPoint", - { - "qualifiedName": "originPoint", - "name": "originPoint", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 45, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subSpatialItems", - { - "qualifiedName": "subSpatialItems", - "name": "subSpatialItems", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 61, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subSpatialParts", - { - "qualifiedName": "subSpatialParts", - "name": "subSpatialParts", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "componentItems", - { - "qualifiedName": "componentItems", - "name": "componentItems", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 69, - "specializes": [], - "features": [ - { - "name": "redefines coordinateFrame", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines mRefs", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines transformation", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines source", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines coordinateFrame", - { - "qualifiedName": "redefines coordinateFrame", - "name": "redefines coordinateFrame", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 78, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines mRefs", - { - "qualifiedName": "redefines mRefs", - "name": "redefines mRefs", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 96, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines transformation", - { - "qualifiedName": "redefines transformation", - "name": "redefines transformation", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 80, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "cunionNum", - { - "qualifiedName": "cunionNum", - "name": "cunionNum", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 86, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "componentUnion", - { - "qualifiedName": "componentUnion", - "name": "componentUnion", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 87, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "componentParts", - { - "qualifiedName": "componentParts", - "name": "componentParts", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 96, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "PositionOf", - { - "qualifiedName": "PositionOf", - "name": "PositionOf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 101, - "specializes": [], - "features": [ - { - "name": "redefines mRef", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines 'frame'", - { - "qualifiedName": "redefines 'frame'", - "name": "redefines 'frame'", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 160, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines mRef", - { - "qualifiedName": "redefines mRef", - "name": "redefines mRef", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 485, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CurrentPositionOf", - { - "qualifiedName": "CurrentPositionOf", - "name": "CurrentPositionOf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 118, - "specializes": [], - "features": [ - { - "name": "redefines mRef", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DisplacementOf", - { - "qualifiedName": "DisplacementOf", - "name": "DisplacementOf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 133, - "specializes": [], - "features": [ - { - "name": "redefines mRef", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CurrentDisplacementOf", - { - "qualifiedName": "CurrentDisplacementOf", - "name": "CurrentDisplacementOf", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Geometry/SpatialItems.sysml", - "line": 151, - "specializes": [], - "features": [ - { - "name": "redefines mRef", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Image", - { - "qualifiedName": "Image", - "name": "Image", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 10, - "specializes": [], - "features": [ - { - "name": "content", - "kind": "attribute", - "isComposite": true - }, - { - "name": "encoding", - "kind": "attribute", - "isComposite": true - }, - { - "name": "location", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "content", - { - "qualifiedName": "content", - "name": "content", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 17, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "encoding", - { - "qualifiedName": "encoding", - "name": "encoding", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 25, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "location", - { - "qualifiedName": "location", - "name": "location", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 41, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Icon", - { - "qualifiedName": "Icon", - "name": "Icon", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 50, - "specializes": [], - "features": [ - { - "name": "fullImage", - "kind": "attribute", - "isComposite": true - }, - { - "name": "smallImage", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "fullImage", - { - "qualifiedName": "fullImage", - "name": "fullImage", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 60, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "smallImage", - { - "qualifiedName": "smallImage", - "name": "smallImage", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ImageMetadata.sysml", - "line": 68, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StatusKind", - { - "qualifiedName": "StatusKind", - "name": "StatusKind", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 10, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StatusInfo", - { - "qualifiedName": "StatusInfo", - "name": "StatusInfo", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 59, - "specializes": [], - "features": [ - { - "name": "originator", - "kind": "attribute", - "isComposite": true - }, - { - "name": "owner", - "kind": "attribute", - "isComposite": true - }, - { - "name": "status", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "originator", - { - "qualifiedName": "originator", - "name": "originator", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "owner", - { - "qualifiedName": "owner", - "name": "owner", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "status", - { - "qualifiedName": "status", - "name": "status", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 79, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "risk", - { - "qualifiedName": "risk", - "name": "risk", - "packagePath": "", - "kind": "item", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 86, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Rationale", - { - "qualifiedName": "Rationale", - "name": "Rationale", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 94, - "specializes": [], - "features": [ - { - "name": "text", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "text", - { - "qualifiedName": "text", - "name": "text", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 123, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Issue", - { - "qualifiedName": "Issue", - "name": "Issue", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 117, - "specializes": [], - "features": [ - { - "name": "text", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "refinement", - { - "qualifiedName": "refinement", - "name": "refinement", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ModelingMetadata.sysml", - "line": 131, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "measuresOfEffectiveness", - { - "qualifiedName": "measuresOfEffectiveness", - "name": "measuresOfEffectiveness", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml", - "line": 9, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "measuresOfPerformance", - { - "qualifiedName": "measuresOfPerformance", - "name": "measuresOfPerformance", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml", - "line": 13, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "moe", - { - "qualifiedName": "moe", - "name": "moe", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml", - "line": 17, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "mop", - { - "qualifiedName": "mop", - "name": "mop", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml", - "line": 28, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Level", - { - "qualifiedName": "Level", - "name": "Level", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 8, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "LevelEnum", - { - "qualifiedName": "LevelEnum", - "name": "LevelEnum", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 17, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RiskLevel", - { - "qualifiedName": "RiskLevel", - "name": "RiskLevel", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 28, - "specializes": [], - "features": [ - { - "name": "probability", - "kind": "attribute", - "isComposite": true - }, - { - "name": "impact", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "impact", - { - "qualifiedName": "impact", - "name": "impact", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 42, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RiskLevelEnum", - { - "qualifiedName": "RiskLevelEnum", - "name": "RiskLevelEnum", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 51, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Risk", - { - "qualifiedName": "Risk", - "name": "Risk", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 63, - "specializes": [], - "features": [ - { - "name": "totalRisk", - "kind": "attribute", - "isComposite": true - }, - { - "name": "technicalRisk", - "kind": "attribute", - "isComposite": true - }, - { - "name": "scheduleRisk", - "kind": "attribute", - "isComposite": true - }, - { - "name": "costRisk", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "totalRisk", - { - "qualifiedName": "totalRisk", - "name": "totalRisk", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 70, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "technicalRisk", - { - "qualifiedName": "technicalRisk", - "name": "technicalRisk", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 77, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "scheduleRisk", - { - "qualifiedName": "scheduleRisk", - "name": "scheduleRisk", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 84, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "costRisk", - { - "qualifiedName": "costRisk", - "name": "costRisk", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Metadata/RiskMetadata.sysml", - "line": 91, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Parse Error", - { - "qualifiedName": "Parse Error", - "name": "Parse Error", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/VectorCalculations.sysml", - "line": 0, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TensorMeasurementReference", - { - "qualifiedName": "TensorMeasurementReference", - "name": "TensorMeasurementReference", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 21, - "specializes": [], - "features": [ - { - "name": "isBound", - "kind": "attribute", - "isComposite": true - }, - { - "name": "order", - "kind": "attribute", - "isComposite": true - }, - { - "name": "mRefs", - "kind": "attribute", - "isComposite": true - }, - { - "name": "definitionalQuantityValues", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isBound", - { - "qualifiedName": "isBound", - "name": "isBound", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 56, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "order", - { - "qualifiedName": "order", - "name": "order", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 57, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines rank", - { - "qualifiedName": "redefines rank", - "name": "redefines rank", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 57, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "mRefs", - { - "qualifiedName": "mRefs", - "name": "mRefs", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 58, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "definitionalQuantityValues", - { - "qualifiedName": "definitionalQuantityValues", - "name": "definitionalQuantityValues", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 59, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "VectorMeasurementReference", - { - "qualifiedName": "VectorMeasurementReference", - "name": "VectorMeasurementReference", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 62, - "specializes": [], - "features": [ - { - "name": "redefines dimensions", - "kind": "attribute", - "isComposite": true - }, - { - "name": "isOrthogonal", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines dimensions", - { - "qualifiedName": "redefines dimensions", - "name": "redefines dimensions", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 233, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isOrthogonal", - { - "qualifiedName": "isOrthogonal", - "name": "isOrthogonal", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 78, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ScalarMeasurementReference", - { - "qualifiedName": "ScalarMeasurementReference", - "name": "ScalarMeasurementReference", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 81, - "specializes": [], - "features": [ - { - "name": "redefines dimensions", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines isOrthogonal", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines mRefs", - "kind": "attribute", - "isComposite": true - }, - { - "name": "quantityDimension", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines isOrthogonal", - { - "qualifiedName": "redefines isOrthogonal", - "name": "redefines isOrthogonal", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 95, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "quantityDimension", - { - "qualifiedName": "quantityDimension", - "name": "quantityDimension", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 97, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CoordinateFrame", - { - "qualifiedName": "CoordinateFrame", - "name": "CoordinateFrame", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 100, - "specializes": [], - "features": [ - { - "name": "transformation", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines target", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "transformation", - { - "qualifiedName": "transformation", - "name": "transformation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 111, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "3dCoordinateFrame", - { - "qualifiedName": "3dCoordinateFrame", - "name": "3dCoordinateFrame", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 116, - "specializes": [], - "features": [ - { - "name": "redefines dimensions", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CoordinateTransformation", - { - "qualifiedName": "CoordinateTransformation", - "name": "CoordinateTransformation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 125, - "specializes": [], - "features": [ - { - "name": "source", - "kind": "attribute", - "isComposite": true - }, - { - "name": "target", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "source", - { - "qualifiedName": "source", - "name": "source", - "packagePath": "", - "kind": "port", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 71, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "target", - { - "qualifiedName": "target", - "name": "target", - "packagePath": "", - "kind": "port", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CoordinateFramePlacement", - { - "qualifiedName": "CoordinateFramePlacement", - "name": "CoordinateFramePlacement", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 136, - "specializes": [], - "features": [ - { - "name": "origin", - "kind": "attribute", - "isComposite": true - }, - { - "name": "basisDirections", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "origin", - { - "qualifiedName": "origin", - "name": "origin", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 148, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "basisDirections", - { - "qualifiedName": "basisDirections", - "name": "basisDirections", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 149, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TranslationOrRotation", - { - "qualifiedName": "TranslationOrRotation", - "name": "TranslationOrRotation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 157, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Translation", - { - "qualifiedName": "Translation", - "name": "Translation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 164, - "specializes": [], - "features": [ - { - "name": "translationVector", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "translationVector", - { - "qualifiedName": "translationVector", - "name": "translationVector", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 232, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Rotation", - { - "qualifiedName": "Rotation", - "name": "Rotation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 175, - "specializes": [], - "features": [ - { - "name": "axisDirection", - "kind": "attribute", - "isComposite": true - }, - { - "name": "angle", - "kind": "attribute", - "isComposite": true - }, - { - "name": "isIntrinsic", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "axisDirection", - { - "qualifiedName": "axisDirection", - "name": "axisDirection", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 188, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "angle", - { - "qualifiedName": "angle", - "name": "angle", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 189, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines angularMeasure", - { - "qualifiedName": "redefines angularMeasure", - "name": "redefines angularMeasure", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 189, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isIntrinsic", - { - "qualifiedName": "isIntrinsic", - "name": "isIntrinsic", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 190, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TranslationRotationSequence", - { - "qualifiedName": "TranslationRotationSequence", - "name": "TranslationRotationSequence", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 193, - "specializes": [], - "features": [ - { - "name": "redefines elements", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "AffineTransformationMatrix3d", - { - "qualifiedName": "AffineTransformationMatrix3d", - "name": "AffineTransformationMatrix3d", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 208, - "specializes": [], - "features": [ - { - "name": "rotationMatrix", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines elements", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines dimensions", - "kind": "attribute", - "isComposite": true - }, - { - "name": "translationVector", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines dimensions", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines elements", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "rotationMatrix", - { - "qualifiedName": "rotationMatrix", - "name": "rotationMatrix", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 228, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "NullTransformation", - { - "qualifiedName": "NullTransformation", - "name": "NullTransformation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 242, - "specializes": [], - "features": [ - { - "name": "redefines rotationMatrix", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines elements", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines translationVector", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines elements", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines rotationMatrix", - { - "qualifiedName": "redefines rotationMatrix", - "name": "redefines rotationMatrix", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 248, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines translationVector", - { - "qualifiedName": "redefines translationVector", - "name": "redefines translationVector", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 251, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "nullTransformation", - { - "qualifiedName": "nullTransformation", - "name": "nullTransformation", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 256, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MeasurementUnit", - { - "qualifiedName": "MeasurementUnit", - "name": "MeasurementUnit", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 258, - "specializes": [], - "features": [ - { - "name": "redefines isBound", - "kind": "attribute", - "isComposite": true - }, - { - "name": "unitPowerFactors", - "kind": "attribute", - "isComposite": true - }, - { - "name": "unitConversion", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines isBound", - { - "qualifiedName": "redefines isBound", - "name": "redefines isBound", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 392, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "unitPowerFactors", - { - "qualifiedName": "unitPowerFactors", - "name": "unitPowerFactors", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 273, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "unitConversion", - { - "qualifiedName": "unitConversion", - "name": "unitConversion", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 274, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SimpleUnit", - { - "qualifiedName": "SimpleUnit", - "name": "SimpleUnit", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 282, - "specializes": [], - "features": [ - { - "name": "simpleUnitSelf", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines unitPowerFactors", - "kind": "attribute", - "isComposite": true - }, - { - "name": "unit", - "kind": "attribute", - "isComposite": true - }, - { - "name": "exponent", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "simpleUnitSelf", - { - "qualifiedName": "simpleUnitSelf", - "name": "simpleUnitSelf", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 288, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines unitPowerFactors", - { - "qualifiedName": "redefines unitPowerFactors", - "name": "redefines unitPowerFactors", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 477, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "unit", - { - "qualifiedName": "unit", - "name": "unit", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 372, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines unit", - { - "qualifiedName": "redefines unit", - "name": "redefines unit", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 290, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "exponent", - { - "qualifiedName": "exponent", - "name": "exponent", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 426, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines exponent", - { - "qualifiedName": "redefines exponent", - "name": "redefines exponent", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 291, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DerivedUnit", - { - "qualifiedName": "DerivedUnit", - "name": "DerivedUnit", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 296, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "UnitPowerFactor", - { - "qualifiedName": "UnitPowerFactor", - "name": "UnitPowerFactor", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 306, - "specializes": [], - "features": [ - { - "name": "unit", - "kind": "attribute", - "isComposite": true - }, - { - "name": "exponent", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "UnitConversion", - { - "qualifiedName": "UnitConversion", - "name": "UnitConversion", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 317, - "specializes": [], - "features": [ - { - "name": "referenceUnit", - "kind": "attribute", - "isComposite": true - }, - { - "name": "conversionFactor", - "kind": "attribute", - "isComposite": true - }, - { - "name": "isExact", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "referenceUnit", - { - "qualifiedName": "referenceUnit", - "name": "referenceUnit", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 325, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "conversionFactor", - { - "qualifiedName": "conversionFactor", - "name": "conversionFactor", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 360, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isExact", - { - "qualifiedName": "isExact", - "name": "isExact", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 327, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConversionByConvention", - { - "qualifiedName": "ConversionByConvention", - "name": "ConversionByConvention", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 330, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConversionByPrefix", - { - "qualifiedName": "ConversionByPrefix", - "name": "ConversionByPrefix", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 337, - "specializes": [], - "features": [ - { - "name": "prefix", - "kind": "attribute", - "isComposite": true - }, - { - "name": "conversionFactor", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "prefix", - { - "qualifiedName": "prefix", - "name": "prefix", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 348, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines conversionFactor", - { - "qualifiedName": "redefines conversionFactor", - "name": "redefines conversionFactor", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 349, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "UnitPrefix", - { - "qualifiedName": "UnitPrefix", - "name": "UnitPrefix", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 352, - "specializes": [], - "features": [ - { - "name": "longName", - "kind": "attribute", - "isComposite": true - }, - { - "name": "symbol", - "kind": "attribute", - "isComposite": true - }, - { - "name": "conversionFactor", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "longName", - { - "qualifiedName": "longName", - "name": "longName", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 511, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "symbol", - { - "qualifiedName": "symbol", - "name": "symbol", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 359, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MeasurementScale", - { - "qualifiedName": "MeasurementScale", - "name": "MeasurementScale", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 364, - "specializes": [], - "features": [ - { - "name": "unit", - "kind": "attribute", - "isComposite": true - }, - { - "name": "quantityValueMapping", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "quantityValueMapping", - { - "qualifiedName": "quantityValueMapping", - "name": "quantityValueMapping", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 373, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "OrdinalScale", - { - "qualifiedName": "OrdinalScale", - "name": "OrdinalScale", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 376, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "IntervalScale", - { - "qualifiedName": "IntervalScale", - "name": "IntervalScale", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 383, - "specializes": [], - "features": [ - { - "name": "redefines isBound", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CyclicRatioScale", - { - "qualifiedName": "CyclicRatioScale", - "name": "CyclicRatioScale", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 395, - "specializes": [], - "features": [ - { - "name": "modulus", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "modulus", - { - "qualifiedName": "modulus", - "name": "modulus", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 405, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "LogarithmicScale", - { - "qualifiedName": "LogarithmicScale", - "name": "LogarithmicScale", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 408, - "specializes": [], - "features": [ - { - "name": "logarithmBase", - "kind": "attribute", - "isComposite": true - }, - { - "name": "factor", - "kind": "attribute", - "isComposite": true - }, - { - "name": "exponent", - "kind": "attribute", - "isComposite": true - }, - { - "name": "referenceQuantity", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "logarithmBase", - { - "qualifiedName": "logarithmBase", - "name": "logarithmBase", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 424, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "factor", - { - "qualifiedName": "factor", - "name": "factor", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 425, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "referenceQuantity", - { - "qualifiedName": "referenceQuantity", - "name": "referenceQuantity", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 427, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "QuantityValueMapping", - { - "qualifiedName": "QuantityValueMapping", - "name": "QuantityValueMapping", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 430, - "specializes": [], - "features": [ - { - "name": "mappedQuantityValue", - "kind": "attribute", - "isComposite": true - }, - { - "name": "referenceQuantityValue", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "mappedQuantityValue", - { - "qualifiedName": "mappedQuantityValue", - "name": "mappedQuantityValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 447, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "referenceQuantityValue", - { - "qualifiedName": "referenceQuantityValue", - "name": "referenceQuantityValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 448, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DefinitionalQuantityValue", - { - "qualifiedName": "DefinitionalQuantityValue", - "name": "DefinitionalQuantityValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 451, - "specializes": [], - "features": [ - { - "name": "num", - "kind": "attribute", - "isComposite": true - }, - { - "name": "definition", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "num", - { - "qualifiedName": "num", - "name": "num", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 467, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "definition", - { - "qualifiedName": "definition", - "name": "definition", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 468, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DimensionOneUnit", - { - "qualifiedName": "DimensionOneUnit", - "name": "DimensionOneUnit", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 471, - "specializes": [], - "features": [ - { - "name": "redefines unitPowerFactors", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DimensionOneValue", - { - "qualifiedName": "DimensionOneValue", - "name": "DimensionOneValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 479, - "specializes": [], - "features": [ - { - "name": "redefines num", - "kind": "attribute", - "isComposite": true - }, - { - "name": "redefines mRef", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "dimensionOneQuantities", - { - "qualifiedName": "dimensionOneQuantities", - "name": "dimensionOneQuantities", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 487, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "one", - { - "qualifiedName": "one", - "name": "one", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 63, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "CountValue", - { - "qualifiedName": "CountValue", - "name": "CountValue", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 491, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "countQuantities", - { - "qualifiedName": "countQuantities", - "name": "countQuantities", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 497, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SystemOfUnits", - { - "qualifiedName": "SystemOfUnits", - "name": "SystemOfUnits", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 499, - "specializes": [], - "features": [ - { - "name": "longName", - "kind": "attribute", - "isComposite": true - }, - { - "name": "systemOfQuantities", - "kind": "attribute", - "isComposite": true - }, - { - "name": "baseUnits", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "systemOfQuantities", - { - "qualifiedName": "systemOfQuantities", - "name": "systemOfQuantities", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 512, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "baseUnits", - { - "qualifiedName": "baseUnits", - "name": "baseUnits", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 513, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "VerifyUnitPowerFactors", - { - "qualifiedName": "VerifyUnitPowerFactors", - "name": "VerifyUnitPowerFactors", - "packagePath": "", - "kind": "constraint def", - "sourceFile": "Domain Libraries/Quantities and Units/MeasurementReferences.sysml", - "line": 516, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "[", - { - "qualifiedName": "[", - "name": "[", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 11, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isZero", - { - "qualifiedName": "isZero", - "name": "isZero", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 17, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isUnit", - { - "qualifiedName": "isUnit", - "name": "isUnit", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "abs", - { - "qualifiedName": "abs", - "name": "abs", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 26, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "+", - { - "qualifiedName": "+", - "name": "+", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 28, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "-", - { - "qualifiedName": "-", - "name": "-", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 29, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "*", - { - "qualifiedName": "*", - "name": "*", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 30, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "/", - { - "qualifiedName": "/", - "name": "/", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 31, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "**", - { - "qualifiedName": "**", - "name": "**", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 32, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "^", - { - "qualifiedName": "^", - "name": "^", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 33, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "<", - { - "qualifiedName": "<", - "name": "<", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - ">", - { - "qualifiedName": ">", - "name": ">", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 36, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "<=", - { - "qualifiedName": "<=", - "name": "<=", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 37, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - ">=", - { - "qualifiedName": ">=", - "name": ">=", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 38, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "max", - { - "qualifiedName": "max", - "name": "max", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 40, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "min", - { - "qualifiedName": "min", - "name": "min", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 41, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "==", - { - "qualifiedName": "==", - "name": "==", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 43, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "sqrt", - { - "qualifiedName": "sqrt", - "name": "sqrt", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 45, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "floor", - { - "qualifiedName": "floor", - "name": "floor", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 47, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "round", - { - "qualifiedName": "round", - "name": "round", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 48, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ToString", - { - "qualifiedName": "ToString", - "name": "ToString", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 50, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ToInteger", - { - "qualifiedName": "ToInteger", - "name": "ToInteger", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 51, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ToRational", - { - "qualifiedName": "ToRational", - "name": "ToRational", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 52, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ToReal", - { - "qualifiedName": "ToReal", - "name": "ToReal", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 53, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ToDimensionOneValue", - { - "qualifiedName": "ToDimensionOneValue", - "name": "ToDimensionOneValue", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 54, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "sum", - { - "qualifiedName": "sum", - "name": "sum", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 56, - "specializes": [], - "features": [ - { - "name": "zero", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "zero", - { - "qualifiedName": "zero", - "name": "zero", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 57, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "product", - { - "qualifiedName": "product", - "name": "product", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 62, - "specializes": [], - "features": [ - { - "name": "one", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConvertQuantity", - { - "qualifiedName": "ConvertQuantity", - "name": "ConvertQuantity", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Quantities and Units/QuantityCalculations.sysml", - "line": 68, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "originalRequirements", - { - "qualifiedName": "originalRequirements", - "name": "originalRequirements", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 9, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "derivedRequirements", - { - "qualifiedName": "derivedRequirements", - "name": "derivedRequirements", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Derivation", - { - "qualifiedName": "Derivation", - "name": "Derivation", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 16, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "originalRequirement", - { - "qualifiedName": "originalRequirement", - "name": "originalRequirement", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines originalRequirements", - { - "qualifiedName": "redefines originalRequirements", - "name": "redefines originalRequirements", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines derivedRequirements", - { - "qualifiedName": "redefines derivedRequirements", - "name": "redefines derivedRequirements", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 38, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "derivations", - { - "qualifiedName": "derivations", - "name": "derivations", - "packagePath": "", - "kind": "connection", - "sourceFile": "Domain Libraries/Requirement Derivation/DerivationConnections.sysml", - "line": 59, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "original", - { - "qualifiedName": "original", - "name": "original", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Requirement Derivation/RequirementDerivation.sysml", - "line": 6, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "derive", - { - "qualifiedName": "derive", - "name": "derive", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Requirement Derivation/RequirementDerivation.sysml", - "line": 17, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "derivation", - { - "qualifiedName": "derivation", - "name": "derivation", - "packagePath": "", - "kind": "part", - "sourceFile": "Domain Libraries/Requirement Derivation/RequirementDerivation.sysml", - "line": 28, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "unnamed", - { - "qualifiedName": "unnamed", - "name": "unnamed", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 63, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "self", - { - "qualifiedName": "self", - "name": "self", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 19, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines self", - { - "qualifiedName": "redefines self", - "name": "redefines self", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 69, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "incomingTransfers", - { - "qualifiedName": "incomingTransfers", - "name": "incomingTransfers", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 40, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines incomingTransfers", - { - "qualifiedName": "redefines incomingTransfers", - "name": "redefines incomingTransfers", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 40, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "start", - { - "qualifiedName": "start", - "name": "start", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 20, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines startShot", - { - "qualifiedName": "redefines startShot", - "name": "redefines startShot", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 32, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "done", - { - "qualifiedName": "done", - "name": "done", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 27, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines endShot", - { - "qualifiedName": "redefines endShot", - "name": "redefines endShot", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 33, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subactions", - { - "qualifiedName": "subactions", - "name": "subactions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 56, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines this", - { - "qualifiedName": "redefines this", - "name": "redefines this", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 47, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "sendSubactions", - { - "qualifiedName": "sendSubactions", - "name": "sendSubactions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 71, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "acceptSubactions", - { - "qualifiedName": "acceptSubactions", - "name": "acceptSubactions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 78, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "terminateSubactions", - { - "qualifiedName": "terminateSubactions", - "name": "terminateSubactions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 85, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "controls", - { - "qualifiedName": "controls", - "name": "controls", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 92, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "merges", - { - "qualifiedName": "merges", - "name": "merges", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 99, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "decisions", - { - "qualifiedName": "decisions", - "name": "decisions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 106, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "joins", - { - "qualifiedName": "joins", - "name": "joins", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 113, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "forks", - { - "qualifiedName": "forks", - "name": "forks", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 120, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "transitions", - { - "qualifiedName": "transitions", - "name": "transitions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 127, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "decisionTransitions", - { - "qualifiedName": "decisionTransitions", - "name": "decisionTransitions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 134, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "assignments", - { - "qualifiedName": "assignments", - "name": "assignments", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 141, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ifSubactions", - { - "qualifiedName": "ifSubactions", - "name": "ifSubactions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 150, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "loops", - { - "qualifiedName": "loops", - "name": "loops", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 157, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "whileLoops", - { - "qualifiedName": "whileLoops", - "name": "whileLoops", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 164, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "forLoops", - { - "qualifiedName": "forLoops", - "name": "forLoops", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 171, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "s", - { - "qualifiedName": "s", - "name": "s", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 32, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "actions", - { - "qualifiedName": "actions", - "name": "actions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 179, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SendAction", - { - "qualifiedName": "SendAction", - "name": "SendAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 186, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines payload", - { - "qualifiedName": "redefines payload", - "name": "redefines payload", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 45, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines sentTransfer", - { - "qualifiedName": "redefines sentTransfer", - "name": "redefines sentTransfer", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 194, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "sendActions", - { - "qualifiedName": "sendActions", - "name": "sendActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 199, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "AcceptMessageAction", - { - "qualifiedName": "AcceptMessageAction", - "name": "AcceptMessageAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 206, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines acceptedTransfer", - { - "qualifiedName": "redefines acceptedTransfer", - "name": "redefines acceptedTransfer", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 213, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "AcceptAction", - { - "qualifiedName": "AcceptAction", - "name": "AcceptAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 218, - "specializes": [], - "features": [ - { - "name": "aState", - "kind": "state", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines acceptedMessage", - { - "qualifiedName": "redefines acceptedMessage", - "name": "redefines acceptedMessage", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 225, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "aState", - { - "qualifiedName": "aState", - "name": "aState", - "packagePath": "", - "kind": "state", - "sourceFile": "Systems Library/Actions.sysml", - "line": 226, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "aTransition", - { - "qualifiedName": "aTransition", - "name": "aTransition", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 227, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "payload = aState.aTransition.apayload", - { - "qualifiedName": "payload = aState.aTransition.apayload", - "name": "payload = aState.aTransition.apayload", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 229, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "acceptActions", - { - "qualifiedName": "acceptActions", - "name": "acceptActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 232, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TerminateAction", - { - "qualifiedName": "TerminateAction", - "name": "TerminateAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 239, - "specializes": [], - "features": [ - { - "name": "terminateOccurrence", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "terminatedOccurrence", - { - "qualifiedName": "terminatedOccurrence", - "name": "terminatedOccurrence", - "packagePath": "", - "kind": "occurrence", - "sourceFile": "Systems Library/Actions.sysml", - "line": 265, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "terminateOccurrence", - { - "qualifiedName": "terminateOccurrence", - "name": "terminateOccurrence", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 254, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "terminateActions", - { - "qualifiedName": "terminateActions", - "name": "terminateActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 259, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ControlAction", - { - "qualifiedName": "ControlAction", - "name": "ControlAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 274, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "start = done", - { - "qualifiedName": "start = done", - "name": "start = done", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 280, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MergeAction", - { - "qualifiedName": "MergeAction", - "name": "MergeAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 288, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DecisionAction", - { - "qualifiedName": "DecisionAction", - "name": "DecisionAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 298, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "JoinAction", - { - "qualifiedName": "JoinAction", - "name": "JoinAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 310, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ForkAction", - { - "qualifiedName": "ForkAction", - "name": "ForkAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 320, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TransitionAction", - { - "qualifiedName": "TransitionAction", - "name": "TransitionAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 330, - "specializes": [], - "features": [ - { - "name": "accepter", - "kind": "action", - "isComposite": true - }, - { - "name": "effect", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines transitionLinkSource", - { - "qualifiedName": "redefines transitionLinkSource", - "name": "redefines transitionLinkSource", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 87, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines trigger", - { - "qualifiedName": "redefines trigger", - "name": "redefines trigger", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 338, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines triggerTarget", - { - "qualifiedName": "redefines triggerTarget", - "name": "redefines triggerTarget", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 342, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "accepter", - { - "qualifiedName": "accepter", - "name": "accepter", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 344, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines 'accept'", - { - "qualifiedName": "redefines 'accept'", - "name": "redefines 'accept'", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 344, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "receiver = accepter.receiver", - { - "qualifiedName": "receiver = accepter.receiver", - "name": "receiver = accepter.receiver", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 93, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "acceptedMessage = accepter.acceptedMessage", - { - "qualifiedName": "acceptedMessage = accepter.acceptedMessage", - "name": "acceptedMessage = accepter.acceptedMessage", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 347, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines effect", - { - "qualifiedName": "redefines effect", - "name": "redefines effect", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 361, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DecisionTransitionAction", - { - "qualifiedName": "DecisionTransitionAction", - "name": "DecisionTransitionAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 352, - "specializes": [], - "features": [ - { - "name": "redefines accepter", - "kind": "action", - "isComposite": true - }, - { - "name": "redefines effect", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines accepter", - { - "qualifiedName": "redefines accepter", - "name": "redefines accepter", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 360, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "transitionActions", - { - "qualifiedName": "transitionActions", - "name": "transitionActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 364, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "AssignmentAction", - { - "qualifiedName": "AssignmentAction", - "name": "AssignmentAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 371, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "assignmentActions", - { - "qualifiedName": "assignmentActions", - "name": "assignmentActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 383, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "IfThenAction", - { - "qualifiedName": "IfThenAction", - "name": "IfThenAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 398, - "specializes": [], - "features": [ - { - "name": "thenClause", - "kind": "action", - "isComposite": true - }, - { - "name": "is", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "thenClause", - { - "qualifiedName": "thenClause", - "name": "thenClause", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 417, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "is", - { - "qualifiedName": "is", - "name": "is", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 398, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "IfThenElseAction", - { - "qualifiedName": "IfThenElseAction", - "name": "IfThenElseAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 409, - "specializes": [], - "features": [ - { - "name": "thenClause", - "kind": "action", - "isComposite": true - }, - { - "name": "elseClause", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "elseClause", - { - "qualifiedName": "elseClause", - "name": "elseClause", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 418, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ifThenActions", - { - "qualifiedName": "ifThenActions", - "name": "ifThenActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 421, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ifThenElseActions", - { - "qualifiedName": "ifThenElseActions", - "name": "ifThenElseActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 428, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "LoopAction", - { - "qualifiedName": "LoopAction", - "name": "LoopAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 435, - "specializes": [], - "features": [ - { - "name": "body", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "body", - { - "qualifiedName": "body", - "name": "body", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 506, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "WhileLoopAction", - { - "qualifiedName": "WhileLoopAction", - "name": "WhileLoopAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 451, - "specializes": [], - "features": [ - { - "name": "body", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ForLoopAction", - { - "qualifiedName": "ForLoopAction", - "name": "ForLoopAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 484, - "specializes": [], - "features": [ - { - "name": "body", - "kind": "action", - "isComposite": true - }, - { - "name": "index", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "private" - } - ], - [ - "perform: body", - { - "qualifiedName": "perform: body", - "name": "perform: body", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Actions.sysml", - "line": 526, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "loopActions", - { - "qualifiedName": "loopActions", - "name": "loopActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 531, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "whileLoopActions", - { - "qualifiedName": "whileLoopActions", - "name": "whileLoopActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 538, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "forLoopActions", - { - "qualifiedName": "forLoopActions", - "name": "forLoopActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Actions.sysml", - "line": 545, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Allocation", - { - "qualifiedName": "Allocation", - "name": "Allocation", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Allocations.sysml", - "line": 10, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "allocations", - { - "qualifiedName": "allocations", - "name": "allocations", - "packagePath": "", - "kind": "allocation", - "sourceFile": "Systems Library/Allocations.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "AnalysisCase", - { - "qualifiedName": "AnalysisCase", - "name": "AnalysisCase", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/AnalysisCases.sysml", - "line": 13, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subj", - { - "qualifiedName": "subj", - "name": "subj", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 60, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines subj", - { - "qualifiedName": "redefines subj", - "name": "redefines subj", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 60, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subAnalysisCases", - { - "qualifiedName": "subAnalysisCases", - "name": "subAnalysisCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/AnalysisCases.sysml", - "line": 23, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "analysisCases", - { - "qualifiedName": "analysisCases", - "name": "analysisCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/AnalysisCases.sysml", - "line": 31, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Calculation", - { - "qualifiedName": "Calculation", - "name": "Calculation", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Calculations.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subcalculations", - { - "qualifiedName": "subcalculations", - "name": "subcalculations", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Calculations.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "calculations", - { - "qualifiedName": "calculations", - "name": "calculations", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Calculations.sysml", - "line": 30, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "actors", - { - "qualifiedName": "actors", - "name": "actors", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 64, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "obj", - { - "qualifiedName": "obj", - "name": "obj", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 23, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "BinaryConnection", - { - "qualifiedName": "BinaryConnection", - "name": "BinaryConnection", - "packagePath": "", - "kind": "connection", - "sourceFile": "Systems Library/Connections.sysml", - "line": 34, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "connections", - { - "qualifiedName": "connections", - "name": "connections", - "packagePath": "", - "kind": "connection", - "sourceFile": "Systems Library/Connections.sysml", - "line": 46, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "binaryConnections", - { - "qualifiedName": "binaryConnections", - "name": "binaryConnections", - "packagePath": "", - "kind": "connection", - "sourceFile": "Systems Library/Connections.sysml", - "line": 53, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConstraintCheck", - { - "qualifiedName": "ConstraintCheck", - "name": "ConstraintCheck", - "packagePath": "", - "kind": "constraint def", - "sourceFile": "Systems Library/Constraints.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "constraintChecks", - { - "qualifiedName": "constraintChecks", - "name": "constraintChecks", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Systems Library/Constraints.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "assertedConstraintChecks", - { - "qualifiedName": "assertedConstraintChecks", - "name": "assertedConstraintChecks", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Systems Library/Constraints.sysml", - "line": 29, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "negatedConstraintChecks", - { - "qualifiedName": "negatedConstraintChecks", - "name": "negatedConstraintChecks", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Systems Library/Constraints.sysml", - "line": 36, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MessageAction", - { - "qualifiedName": "MessageAction", - "name": "MessageAction", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Message", - { - "qualifiedName": "Message", - "name": "Message", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 37, - "specializes": [], - "features": [ - { - "name": "thisConnection", - "kind": "action", - "isComposite": true - }, - { - "name": "seBeforeNum", - "kind": "attribute", - "isComposite": true - }, - { - "name": "teAfterNum", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "thisConnection", - { - "qualifiedName": "thisConnection", - "name": "thisConnection", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Flows.sysml", - "line": 47, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "sourceEvent → [1]source", - { - "qualifiedName": "sourceEvent → [1]source", - "name": "sourceEvent → [1]source", - "packagePath": "", - "kind": "connection", - "sourceFile": "Systems Library/Flows.sysml", - "line": 64, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: sourceEvent", - { - "qualifiedName": "end: sourceEvent", - "name": "end: sourceEvent", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 64, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: source", - { - "qualifiedName": "end: source", - "name": "end: source", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 64, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "targetEvent → [1]target", - { - "qualifiedName": "targetEvent → [1]target", - "name": "targetEvent → [1]target", - "packagePath": "", - "kind": "connection", - "sourceFile": "Systems Library/Flows.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: targetEvent", - { - "qualifiedName": "end: targetEvent", - "name": "end: targetEvent", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "end: target", - { - "qualifiedName": "end: target", - "name": "end: target", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "seBeforeNum", - { - "qualifiedName": "seBeforeNum", - "name": "seBeforeNum", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/Flows.sysml", - "line": 67, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "teAfterNum", - { - "qualifiedName": "teAfterNum", - "name": "teAfterNum", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/Flows.sysml", - "line": 68, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "SuccessionFlow", - { - "qualifiedName": "SuccessionFlow", - "name": "SuccessionFlow", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 85, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "messages", - { - "qualifiedName": "messages", - "name": "messages", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 98, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subsets messages", - { - "qualifiedName": "subsets messages", - "name": "subsets messages", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 105, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subsets flows", - { - "qualifiedName": "subsets flows", - "name": "subsets flows", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Flows.sysml", - "line": 116, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "excludingOnce", - { - "qualifiedName": "excludingOnce", - "name": "excludingOnce", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 19, - "specializes": [], - "features": [ - { - "name": "position", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "position", - { - "qualifiedName": "position", - "name": "position", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 28, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines participant", - { - "qualifiedName": "redefines participant", - "name": "redefines participant", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 69, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "BinaryInterface", - { - "qualifiedName": "BinaryInterface", - "name": "BinaryInterface", - "packagePath": "", - "kind": "interface", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 57, - "specializes": [], - "features": [ - { - "name": "redefines participant", - "kind": "port", - "isComposite": true - }, - { - "name": "source", - "kind": "port", - "isComposite": true - }, - { - "name": "target", - "kind": "port", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "interfaces", - { - "qualifiedName": "interfaces", - "name": "interfaces", - "packagePath": "", - "kind": "interface", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 75, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "binaryInterfaces", - { - "qualifiedName": "binaryInterfaces", - "name": "binaryInterfaces", - "packagePath": "", - "kind": "interface", - "sourceFile": "Systems Library/Interfaces.sysml", - "line": 82, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "shape", - { - "qualifiedName": "shape", - "name": "shape", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines spaceBoundary", - { - "qualifiedName": "redefines spaceBoundary", - "name": "redefines spaceBoundary", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "envelopingShapes", - { - "qualifiedName": "envelopingShapes", - "name": "envelopingShapes", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 42, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "envelopedItem", - { - "qualifiedName": "envelopedItem", - "name": "envelopedItem", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 49, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines that", - { - "qualifiedName": "redefines that", - "name": "redefines that", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 49, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "envelopingItem", - { - "qualifiedName": "envelopingItem", - "name": "envelopingItem", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 62, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "boundingShapes", - { - "qualifiedName": "boundingShapes", - "name": "boundingShapes", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 75, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "boundingShape", - { - "qualifiedName": "boundingShape", - "name": "boundingShape", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 82, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "face", - { - "qualifiedName": "face", - "name": "face", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 85, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "inter", - { - "qualifiedName": "inter", - "name": "inter", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 91, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "edge", - { - "qualifiedName": "edge", - "name": "edge", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 90, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "voids", - { - "qualifiedName": "voids", - "name": "voids", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 97, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines innerSpaceOccurrences", - { - "qualifiedName": "redefines innerSpaceOccurrences", - "name": "redefines innerSpaceOccurrences", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 97, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isSolid", - { - "qualifiedName": "isSolid", - "name": "isSolid", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/Items.sysml", - "line": 104, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subitems", - { - "qualifiedName": "subitems", - "name": "subitems", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 111, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines incomingTransferSort", - { - "qualifiedName": "redefines incomingTransferSort", - "name": "redefines incomingTransferSort", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 117, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subparts", - { - "qualifiedName": "subparts", - "name": "subparts", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 120, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "checkedConstraints", - { - "qualifiedName": "checkedConstraints", - "name": "checkedConstraints", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Systems Library/Items.sysml", - "line": 127, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Touches", - { - "qualifiedName": "Touches", - "name": "Touches", - "packagePath": "", - "kind": "connection", - "sourceFile": "Systems Library/Items.sysml", - "line": 135, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "touchedItemToo", - { - "qualifiedName": "touchedItemToo", - "name": "touchedItemToo", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 141, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines separateSpaceToo", - { - "qualifiedName": "redefines separateSpaceToo", - "name": "redefines separateSpaceToo", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 141, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines thisOccurrence", - { - "qualifiedName": "redefines thisOccurrence", - "name": "redefines thisOccurrence", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 141, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "touchedItem", - { - "qualifiedName": "touchedItem", - "name": "touchedItem", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 142, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines separateSpace", - { - "qualifiedName": "redefines separateSpace", - "name": "redefines separateSpace", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 142, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines thatOccurrence", - { - "qualifiedName": "redefines thatOccurrence", - "name": "redefines thatOccurrence", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Items.sysml", - "line": 142, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "items", - { - "qualifiedName": "items", - "name": "items", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Items.sysml", - "line": 145, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "MetadataItem", - { - "qualifiedName": "MetadataItem", - "name": "MetadataItem", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Metadata.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "metadataItems", - { - "qualifiedName": "metadataItems", - "name": "metadataItems", - "packagePath": "", - "kind": "item", - "sourceFile": "Systems Library/Metadata.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines start", - { - "qualifiedName": "redefines start", - "name": "redefines start", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 20, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines done", - { - "qualifiedName": "redefines done", - "name": "redefines done", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 27, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ownedPorts", - { - "qualifiedName": "ownedPorts", - "name": "ownedPorts", - "packagePath": "", - "kind": "port", - "sourceFile": "Systems Library/Parts.sysml", - "line": 30, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "performedActions", - { - "qualifiedName": "performedActions", - "name": "performedActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Parts.sysml", - "line": 37, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ownedActions", - { - "qualifiedName": "ownedActions", - "name": "ownedActions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/Parts.sysml", - "line": 44, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "this", - { - "qualifiedName": "this", - "name": "this", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Parts.sysml", - "line": 50, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "exhibitedStates", - { - "qualifiedName": "exhibitedStates", - "name": "exhibitedStates", - "packagePath": "", - "kind": "state", - "sourceFile": "Systems Library/Parts.sysml", - "line": 58, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ownedStates", - { - "qualifiedName": "ownedStates", - "name": "ownedStates", - "packagePath": "", - "kind": "state", - "sourceFile": "Systems Library/Parts.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "parts", - { - "qualifiedName": "parts", - "name": "parts", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Parts.sysml", - "line": 73, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subports", - { - "qualifiedName": "subports", - "name": "subports", - "packagePath": "", - "kind": "port", - "sourceFile": "Systems Library/Ports.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "interfacingPorts", - { - "qualifiedName": "interfacingPorts", - "name": "interfacingPorts", - "packagePath": "", - "kind": "port", - "sourceFile": "Systems Library/Ports.sysml", - "line": 29, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines outgoingTransfersFromSelf", - { - "qualifiedName": "redefines outgoingTransfersFromSelf", - "name": "redefines outgoingTransfersFromSelf", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Ports.sysml", - "line": 36, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ports", - { - "qualifiedName": "ports", - "name": "ports", - "packagePath": "", - "kind": "port", - "sourceFile": "Systems Library/Ports.sysml", - "line": 47, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RequirementConstraintCheck", - { - "qualifiedName": "RequirementConstraintCheck", - "name": "RequirementConstraintCheck", - "packagePath": "", - "kind": "constraint def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 18, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "assumptions", - { - "qualifiedName": "assumptions", - "name": "assumptions", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 86, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "constraints", - { - "qualifiedName": "constraints", - "name": "constraints", - "packagePath": "", - "kind": "constraint", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 87, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "RequirementCheck", - { - "qualifiedName": "RequirementCheck", - "name": "RequirementCheck", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 48, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "stakeholders", - { - "qualifiedName": "stakeholders", - "name": "stakeholders", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 73, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Note: assumptions and constraints are...", - { - "qualifiedName": "Note: assumptions and constraints are...", - "name": "Note: assumptions and constraints are...", - "packagePath": "", - "kind": "comment", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 82, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines assumptions", - { - "qualifiedName": "redefines assumptions", - "name": "redefines assumptions", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 86, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines constraints", - { - "qualifiedName": "redefines constraints", - "name": "redefines constraints", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 87, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subrequirements", - { - "qualifiedName": "subrequirements", - "name": "subrequirements", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 89, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "concerns", - { - "qualifiedName": "concerns", - "name": "concerns", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 96, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "FunctionalRequirementCheck", - { - "qualifiedName": "FunctionalRequirementCheck", - "name": "FunctionalRequirementCheck", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 105, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "(anonymous subject)", - { - "qualifiedName": "(anonymous subject)", - "name": "(anonymous subject)", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 151, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "InterfaceRequirementCheck", - { - "qualifiedName": "InterfaceRequirementCheck", - "name": "InterfaceRequirementCheck", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 114, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "PerformanceRequirementCheck", - { - "qualifiedName": "PerformanceRequirementCheck", - "name": "PerformanceRequirementCheck", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 124, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "PhysicalRequirementCheck", - { - "qualifiedName": "PhysicalRequirementCheck", - "name": "PhysicalRequirementCheck", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 134, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "DesignConstraintCheck", - { - "qualifiedName": "DesignConstraintCheck", - "name": "DesignConstraintCheck", - "packagePath": "", - "kind": "requirement def", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 144, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ConcernCheck", - { - "qualifiedName": "ConcernCheck", - "name": "ConcernCheck", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 154, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "requirementChecks", - { - "qualifiedName": "requirementChecks", - "name": "requirementChecks", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 165, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "satisfiedRequirementChecks", - { - "qualifiedName": "satisfiedRequirementChecks", - "name": "satisfiedRequirementChecks", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 172, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "notSatisfiedRequirementChecks", - { - "qualifiedName": "notSatisfiedRequirementChecks", - "name": "notSatisfiedRequirementChecks", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 179, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "concernChecks", - { - "qualifiedName": "concernChecks", - "name": "concernChecks", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Requirements.sysml", - "line": 186, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "gv", - { - "qualifiedName": "gv", - "name": "gv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 6, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "iv", - { - "qualifiedName": "iv", - "name": "iv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 23, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "afv", - { - "qualifiedName": "afv", - "name": "afv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 32, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "stv", - { - "qualifiedName": "stv", - "name": "stv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 52, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "sv", - { - "qualifiedName": "sv", - "name": "sv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 63, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "gev", - { - "qualifiedName": "gev", - "name": "gev", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 80, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "grv", - { - "qualifiedName": "grv", - "name": "grv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 102, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "bv", - { - "qualifiedName": "bv", - "name": "bv", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/StandardViewDefinitions.sysml", - "line": 113, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateAction", - { - "qualifiedName": "StateAction", - "name": "StateAction", - "packagePath": "", - "kind": "state", - "sourceFile": "Systems Library/States.sysml", - "line": 18, - "specializes": [], - "features": [ - { - "name": "redefines isTriggerDuring", - "kind": "attribute", - "isComposite": true - }, - { - "name": "self", - "kind": "state", - "isComposite": true - }, - { - "name": "start", - "kind": "state", - "isComposite": true - }, - { - "name": "done", - "kind": "state", - "isComposite": true - }, - { - "name": "redefines subactions", - "kind": "action", - "isComposite": true - }, - { - "name": "substates", - "kind": "action", - "isComposite": true - }, - { - "name": "exclusiveStates", - "kind": "state", - "isComposite": true - }, - { - "name": "stateTransitions", - "kind": "action", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "entryAction", - { - "qualifiedName": "entryAction", - "name": "entryAction", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 25, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines 'entry'", - { - "qualifiedName": "redefines 'entry'", - "name": "redefines 'entry'", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 25, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "doAction", - { - "qualifiedName": "doAction", - "name": "doAction", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 26, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines 'do'", - { - "qualifiedName": "redefines 'do'", - "name": "redefines 'do'", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 26, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "exitAction", - { - "qualifiedName": "exitAction", - "name": "exitAction", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 27, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines 'exit'", - { - "qualifiedName": "redefines 'exit'", - "name": "redefines 'exit'", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 27, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines isTriggerDuring", - { - "qualifiedName": "redefines isTriggerDuring", - "name": "redefines isTriggerDuring", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 29, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines subactions", - { - "qualifiedName": "redefines subactions", - "name": "redefines subactions", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "substates", - { - "qualifiedName": "substates", - "name": "substates", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/States.sysml", - "line": 44, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "exclusiveStates", - { - "qualifiedName": "exclusiveStates", - "name": "exclusiveStates", - "packagePath": "", - "kind": "state", - "sourceFile": "Systems Library/States.sysml", - "line": 55, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "stateTransitions", - { - "qualifiedName": "stateTransitions", - "name": "stateTransitions", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/States.sysml", - "line": 63, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "StateTransitionAction", - { - "qualifiedName": "StateTransitionAction", - "name": "StateTransitionAction", - "packagePath": "", - "kind": "action", - "sourceFile": "Systems Library/States.sysml", - "line": 79, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines receiver", - { - "qualifiedName": "redefines receiver", - "name": "redefines receiver", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 90, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "payload = accepter.payload", - { - "qualifiedName": "payload = accepter.payload", - "name": "payload = accepter.payload", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/States.sysml", - "line": 92, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "stateActions", - { - "qualifiedName": "stateActions", - "name": "stateActions", - "packagePath": "", - "kind": "state", - "sourceFile": "Systems Library/States.sysml", - "line": 96, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems", - { - "qualifiedName": "Systems", - "name": "Systems", - "packagePath": "", - "kind": "package", - "sourceFile": "Systems Library/SysML.sysml", - "line": 9, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AcceptActionUsage", - { - "qualifiedName": "Systems::AcceptActionUsage", - "name": "AcceptActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::receiverArgument", - { - "qualifiedName": "Systems::receiverArgument", - "name": "receiverArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 357, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::payloadParameter", - { - "qualifiedName": "Systems::payloadParameter", - "name": "payloadParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 14, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::payloadArgument", - { - "qualifiedName": "Systems::payloadArgument", - "name": "payloadArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 358, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ActionDefinition", - { - "qualifiedName": "Systems::ActionDefinition", - "name": "ActionDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 18, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::action", - { - "qualifiedName": "Systems::action", - "name": "action", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 384, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ActionUsage", - { - "qualifiedName": "Systems::ActionUsage", - "name": "ActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::actionDefinition", - { - "qualifiedName": "Systems::actionDefinition", - "name": "actionDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 23, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines behavior", - { - "qualifiedName": "Systems::redefines behavior", - "name": "redefines behavior", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 23, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines occurrenceDefinition", - { - "qualifiedName": "Systems::redefines occurrenceDefinition", - "name": "redefines occurrenceDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 287, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ActorMembership", - { - "qualifiedName": "Systems::ActorMembership", - "name": "ActorMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 26, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedActorParameter", - { - "qualifiedName": "Systems::ownedActorParameter", - "name": "ownedActorParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 27, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines ownedMemberParameter", - { - "qualifiedName": "Systems::redefines ownedMemberParameter", - "name": "redefines ownedMemberParameter", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 397, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AllocationDefinition", - { - "qualifiedName": "Systems::AllocationDefinition", - "name": "AllocationDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 30, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::allocation", - { - "qualifiedName": "Systems::allocation", - "name": "allocation", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 31, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AllocationUsage", - { - "qualifiedName": "Systems::AllocationUsage", - "name": "AllocationUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 34, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::allocationDefinition", - { - "qualifiedName": "Systems::allocationDefinition", - "name": "allocationDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 35, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines connectionDefinition", - { - "qualifiedName": "Systems::redefines connectionDefinition", - "name": "redefines connectionDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 224, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AnalysisCaseDefinition", - { - "qualifiedName": "Systems::AnalysisCaseDefinition", - "name": "AnalysisCaseDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 38, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::resultExpression", - { - "qualifiedName": "Systems::resultExpression", - "name": "resultExpression", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 44, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AnalysisCaseUsage", - { - "qualifiedName": "Systems::AnalysisCaseUsage", - "name": "AnalysisCaseUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 42, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::analysisCaseDefinition", - { - "qualifiedName": "Systems::analysisCaseDefinition", - "name": "analysisCaseDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 43, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines caseDefinition", - { - "qualifiedName": "Systems::redefines caseDefinition", - "name": "redefines caseDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 485, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AssertConstraintUsage", - { - "qualifiedName": "Systems::AssertConstraintUsage", - "name": "AssertConstraintUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 47, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::assertedConstraint", - { - "qualifiedName": "Systems::assertedConstraint", - "name": "assertedConstraint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 48, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AssignmentActionUsage", - { - "qualifiedName": "Systems::AssignmentActionUsage", - "name": "AssignmentActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 51, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::targetArgument", - { - "qualifiedName": "Systems::targetArgument", - "name": "targetArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 52, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::valueExpression", - { - "qualifiedName": "Systems::valueExpression", - "name": "valueExpression", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 53, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::referent", - { - "qualifiedName": "Systems::referent", - "name": "referent", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 54, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AttributeDefinition", - { - "qualifiedName": "Systems::AttributeDefinition", - "name": "AttributeDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 57, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::AttributeUsage", - { - "qualifiedName": "Systems::AttributeUsage", - "name": "AttributeUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 59, - "specializes": [], - "features": [ - { - "name": "isReference", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::isReference", - { - "qualifiedName": "Systems::isReference", - "name": "isReference", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 442, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines isReference", - { - "qualifiedName": "Systems::redefines isReference", - "name": "redefines isReference", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 296, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::attributeDefinition", - { - "qualifiedName": "Systems::attributeDefinition", - "name": "attributeDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 62, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines definition", - { - "qualifiedName": "Systems::redefines definition", - "name": "redefines definition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 263, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::BindingConnectorAsUsage", - { - "qualifiedName": "Systems::BindingConnectorAsUsage", - "name": "BindingConnectorAsUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 65, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::CalculationDefinition", - { - "qualifiedName": "Systems::CalculationDefinition", - "name": "CalculationDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 67, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::calculation", - { - "qualifiedName": "Systems::calculation", - "name": "calculation", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 68, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::CalculationUsage", - { - "qualifiedName": "Systems::CalculationUsage", - "name": "CalculationUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 71, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::calculationDefinition", - { - "qualifiedName": "Systems::calculationDefinition", - "name": "calculationDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines function", - { - "qualifiedName": "Systems::redefines function", - "name": "redefines function", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 72, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines actionDefinition", - { - "qualifiedName": "Systems::redefines actionDefinition", - "name": "redefines actionDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 390, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::CaseDefinition", - { - "qualifiedName": "Systems::CaseDefinition", - "name": "CaseDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 75, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::objectiveRequirement", - { - "qualifiedName": "Systems::objectiveRequirement", - "name": "objectiveRequirement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 82, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::subjectParameter", - { - "qualifiedName": "Systems::subjectParameter", - "name": "subjectParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 338, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::actorParameter", - { - "qualifiedName": "Systems::actorParameter", - "name": "actorParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 340, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::CaseUsage", - { - "qualifiedName": "Systems::CaseUsage", - "name": "CaseUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 81, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::caseDefinition", - { - "qualifiedName": "Systems::caseDefinition", - "name": "caseDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 83, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines calculationDefinition", - { - "qualifiedName": "Systems::redefines calculationDefinition", - "name": "redefines calculationDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 83, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConcernDefinition", - { - "qualifiedName": "Systems::ConcernDefinition", - "name": "ConcernDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 88, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConcernUsage", - { - "qualifiedName": "Systems::ConcernUsage", - "name": "ConcernUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 90, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::concernDefinition", - { - "qualifiedName": "Systems::concernDefinition", - "name": "concernDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 91, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines requirementDefinition", - { - "qualifiedName": "Systems::redefines requirementDefinition", - "name": "redefines requirementDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 527, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConjugatedPortDefinition", - { - "qualifiedName": "Systems::ConjugatedPortDefinition", - "name": "ConjugatedPortDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 94, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::originalPortDefinition", - { - "qualifiedName": "Systems::originalPortDefinition", - "name": "originalPortDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 278, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines owningNamespace", - { - "qualifiedName": "Systems::redefines owningNamespace", - "name": "redefines owningNamespace", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 95, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedPortConjugator", - { - "qualifiedName": "Systems::ownedPortConjugator", - "name": "ownedPortConjugator", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 96, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines ownedConjugator", - { - "qualifiedName": "Systems::redefines ownedConjugator", - "name": "redefines ownedConjugator", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 96, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConjugatedPortTyping", - { - "qualifiedName": "Systems::ConjugatedPortTyping", - "name": "ConjugatedPortTyping", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 99, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::conjugatedPortDefinition", - { - "qualifiedName": "Systems::conjugatedPortDefinition", - "name": "conjugatedPortDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 283, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines type", - { - "qualifiedName": "Systems::redefines type", - "name": "redefines type", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 448, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::portDefinition", - { - "qualifiedName": "Systems::portDefinition", - "name": "portDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 287, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConnectionDefinition", - { - "qualifiedName": "Systems::ConnectionDefinition", - "name": "ConnectionDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 104, - "specializes": [], - "features": [ - { - "name": "isSufficient", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::isSufficient", - { - "qualifiedName": "Systems::isSufficient", - "name": "isSufficient", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 105, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines isSufficient", - { - "qualifiedName": "Systems::redefines isSufficient", - "name": "redefines isSufficient", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 105, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::connectionEnd", - { - "qualifiedName": "Systems::connectionEnd", - "name": "connectionEnd", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 107, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines associationEnd", - { - "qualifiedName": "Systems::redefines associationEnd", - "name": "redefines associationEnd", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 188, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConnectionUsage", - { - "qualifiedName": "Systems::ConnectionUsage", - "name": "ConnectionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 110, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::connectionDefinition", - { - "qualifiedName": "Systems::connectionDefinition", - "name": "connectionDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 111, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines association", - { - "qualifiedName": "Systems::redefines association", - "name": "redefines association", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 111, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConnectorAsUsage", - { - "qualifiedName": "Systems::ConnectorAsUsage", - "name": "ConnectorAsUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 114, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConstraintDefinition", - { - "qualifiedName": "Systems::ConstraintDefinition", - "name": "ConstraintDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 116, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ConstraintUsage", - { - "qualifiedName": "Systems::ConstraintUsage", - "name": "ConstraintUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 118, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::constraintDefinition", - { - "qualifiedName": "Systems::constraintDefinition", - "name": "constraintDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 119, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines predicate", - { - "qualifiedName": "Systems::redefines predicate", - "name": "redefines predicate", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 119, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ControlNode", - { - "qualifiedName": "Systems::ControlNode", - "name": "ControlNode", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 122, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::DecisionNode", - { - "qualifiedName": "Systems::DecisionNode", - "name": "DecisionNode", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 124, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::Definition", - { - "qualifiedName": "Systems::Definition", - "name": "Definition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 126, - "specializes": [], - "features": [ - { - "name": "isVariation", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::isVariation", - { - "qualifiedName": "Systems::isVariation", - "name": "isVariation", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 440, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::variant", - { - "qualifiedName": "Systems::variant", - "name": "variant", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 444, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::variantMembership", - { - "qualifiedName": "Systems::variantMembership", - "name": "variantMembership", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 445, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::usage", - { - "qualifiedName": "Systems::usage", - "name": "usage", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 449, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::directedUsage", - { - "qualifiedName": "Systems::directedUsage", - "name": "directedUsage", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 450, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedUsage", - { - "qualifiedName": "Systems::ownedUsage", - "name": "ownedUsage", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 133, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedReference", - { - "qualifiedName": "Systems::ownedReference", - "name": "ownedReference", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 134, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedAttribute", - { - "qualifiedName": "Systems::ownedAttribute", - "name": "ownedAttribute", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 135, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedEnumeration", - { - "qualifiedName": "Systems::ownedEnumeration", - "name": "ownedEnumeration", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 136, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedOccurrence", - { - "qualifiedName": "Systems::ownedOccurrence", - "name": "ownedOccurrence", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 137, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedItem", - { - "qualifiedName": "Systems::ownedItem", - "name": "ownedItem", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 138, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedPart", - { - "qualifiedName": "Systems::ownedPart", - "name": "ownedPart", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 139, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedPort", - { - "qualifiedName": "Systems::ownedPort", - "name": "ownedPort", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 140, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedConnection", - { - "qualifiedName": "Systems::ownedConnection", - "name": "ownedConnection", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 141, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedFlow", - { - "qualifiedName": "Systems::ownedFlow", - "name": "ownedFlow", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 142, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedInterface", - { - "qualifiedName": "Systems::ownedInterface", - "name": "ownedInterface", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 143, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedAllocation", - { - "qualifiedName": "Systems::ownedAllocation", - "name": "ownedAllocation", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 144, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedAction", - { - "qualifiedName": "Systems::ownedAction", - "name": "ownedAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 145, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedState", - { - "qualifiedName": "Systems::ownedState", - "name": "ownedState", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 146, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedTransition", - { - "qualifiedName": "Systems::ownedTransition", - "name": "ownedTransition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 147, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedCalculation", - { - "qualifiedName": "Systems::ownedCalculation", - "name": "ownedCalculation", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 148, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedConstraint", - { - "qualifiedName": "Systems::ownedConstraint", - "name": "ownedConstraint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 315, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedRequirement", - { - "qualifiedName": "Systems::ownedRequirement", - "name": "ownedRequirement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 347, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedConcern", - { - "qualifiedName": "Systems::ownedConcern", - "name": "ownedConcern", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 205, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedCase", - { - "qualifiedName": "Systems::ownedCase", - "name": "ownedCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 152, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedAnalysisCase", - { - "qualifiedName": "Systems::ownedAnalysisCase", - "name": "ownedAnalysisCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 153, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedVerificationCase", - { - "qualifiedName": "Systems::ownedVerificationCase", - "name": "ownedVerificationCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 154, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedUseCase", - { - "qualifiedName": "Systems::ownedUseCase", - "name": "ownedUseCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 155, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedView", - { - "qualifiedName": "Systems::ownedView", - "name": "ownedView", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 156, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedViewpoint", - { - "qualifiedName": "Systems::ownedViewpoint", - "name": "ownedViewpoint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 157, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedRendering", - { - "qualifiedName": "Systems::ownedRendering", - "name": "ownedRendering", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 510, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedMetadata", - { - "qualifiedName": "Systems::ownedMetadata", - "name": "ownedMetadata", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 159, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::EnumerationDefinition", - { - "qualifiedName": "Systems::EnumerationDefinition", - "name": "EnumerationDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 162, - "specializes": [], - "features": [ - { - "name": "isVariation", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines isVariation", - { - "qualifiedName": "Systems::redefines isVariation", - "name": "redefines isVariation", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 163, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::enumeratedValue", - { - "qualifiedName": "Systems::enumeratedValue", - "name": "enumeratedValue", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 165, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines 'variant'", - { - "qualifiedName": "Systems::redefines 'variant'", - "name": "redefines 'variant'", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 165, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::EnumerationUsage", - { - "qualifiedName": "Systems::EnumerationUsage", - "name": "EnumerationUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 168, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::enumerationDefinition", - { - "qualifiedName": "Systems::enumerationDefinition", - "name": "enumerationDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 169, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines attributeDefinition", - { - "qualifiedName": "Systems::redefines attributeDefinition", - "name": "redefines attributeDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 169, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::EventOccurrenceUsage", - { - "qualifiedName": "Systems::EventOccurrenceUsage", - "name": "EventOccurrenceUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 172, - "specializes": [], - "features": [ - { - "name": "isReference", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::eventOccurrence", - { - "qualifiedName": "Systems::eventOccurrence", - "name": "eventOccurrence", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 175, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ExhibitStateUsage", - { - "qualifiedName": "Systems::ExhibitStateUsage", - "name": "ExhibitStateUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 178, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::exhibitedState", - { - "qualifiedName": "Systems::exhibitedState", - "name": "exhibitedState", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 179, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines performedAction", - { - "qualifiedName": "Systems::redefines performedAction", - "name": "redefines performedAction", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 216, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::Expose", - { - "qualifiedName": "Systems::Expose", - "name": "Expose", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 182, - "specializes": [], - "features": [ - { - "name": "visibility", - "kind": "attribute", - "isComposite": true - }, - { - "name": "isImportAll", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::visibility", - { - "qualifiedName": "Systems::visibility", - "name": "visibility", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 183, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines visibility", - { - "qualifiedName": "Systems::redefines visibility", - "name": "redefines visibility", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 183, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::isImportAll", - { - "qualifiedName": "Systems::isImportAll", - "name": "isImportAll", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 184, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines isImportAll", - { - "qualifiedName": "Systems::redefines isImportAll", - "name": "redefines isImportAll", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 184, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::FlowDefinition", - { - "qualifiedName": "Systems::FlowDefinition", - "name": "FlowDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 187, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::flowEnd", - { - "qualifiedName": "Systems::flowEnd", - "name": "flowEnd", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 188, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::FlowUsage", - { - "qualifiedName": "Systems::FlowUsage", - "name": "FlowUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 191, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::flowDefinition", - { - "qualifiedName": "Systems::flowDefinition", - "name": "flowDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 192, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines interaction", - { - "qualifiedName": "Systems::redefines interaction", - "name": "redefines interaction", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 192, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ForLoopActionUsage", - { - "qualifiedName": "Systems::ForLoopActionUsage", - "name": "ForLoopActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 195, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::seqArgument", - { - "qualifiedName": "Systems::seqArgument", - "name": "seqArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 196, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::loopVariable", - { - "qualifiedName": "Systems::loopVariable", - "name": "loopVariable", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 197, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ForkNode", - { - "qualifiedName": "Systems::ForkNode", - "name": "ForkNode", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 200, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::FramedConcernMembership", - { - "qualifiedName": "Systems::FramedConcernMembership", - "name": "FramedConcernMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 202, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::kind", - { - "qualifiedName": "Systems::kind", - "name": "kind", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 430, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines kind", - { - "qualifiedName": "Systems::redefines kind", - "name": "redefines kind", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 345, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines ownedConstraint", - { - "qualifiedName": "Systems::redefines ownedConstraint", - "name": "redefines ownedConstraint", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 347, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::referencedConcern", - { - "qualifiedName": "Systems::referencedConcern", - "name": "referencedConcern", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 206, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines referencedConstraint", - { - "qualifiedName": "Systems::redefines referencedConstraint", - "name": "redefines referencedConstraint", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 348, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::IfActionUsage", - { - "qualifiedName": "Systems::IfActionUsage", - "name": "IfActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 209, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::elseAction", - { - "qualifiedName": "Systems::elseAction", - "name": "elseAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 210, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::thenAction", - { - "qualifiedName": "Systems::thenAction", - "name": "thenAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 211, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ifArgument", - { - "qualifiedName": "Systems::ifArgument", - "name": "ifArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 212, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::IncludeUseCaseUsage", - { - "qualifiedName": "Systems::IncludeUseCaseUsage", - "name": "IncludeUseCaseUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 215, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::useCaseIncluded", - { - "qualifiedName": "Systems::useCaseIncluded", - "name": "useCaseIncluded", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 216, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::InterfaceDefinition", - { - "qualifiedName": "Systems::InterfaceDefinition", - "name": "InterfaceDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 219, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::interfaceEnd", - { - "qualifiedName": "Systems::interfaceEnd", - "name": "interfaceEnd", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 220, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines connectionEnd", - { - "qualifiedName": "Systems::redefines connectionEnd", - "name": "redefines connectionEnd", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 220, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::InterfaceUsage", - { - "qualifiedName": "Systems::InterfaceUsage", - "name": "InterfaceUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 223, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::interfaceDefinition", - { - "qualifiedName": "Systems::interfaceDefinition", - "name": "interfaceDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 224, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ItemDefinition", - { - "qualifiedName": "Systems::ItemDefinition", - "name": "ItemDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 227, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ItemUsage", - { - "qualifiedName": "Systems::ItemUsage", - "name": "ItemUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 229, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::itemDefinition", - { - "qualifiedName": "Systems::itemDefinition", - "name": "itemDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 230, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::JoinNode", - { - "qualifiedName": "Systems::JoinNode", - "name": "JoinNode", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 233, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::LoopActionUsage", - { - "qualifiedName": "Systems::LoopActionUsage", - "name": "LoopActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 235, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::bodyAction", - { - "qualifiedName": "Systems::bodyAction", - "name": "bodyAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 236, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::MembershipExpose", - { - "qualifiedName": "Systems::MembershipExpose", - "name": "MembershipExpose", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 239, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::MergeNode", - { - "qualifiedName": "Systems::MergeNode", - "name": "MergeNode", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 241, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::MetadataDefinition", - { - "qualifiedName": "Systems::MetadataDefinition", - "name": "MetadataDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 243, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::MetadataUsage", - { - "qualifiedName": "Systems::MetadataUsage", - "name": "MetadataUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 245, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::metadataDefinition", - { - "qualifiedName": "Systems::metadataDefinition", - "name": "metadataDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 246, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines itemDefinition", - { - "qualifiedName": "Systems::redefines itemDefinition", - "name": "redefines itemDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 246, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines metaclass", - { - "qualifiedName": "Systems::redefines metaclass", - "name": "redefines metaclass", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 246, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::NamespaceExpose", - { - "qualifiedName": "Systems::NamespaceExpose", - "name": "NamespaceExpose", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 249, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ObjectiveMembership", - { - "qualifiedName": "Systems::ObjectiveMembership", - "name": "ObjectiveMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 251, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedObjectiveRequirement", - { - "qualifiedName": "Systems::ownedObjectiveRequirement", - "name": "ownedObjectiveRequirement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 252, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines ownedMemberFeature", - { - "qualifiedName": "Systems::redefines ownedMemberFeature", - "name": "redefines ownedMemberFeature", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 510, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::OccurrenceDefinition", - { - "qualifiedName": "Systems::OccurrenceDefinition", - "name": "OccurrenceDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 255, - "specializes": [], - "features": [ - { - "name": "isIndividual", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::isIndividual", - { - "qualifiedName": "Systems::isIndividual", - "name": "isIndividual", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 260, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::OccurrenceUsage", - { - "qualifiedName": "Systems::OccurrenceUsage", - "name": "OccurrenceUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 259, - "specializes": [], - "features": [ - { - "name": "isIndividual", - "kind": "attribute", - "isComposite": true - }, - { - "name": "portionKind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::portionKind", - { - "qualifiedName": "Systems::portionKind", - "name": "portionKind", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 261, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::occurrenceDefinition", - { - "qualifiedName": "Systems::occurrenceDefinition", - "name": "occurrenceDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 263, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::individualDefinition", - { - "qualifiedName": "Systems::individualDefinition", - "name": "individualDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 264, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PartDefinition", - { - "qualifiedName": "Systems::PartDefinition", - "name": "PartDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 267, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PartUsage", - { - "qualifiedName": "Systems::PartUsage", - "name": "PartUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 269, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::partDefinition", - { - "qualifiedName": "Systems::partDefinition", - "name": "partDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 270, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PerformActionUsage", - { - "qualifiedName": "Systems::PerformActionUsage", - "name": "PerformActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 273, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::performedAction", - { - "qualifiedName": "Systems::performedAction", - "name": "performedAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 274, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines eventOccurrence", - { - "qualifiedName": "Systems::redefines eventOccurrence", - "name": "redefines eventOccurrence", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 274, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PortConjugation", - { - "qualifiedName": "Systems::PortConjugation", - "name": "PortConjugation", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 277, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines originalType", - { - "qualifiedName": "Systems::redefines originalType", - "name": "redefines originalType", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 278, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines owningType", - { - "qualifiedName": "Systems::redefines owningType", - "name": "redefines owningType", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 279, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PortDefinition", - { - "qualifiedName": "Systems::PortDefinition", - "name": "PortDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 282, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PortUsage", - { - "qualifiedName": "Systems::PortUsage", - "name": "PortUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 286, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::PortionKind", - { - "qualifiedName": "Systems::PortionKind", - "name": "PortionKind", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 290, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ReferenceUsage", - { - "qualifiedName": "Systems::ReferenceUsage", - "name": "ReferenceUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 295, - "specializes": [], - "features": [ - { - "name": "isReference", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RenderingDefinition", - { - "qualifiedName": "Systems::RenderingDefinition", - "name": "RenderingDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 299, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::rendering", - { - "qualifiedName": "Systems::rendering", - "name": "rendering", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 300, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RenderingUsage", - { - "qualifiedName": "Systems::RenderingUsage", - "name": "RenderingUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 303, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::renderingDefinition", - { - "qualifiedName": "Systems::renderingDefinition", - "name": "renderingDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 304, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines partDefinition", - { - "qualifiedName": "Systems::redefines partDefinition", - "name": "redefines partDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 515, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RequirementConstraintKind", - { - "qualifiedName": "Systems::RequirementConstraintKind", - "name": "RequirementConstraintKind", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 307, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RequirementConstraintMembership", - { - "qualifiedName": "Systems::RequirementConstraintMembership", - "name": "RequirementConstraintMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 312, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::referencedConstraint", - { - "qualifiedName": "Systems::referencedConstraint", - "name": "referencedConstraint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 316, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RequirementDefinition", - { - "qualifiedName": "Systems::RequirementDefinition", - "name": "RequirementDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 319, - "specializes": [], - "features": [ - { - "name": "reqId", - "kind": "attribute", - "isComposite": true - }, - { - "name": "text", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::reqId", - { - "qualifiedName": "Systems::reqId", - "name": "reqId", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 332, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines declaredShortName", - { - "qualifiedName": "Systems::redefines declaredShortName", - "name": "redefines declaredShortName", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 332, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::text", - { - "qualifiedName": "Systems::text", - "name": "text", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 333, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::stakeholderParameter", - { - "qualifiedName": "Systems::stakeholderParameter", - "name": "stakeholderParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 341, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::assumedConstraint", - { - "qualifiedName": "Systems::assumedConstraint", - "name": "assumedConstraint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 337, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::requiredConstraint", - { - "qualifiedName": "Systems::requiredConstraint", - "name": "requiredConstraint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 336, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::framedConcern", - { - "qualifiedName": "Systems::framedConcern", - "name": "framedConcern", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 339, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RequirementUsage", - { - "qualifiedName": "Systems::RequirementUsage", - "name": "RequirementUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 331, - "specializes": [], - "features": [ - { - "name": "reqId", - "kind": "attribute", - "isComposite": true - }, - { - "name": "text", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::requirementDefinition", - { - "qualifiedName": "Systems::requirementDefinition", - "name": "requirementDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 335, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines constraintDefinition", - { - "qualifiedName": "Systems::redefines constraintDefinition", - "name": "redefines constraintDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 335, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::RequirementVerificationMembership", - { - "qualifiedName": "Systems::RequirementVerificationMembership", - "name": "RequirementVerificationMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 344, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::verifiedRequirement", - { - "qualifiedName": "Systems::verifiedRequirement", - "name": "verifiedRequirement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 499, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::SatisfyRequirementUsage", - { - "qualifiedName": "Systems::SatisfyRequirementUsage", - "name": "SatisfyRequirementUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 351, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::satisfiedRequirement", - { - "qualifiedName": "Systems::satisfiedRequirement", - "name": "satisfiedRequirement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 352, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines assertedConstraint", - { - "qualifiedName": "Systems::redefines assertedConstraint", - "name": "redefines assertedConstraint", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 352, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::satisfyingFeature", - { - "qualifiedName": "Systems::satisfyingFeature", - "name": "satisfyingFeature", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 353, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::SendActionUsage", - { - "qualifiedName": "Systems::SendActionUsage", - "name": "SendActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 356, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::senderArgument", - { - "qualifiedName": "Systems::senderArgument", - "name": "senderArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 359, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::StakeholderMembership", - { - "qualifiedName": "Systems::StakeholderMembership", - "name": "StakeholderMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 362, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedStakeholderParameter", - { - "qualifiedName": "Systems::ownedStakeholderParameter", - "name": "ownedStakeholderParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 363, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::StateDefinition", - { - "qualifiedName": "Systems::StateDefinition", - "name": "StateDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 366, - "specializes": [], - "features": [ - { - "name": "isParallel", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::isParallel", - { - "qualifiedName": "Systems::isParallel", - "name": "isParallel", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 388, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::state", - { - "qualifiedName": "Systems::state", - "name": "state", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 369, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::entryAction", - { - "qualifiedName": "Systems::entryAction", - "name": "entryAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 391, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::doAction", - { - "qualifiedName": "Systems::doAction", - "name": "doAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 392, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::exitAction", - { - "qualifiedName": "Systems::exitAction", - "name": "exitAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 393, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::StateSubactionKind", - { - "qualifiedName": "Systems::StateSubactionKind", - "name": "StateSubactionKind", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 375, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::StateSubactionMembership", - { - "qualifiedName": "Systems::StateSubactionMembership", - "name": "StateSubactionMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 381, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::StateUsage", - { - "qualifiedName": "Systems::StateUsage", - "name": "StateUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 387, - "specializes": [], - "features": [ - { - "name": "isParallel", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::stateDefinition", - { - "qualifiedName": "Systems::stateDefinition", - "name": "stateDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 390, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::SubjectMembership", - { - "qualifiedName": "Systems::SubjectMembership", - "name": "SubjectMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 396, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedSubjectParameter", - { - "qualifiedName": "Systems::ownedSubjectParameter", - "name": "ownedSubjectParameter", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 397, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::SuccessionAsUsage", - { - "qualifiedName": "Systems::SuccessionAsUsage", - "name": "SuccessionAsUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 400, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::SuccessionFlowUsage", - { - "qualifiedName": "Systems::SuccessionFlowUsage", - "name": "SuccessionFlowUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 402, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::TerminateActionUsage", - { - "qualifiedName": "Systems::TerminateActionUsage", - "name": "TerminateActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 404, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::terminatedOccurrenceArgument", - { - "qualifiedName": "Systems::terminatedOccurrenceArgument", - "name": "terminatedOccurrenceArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 405, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::TransitionFeatureKind", - { - "qualifiedName": "Systems::TransitionFeatureKind", - "name": "TransitionFeatureKind", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 408, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::TransitionFeatureMembership", - { - "qualifiedName": "Systems::TransitionFeatureMembership", - "name": "TransitionFeatureMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 414, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::transitionFeature", - { - "qualifiedName": "Systems::transitionFeature", - "name": "transitionFeature", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 417, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::TransitionUsage", - { - "qualifiedName": "Systems::TransitionUsage", - "name": "TransitionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 420, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::source", - { - "qualifiedName": "Systems::source", - "name": "source", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 421, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::target", - { - "qualifiedName": "Systems::target", - "name": "target", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 422, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::triggerAction", - { - "qualifiedName": "Systems::triggerAction", - "name": "triggerAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 423, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::guardExpression", - { - "qualifiedName": "Systems::guardExpression", - "name": "guardExpression", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 424, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::effectAction", - { - "qualifiedName": "Systems::effectAction", - "name": "effectAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 425, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::succession", - { - "qualifiedName": "Systems::succession", - "name": "succession", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 426, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::TriggerInvocationExpression", - { - "qualifiedName": "Systems::TriggerInvocationExpression", - "name": "TriggerInvocationExpression", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 429, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::TriggerKind", - { - "qualifiedName": "Systems::TriggerKind", - "name": "TriggerKind", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 433, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::Usage", - { - "qualifiedName": "Systems::Usage", - "name": "Usage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 439, - "specializes": [], - "features": [ - { - "name": "isVariation", - "kind": "attribute", - "isComposite": true - }, - { - "name": "mayTimeVary", - "kind": "attribute", - "isComposite": true - }, - { - "name": "isReference", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::mayTimeVary", - { - "qualifiedName": "Systems::mayTimeVary", - "name": "mayTimeVary", - "packagePath": "Systems", - "kind": "attribute", - "sourceFile": "Systems Library/SysML.sysml", - "line": 441, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines isVariable", - { - "qualifiedName": "Systems::redefines isVariable", - "name": "redefines isVariable", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 441, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::owningDefinition", - { - "qualifiedName": "Systems::owningDefinition", - "name": "owningDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 446, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::owningUsage", - { - "qualifiedName": "Systems::owningUsage", - "name": "owningUsage", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 447, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::definition", - { - "qualifiedName": "Systems::definition", - "name": "definition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 448, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedUsage", - { - "qualifiedName": "Systems::nestedUsage", - "name": "nestedUsage", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 451, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedReference", - { - "qualifiedName": "Systems::nestedReference", - "name": "nestedReference", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 452, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedAttribute", - { - "qualifiedName": "Systems::nestedAttribute", - "name": "nestedAttribute", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 453, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedEnumeration", - { - "qualifiedName": "Systems::nestedEnumeration", - "name": "nestedEnumeration", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 454, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedOccurrence", - { - "qualifiedName": "Systems::nestedOccurrence", - "name": "nestedOccurrence", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 455, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedItem", - { - "qualifiedName": "Systems::nestedItem", - "name": "nestedItem", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 456, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedPart", - { - "qualifiedName": "Systems::nestedPart", - "name": "nestedPart", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 457, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedPort", - { - "qualifiedName": "Systems::nestedPort", - "name": "nestedPort", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 458, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedConnection", - { - "qualifiedName": "Systems::nestedConnection", - "name": "nestedConnection", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 459, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedFlow", - { - "qualifiedName": "Systems::nestedFlow", - "name": "nestedFlow", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 460, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedInterface", - { - "qualifiedName": "Systems::nestedInterface", - "name": "nestedInterface", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 461, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedAllocation", - { - "qualifiedName": "Systems::nestedAllocation", - "name": "nestedAllocation", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 462, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedAction", - { - "qualifiedName": "Systems::nestedAction", - "name": "nestedAction", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 463, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedState", - { - "qualifiedName": "Systems::nestedState", - "name": "nestedState", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 464, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedTransition", - { - "qualifiedName": "Systems::nestedTransition", - "name": "nestedTransition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 465, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedCalculation", - { - "qualifiedName": "Systems::nestedCalculation", - "name": "nestedCalculation", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 466, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedConstraint", - { - "qualifiedName": "Systems::nestedConstraint", - "name": "nestedConstraint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 467, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedRequirement", - { - "qualifiedName": "Systems::nestedRequirement", - "name": "nestedRequirement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 468, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedConcern", - { - "qualifiedName": "Systems::nestedConcern", - "name": "nestedConcern", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 469, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedCase", - { - "qualifiedName": "Systems::nestedCase", - "name": "nestedCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 470, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedAnalysisCase", - { - "qualifiedName": "Systems::nestedAnalysisCase", - "name": "nestedAnalysisCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 471, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedVerificationCase", - { - "qualifiedName": "Systems::nestedVerificationCase", - "name": "nestedVerificationCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 472, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedUseCase", - { - "qualifiedName": "Systems::nestedUseCase", - "name": "nestedUseCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 473, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedView", - { - "qualifiedName": "Systems::nestedView", - "name": "nestedView", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 474, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedViewpoint", - { - "qualifiedName": "Systems::nestedViewpoint", - "name": "nestedViewpoint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 475, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedRendering", - { - "qualifiedName": "Systems::nestedRendering", - "name": "nestedRendering", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 476, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::nestedMetadata", - { - "qualifiedName": "Systems::nestedMetadata", - "name": "nestedMetadata", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 477, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::UseCaseDefinition", - { - "qualifiedName": "Systems::UseCaseDefinition", - "name": "UseCaseDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 480, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::includedUseCase", - { - "qualifiedName": "Systems::includedUseCase", - "name": "includedUseCase", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 486, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::UseCaseUsage", - { - "qualifiedName": "Systems::UseCaseUsage", - "name": "UseCaseUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 484, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::useCaseDefinition", - { - "qualifiedName": "Systems::useCaseDefinition", - "name": "useCaseDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 485, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::VariantMembership", - { - "qualifiedName": "Systems::VariantMembership", - "name": "VariantMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 489, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ownedVariantUsage", - { - "qualifiedName": "Systems::ownedVariantUsage", - "name": "ownedVariantUsage", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 490, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::redefines ownedMemberElement", - { - "qualifiedName": "Systems::redefines ownedMemberElement", - "name": "redefines ownedMemberElement", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 490, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::VerificationCaseDefinition", - { - "qualifiedName": "Systems::VerificationCaseDefinition", - "name": "VerificationCaseDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 493, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::VerificationCaseUsage", - { - "qualifiedName": "Systems::VerificationCaseUsage", - "name": "VerificationCaseUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 497, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::verificationCaseDefinition", - { - "qualifiedName": "Systems::verificationCaseDefinition", - "name": "verificationCaseDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 498, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ViewDefinition", - { - "qualifiedName": "Systems::ViewDefinition", - "name": "ViewDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 502, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::view", - { - "qualifiedName": "Systems::view", - "name": "view", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 503, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::satisfiedViewpoint", - { - "qualifiedName": "Systems::satisfiedViewpoint", - "name": "satisfiedViewpoint", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 516, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::viewRendering", - { - "qualifiedName": "Systems::viewRendering", - "name": "viewRendering", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 518, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::viewCondition", - { - "qualifiedName": "Systems::viewCondition", - "name": "viewCondition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 519, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ViewRenderingMembership", - { - "qualifiedName": "Systems::ViewRenderingMembership", - "name": "ViewRenderingMembership", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 509, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::referencedRendering", - { - "qualifiedName": "Systems::referencedRendering", - "name": "referencedRendering", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 511, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ViewUsage", - { - "qualifiedName": "Systems::ViewUsage", - "name": "ViewUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 514, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::viewDefinition", - { - "qualifiedName": "Systems::viewDefinition", - "name": "viewDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 515, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::exposedElement", - { - "qualifiedName": "Systems::exposedElement", - "name": "exposedElement", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 517, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ViewpointDefinition", - { - "qualifiedName": "Systems::ViewpointDefinition", - "name": "ViewpointDefinition", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 522, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::viewpointStakeholder", - { - "qualifiedName": "Systems::viewpointStakeholder", - "name": "viewpointStakeholder", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 528, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::ViewpointUsage", - { - "qualifiedName": "Systems::ViewpointUsage", - "name": "ViewpointUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 526, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::viewpointDefinition", - { - "qualifiedName": "Systems::viewpointDefinition", - "name": "viewpointDefinition", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 527, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::WhileLoopActionUsage", - { - "qualifiedName": "Systems::WhileLoopActionUsage", - "name": "WhileLoopActionUsage", - "packagePath": "Systems", - "kind": "part", - "sourceFile": "Systems Library/SysML.sysml", - "line": 531, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::whileArgument", - { - "qualifiedName": "Systems::whileArgument", - "name": "whileArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 532, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "Systems::untilArgument", - { - "qualifiedName": "Systems::untilArgument", - "name": "untilArgument", - "packagePath": "Systems", - "kind": "item", - "sourceFile": "Systems Library/SysML.sysml", - "line": 533, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "UseCase", - { - "qualifiedName": "UseCase", - "name": "UseCase", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 9, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines obj", - { - "qualifiedName": "redefines obj", - "name": "redefines obj", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 23, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subUseCases", - { - "qualifiedName": "subUseCases", - "name": "subUseCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 34, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "includedUseCases", - { - "qualifiedName": "includedUseCases", - "name": "includedUseCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 41, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "useCases", - { - "qualifiedName": "useCases", - "name": "useCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/UseCases.sysml", - "line": 50, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "VerificationCase", - { - "qualifiedName": "VerificationCase", - "name": "VerificationCase", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines result", - { - "qualifiedName": "redefines result", - "name": "redefines result", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 21, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "requirementVerifications", - { - "qualifiedName": "requirementVerifications", - "name": "requirementVerifications", - "packagePath": "", - "kind": "requirement", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 34, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subVerificationCases", - { - "qualifiedName": "subVerificationCases", - "name": "subVerificationCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 41, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "verificationCases", - { - "qualifiedName": "verificationCases", - "name": "verificationCases", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 50, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "VerdictKind", - { - "qualifiedName": "VerdictKind", - "name": "VerdictKind", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 57, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "PassIf", - { - "qualifiedName": "PassIf", - "name": "PassIf", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 69, - "specializes": [], - "features": [ - { - "name": "isPassing", - "kind": "attribute", - "isComposite": true - }, - { - "name": "verdict", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "isPassing", - { - "qualifiedName": "isPassing", - "name": "isPassing", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 76, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "verdict", - { - "qualifiedName": "verdict", - "name": "verdict", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 77, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "VerificationMethod", - { - "qualifiedName": "VerificationMethod", - "name": "VerificationMethod", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 80, - "specializes": [], - "features": [ - { - "name": "kind", - "kind": "attribute", - "isComposite": true - } - ], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "kind", - { - "qualifiedName": "kind", - "name": "kind", - "packagePath": "", - "kind": "attribute", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 86, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "VerificationMethodKind", - { - "qualifiedName": "VerificationMethodKind", - "name": "VerificationMethodKind", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/VerificationCases.sysml", - "line": 89, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "View", - { - "qualifiedName": "View", - "name": "View", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 12, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subviews", - { - "qualifiedName": "subviews", - "name": "subviews", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 15, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "viewRendering", - { - "qualifiedName": "viewRendering", - "name": "viewRendering", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 22, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "viewpointSatisfactions", - { - "qualifiedName": "viewpointSatisfactions", - "name": "viewpointSatisfactions", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 29, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "require: viewpointSatisfactions", - { - "qualifiedName": "require: viewpointSatisfactions", - "name": "require: viewpointSatisfactions", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 42, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "ViewpointCheck", - { - "qualifiedName": "ViewpointCheck", - "name": "ViewpointCheck", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 52, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "subrenderings", - { - "qualifiedName": "subrenderings", - "name": "subrenderings", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 71, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TextualRendering", - { - "qualifiedName": "TextualRendering", - "name": "TextualRendering", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 79, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "GraphicalRendering", - { - "qualifiedName": "GraphicalRendering", - "name": "GraphicalRendering", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 86, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "TabularRendering", - { - "qualifiedName": "TabularRendering", - "name": "TabularRendering", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 93, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "views", - { - "qualifiedName": "views", - "name": "views", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 100, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "viewpointChecks", - { - "qualifiedName": "viewpointChecks", - "name": "viewpointChecks", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 107, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "renderings", - { - "qualifiedName": "renderings", - "name": "renderings", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 114, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "asTextualNotation", - { - "qualifiedName": "asTextualNotation", - "name": "asTextualNotation", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 121, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "asTreeDiagram", - { - "qualifiedName": "asTreeDiagram", - "name": "asTreeDiagram", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 129, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "asInterconnectionDiagram", - { - "qualifiedName": "asInterconnectionDiagram", - "name": "asInterconnectionDiagram", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 137, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "asElementTable", - { - "qualifiedName": "asElementTable", - "name": "asElementTable", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 145, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "columnView", - { - "qualifiedName": "columnView", - "name": "columnView", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 153, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines viewRendering", - { - "qualifiedName": "redefines viewRendering", - "name": "redefines viewRendering", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 159, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ], - [ - "redefines subrenderings", - { - "qualifiedName": "redefines subrenderings", - "name": "redefines subrenderings", - "packagePath": "", - "kind": "part", - "sourceFile": "Systems Library/Views.sysml", - "line": 161, - "specializes": [], - "features": [], - "relationships": [], - "constraints": [], - "stereotypes": [], - "isAbstract": false, - "visibility": "public" - } - ] - ], - "simpleNameIndex": [ - [ - "ToolExecution", - [ - "ToolExecution" - ] - ], - [ - "toolName", - [ - "toolName" - ] - ], - [ - "uri", - [ - "uri" - ] - ], - [ - "ToolVariable", - [ - "ToolVariable" - ] - ], - [ - "name", - [ - "name" - ] - ], - [ - "SamplePair", - [ - "SamplePair" - ] - ], - [ - "domainValue", - [ - "domainValue" - ] - ], - [ - "redefines key", - [ - "redefines key" - ] - ], - [ - "rangeValue", - [ - "rangeValue" - ] - ], - [ - "redefines val", - [ - "redefines val" - ] - ], - [ - "SampledFunction", - [ - "SampledFunction" - ] - ], - [ - "samples", - [ - "samples" - ] - ], - [ - "redefines elements", - [ - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements", - "redefines elements" - ] - ], - [ - "Domain", - [ - "Domain" - ] - ], - [ - "Range", - [ - "Range" - ] - ], - [ - "Sample", - [ - "Sample" - ] - ], - [ - "calculation", - [ - "calculation", - "Systems::calculation" - ] - ], - [ - "domainValues", - [ - "domainValues", - "domainValues" - ] - ], - [ - "Interpolate", - [ - "Interpolate" - ] - ], - [ - "fn", - [ - "fn", - "fn" - ] - ], - [ - "value", - [ - "value", - "value", - "value" - ] - ], - [ - "result", - [ - "result", - "result" - ] - ], - [ - "interpolateLinear", - [ - "interpolateLinear" - ] - ], - [ - "index", - [ - "index", - "index" - ] - ], - [ - "Linear", - [ - "Linear" - ] - ], - [ - "lowerSample", - [ - "lowerSample" - ] - ], - [ - "upperSample", - [ - "upperSample" - ] - ], - [ - "f", - [ - "f" - ] - ], - [ - "StateSpace", - [ - "StateSpace" - ] - ], - [ - "Input", - [ - "Input" - ] - ], - [ - "Output", - [ - "Output" - ] - ], - [ - "GetNextState", - [ - "GetNextState" - ] - ], - [ - "GetOutput", - [ - "GetOutput" - ] - ], - [ - "StateSpaceEventDef", - [ - "StateSpaceEventDef" - ] - ], - [ - "ZeroCrossingEventDef", - [ - "ZeroCrossingEventDef" - ] - ], - [ - "StateSpaceItem", - [ - "StateSpaceItem" - ] - ], - [ - "StateSpaceDynamics", - [ - "StateSpaceDynamics" - ] - ], - [ - "input", - [ - "input" - ] - ], - [ - "getNextState", - [ - "getNextState" - ] - ], - [ - "getOutput", - [ - "getOutput" - ] - ], - [ - "stateSpace", - [ - "stateSpace" - ] - ], - [ - "output", - [ - "output" - ] - ], - [ - "StateDerivative", - [ - "StateDerivative" - ] - ], - [ - "assert stateSpace.order==order", - [ - "assert stateSpace.order==order" - ] - ], - [ - "GetDerivative", - [ - "GetDerivative" - ] - ], - [ - "Integrate", - [ - "Integrate" - ] - ], - [ - "ContinuousStateSpaceDynamics", - [ - "ContinuousStateSpaceDynamics" - ] - ], - [ - "getDerivative", - [ - "getDerivative" - ] - ], - [ - "redefines getNextState", - [ - "redefines getNextState", - "redefines getNextState", - "redefines getNextState", - "redefines getNextState" - ] - ], - [ - "We compute nextState by Integrate...", - [ - "We compute nextState by Integrate..." - ] - ], - [ - "integrate", - [ - "integrate" - ] - ], - [ - "ContinuousStateSpaceDynamics may cause...", - [ - "ContinuousStateSpaceDynamics may cause..." - ] - ], - [ - "GetDifference", - [ - "GetDifference" - ] - ], - [ - "DiscreteStateSpaceDynamics", - [ - "DiscreteStateSpaceDynamics" - ] - ], - [ - "getDifference", - [ - "getDifference" - ] - ], - [ - "diff", - [ - "diff" - ] - ], - [ - "EvaluationFunction", - [ - "EvaluationFunction" - ] - ], - [ - "TradeStudyObjective", - [ - "TradeStudyObjective" - ] - ], - [ - "selectedAlternative", - [ - "selectedAlternative" - ] - ], - [ - "eval", - [ - "eval" - ] - ], - [ - "best", - [ - "best" - ] - ], - [ - "{eval(selectedAlternative)...}", - [ - "{eval(selectedAlternative)...}" - ] - ], - [ - "MinimizeObjective", - [ - "MinimizeObjective" - ] - ], - [ - "redefines best", - [ - "redefines best", - "redefines best", - "redefines best", - "redefines best" - ] - ], - [ - "MaximizeObjective", - [ - "MaximizeObjective" - ] - ], - [ - "TradeStudy", - [ - "TradeStudy" - ] - ], - [ - "studyAlternatives", - [ - "studyAlternatives" - ] - ], - [ - "evaluationFunction", - [ - "evaluationFunction" - ] - ], - [ - "tradeStudyObjective", - [ - "tradeStudyObjective" - ] - ], - [ - "redefines selectedAlternative", - [ - "redefines selectedAlternative", - "redefines selectedAlternative" - ] - ], - [ - "redefines alternatives", - [ - "redefines alternatives" - ] - ], - [ - "redefines eval", - [ - "redefines eval", - "redefines eval" - ] - ], - [ - "causes", - [ - "causes", - "causes" - ] - ], - [ - "effects", - [ - "effects", - "effects" - ] - ], - [ - "Multicausation", - [ - "Multicausation" - ] - ], - [ - "redefines causes", - [ - "redefines causes" - ] - ], - [ - "redefines effects", - [ - "redefines effects" - ] - ], - [ - "end: causes.startShot", - [ - "end: causes.startShot" - ] - ], - [ - "end: effects", - [ - "end: effects" - ] - ], - [ - "nCauses", - [ - "nCauses" - ] - ], - [ - "nEffects", - [ - "nEffects" - ] - ], - [ - "multicausations", - [ - "multicausations" - ] - ], - [ - "Causation", - [ - "Causation" - ] - ], - [ - "theCause", - [ - "theCause" - ] - ], - [ - "redefines source", - [ - "redefines source", - "redefines source", - "redefines source", - "redefines source", - "redefines source", - "redefines source", - "redefines source", - "redefines source", - "redefines source", - "redefines source" - ] - ], - [ - "theEffect", - [ - "theEffect" - ] - ], - [ - "redefines target", - [ - "redefines target", - "redefines target", - "redefines target", - "redefines target", - "redefines target", - "redefines target", - "redefines target", - "redefines target", - "redefines target", - "redefines target" - ] - ], - [ - "causations", - [ - "causations" - ] - ], - [ - "cause", - [ - "cause" - ] - ], - [ - "redefines annotatedElement", - [ - "redefines annotatedElement", - "redefines annotatedElement", - "redefines annotatedElement", - "redefines annotatedElement", - "redefines annotatedElement" - ] - ], - [ - "redefines baseType", - [ - "redefines baseType", - "redefines baseType", - "redefines baseType", - "redefines baseType", - "redefines baseType", - "redefines baseType", - "redefines baseType", - "redefines baseType", - "redefines baseType" - ] - ], - [ - "effect", - [ - "effect", - "effect" - ] - ], - [ - "CausationMetadata", - [ - "CausationMetadata" - ] - ], - [ - "isNecessary", - [ - "isNecessary" - ] - ], - [ - "isSufficient", - [ - "isSufficient", - "Systems::isSufficient" - ] - ], - [ - "probability", - [ - "probability", - "probability" - ] - ], - [ - "multicausation", - [ - "multicausation" - ] - ], - [ - "causation", - [ - "causation" - ] - ], - [ - "PlanarCurve", - [ - "PlanarCurve" - ] - ], - [ - "redefines length", - [ - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length", - "redefines length" - ] - ], - [ - "redefines outerSpaceDimension", - [ - "redefines outerSpaceDimension", - "redefines outerSpaceDimension", - "redefines outerSpaceDimension", - "redefines outerSpaceDimension", - "redefines outerSpaceDimension", - "redefines outerSpaceDimension", - "redefines outerSpaceDimension", - "redefines outerSpaceDimension" - ] - ], - [ - "PlanarSurface", - [ - "PlanarSurface" - ] - ], - [ - "redefines area", - [ - "redefines area", - "redefines area" - ] - ], - [ - "redefines shape", - [ - "redefines shape", - "redefines shape", - "redefines shape", - "redefines shape", - "redefines shape", - "redefines shape" - ] - ], - [ - "Line", - [ - "Line" - ] - ], - [ - "Path", - [ - "Path" - ] - ], - [ - "redefines faces", - [ - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces", - "redefines faces" - ] - ], - [ - "redefines edges", - [ - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges", - "redefines edges" - ] - ], - [ - "redefines vertices", - [ - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices", - "redefines vertices" - ] - ], - [ - "semiMajorAxis", - [ - "semiMajorAxis" - ] - ], - [ - "semiMinorAxis", - [ - "semiMinorAxis" - ] - ], - [ - "xoffset", - [ - "xoffset" - ] - ], - [ - "yoffset", - [ - "yoffset" - ] - ], - [ - "baseLength", - [ - "baseLength" - ] - ], - [ - "baseWidth", - [ - "baseWidth" - ] - ], - [ - "ConicSection", - [ - "ConicSection" - ] - ], - [ - "Ellipse", - [ - "Ellipse" - ] - ], - [ - "redefines semiMajorAxis", - [ - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis", - "redefines semiMajorAxis" - ] - ], - [ - "redefines semiMinorAxis", - [ - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis", - "redefines semiMinorAxis" - ] - ], - [ - "Circle", - [ - "Circle" - ] - ], - [ - "redefines radius", - [ - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius", - "redefines radius" - ] - ], - [ - "length", - [ - "length" - ] - ], - [ - "Parabola", - [ - "Parabola" - ] - ], - [ - "focalDistance", - [ - "focalDistance", - "focalDistance" - ] - ], - [ - "Hyperbola", - [ - "Hyperbola" - ] - ], - [ - "tranverseAxis", - [ - "tranverseAxis" - ] - ], - [ - "conjugateAxis", - [ - "conjugateAxis", - "conjugateAxis" - ] - ], - [ - "Polygon", - [ - "Polygon" - ] - ], - [ - "redefines isClosed", - [ - "redefines isClosed", - "redefines isClosed", - "redefines isClosed", - "redefines isClosed", - "redefines isClosed", - "redefines isClosed", - "redefines isClosed", - "redefines isClosed", - "redefines isClosed" - ] - ], - [ - "Triangle", - [ - "Triangle" - ] - ], - [ - "redefines width", - [ - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width", - "redefines width" - ] - ], - [ - "redefines xoffset", - [ - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset", - "redefines xoffset" - ] - ], - [ - "base", - [ - "base", - "base", - "base" - ] - ], - [ - "e2", - [ - "e2", - "e2" - ] - ], - [ - "e3", - [ - "e3", - "e3" - ] - ], - [ - "v12", - [ - "v12", - "v12" - ] - ], - [ - "apex", - [ - "apex", - "apex", - "apex" - ] - ], - [ - "v31", - [ - "v31" - ] - ], - [ - "RightTriangle", - [ - "RightTriangle" - ] - ], - [ - "redefines e2", - [ - "redefines e2", - "redefines e2", - "redefines e2", - "redefines e2" - ] - ], - [ - "hypotenuse", - [ - "hypotenuse" - ] - ], - [ - "redefines e3", - [ - "redefines e3", - "redefines e3", - "redefines e3" - ] - ], - [ - "Quadrilateral", - [ - "Quadrilateral" - ] - ], - [ - "e1", - [ - "e1" - ] - ], - [ - "e4", - [ - "e4" - ] - ], - [ - "v23", - [ - "v23" - ] - ], - [ - "v34", - [ - "v34" - ] - ], - [ - "v41", - [ - "v41" - ] - ], - [ - "Rectangle", - [ - "Rectangle" - ] - ], - [ - "redefines e1", - [ - "redefines e1", - "redefines e1" - ] - ], - [ - "redefines e4", - [ - "redefines e4", - "redefines e4" - ] - ], - [ - "Shell", - [ - "Shell" - ] - ], - [ - "Disc", - [ - "Disc" - ] - ], - [ - "redefines innerSpaceDimension", - [ - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension", - "redefines innerSpaceDimension" - ] - ], - [ - "CircularDisc", - [ - "CircularDisc" - ] - ], - [ - "ConicSurface", - [ - "ConicSurface" - ] - ], - [ - "redefines genus", - [ - "redefines genus", - "redefines genus", - "redefines genus", - "redefines genus", - "redefines genus", - "redefines genus", - "redefines genus", - "redefines genus" - ] - ], - [ - "Ellipsoid", - [ - "Ellipsoid" - ] - ], - [ - "semiAxis1", - [ - "semiAxis1" - ] - ], - [ - "semiAxis2", - [ - "semiAxis2" - ] - ], - [ - "semiAxis3", - [ - "semiAxis3" - ] - ], - [ - "Sphere", - [ - "Sphere" - ] - ], - [ - "redefines semiAxis1", - [ - "redefines semiAxis1", - "redefines semiAxis1" - ] - ], - [ - "redefines semiAxis2", - [ - "redefines semiAxis2", - "redefines semiAxis2" - ] - ], - [ - "redefines semiAxis3", - [ - "redefines semiAxis3", - "redefines semiAxis3" - ] - ], - [ - "Paraboloid", - [ - "Paraboloid" - ] - ], - [ - "Hyperboloid", - [ - "Hyperboloid" - ] - ], - [ - "transverseAxis", - [ - "transverseAxis" - ] - ], - [ - "Toroid", - [ - "Toroid" - ] - ], - [ - "revolutionRadius", - [ - "revolutionRadius" - ] - ], - [ - "revolvedCurve", - [ - "revolvedCurve" - ] - ], - [ - "Torus", - [ - "Torus" - ] - ], - [ - "majorRadius", - [ - "majorRadius" - ] - ], - [ - "redefines revolutionRadius", - [ - "redefines revolutionRadius" - ] - ], - [ - "minorRadius", - [ - "minorRadius" - ] - ], - [ - "redefines revolvedCurve", - [ - "redefines revolvedCurve", - "redefines revolvedCurve", - "redefines revolvedCurve", - "redefines revolvedCurve" - ] - ], - [ - "RectangularToroid", - [ - "RectangularToroid" - ] - ], - [ - "rectangleLength", - [ - "rectangleLength" - ] - ], - [ - "rectangleWidth", - [ - "rectangleWidth" - ] - ], - [ - "ConeOrCylinder", - [ - "ConeOrCylinder" - ] - ], - [ - "redefines height", - [ - "redefines height", - "redefines height", - "redefines height", - "redefines height", - "redefines height", - "redefines height", - "redefines height", - "redefines height" - ] - ], - [ - "redefines yoffset", - [ - "redefines yoffset", - "redefines yoffset", - "redefines yoffset", - "redefines yoffset", - "redefines yoffset", - "redefines yoffset", - "redefines yoffset", - "redefines yoffset" - ] - ], - [ - "af", - [ - "af" - ] - ], - [ - "cf", - [ - "cf" - ] - ], - [ - "be", - [ - "be" - ] - ], - [ - "ae", - [ - "ae" - ] - ], - [ - "Bind face edges to specific edges", - [ - "Bind face edges to specific edges", - "Bind face edges to specific edges", - "Bind face edges to specific edges", - "Bind face edges to specific edges" - ] - ], - [ - "[0..*]base.edges = [0..*]be", - [ - "[0..*]base.edges = [0..*]be" - ] - ], - [ - "[0..*]cf.edges = [0..*]be", - [ - "[0..*]cf.edges = [0..*]be" - ] - ], - [ - "Meeting edges", - [ - "Meeting edges", - "Meeting edges", - "Meeting edges" - ] - ], - [ - "[1]be → [1]be", - [ - "[1]be → [1]be" - ] - ], - [ - "end: be", - [ - "end: be", - "end: be" - ] - ], - [ - "Cone", - [ - "Cone" - ] - ], - [ - "Bind face vertices to specific vertices", - [ - "Bind face vertices to specific vertices" - ] - ], - [ - "[0..*]cf.vertices = [0..*]apex", - [ - "[0..*]cf.vertices = [0..*]apex" - ] - ], - [ - "EccentricCone", - [ - "EccentricCone" - ] - ], - [ - "CircularCone", - [ - "CircularCone" - ] - ], - [ - "redefines base", - [ - "redefines base", - "redefines base", - "redefines base", - "redefines base", - "redefines base", - "redefines base", - "redefines base", - "redefines base" - ] - ], - [ - "RightCircularCone", - [ - "RightCircularCone" - ] - ], - [ - "redefines num", - [ - "redefines num", - "redefines num", - "redefines num", - "redefines num", - "redefines num", - "redefines num", - "redefines num", - "redefines num", - "redefines num", - "redefines num" - ] - ], - [ - "Cylinder", - [ - "Cylinder" - ] - ], - [ - "redefines af", - [ - "redefines af", - "redefines af", - "redefines af", - "redefines af" - ] - ], - [ - "[0..*]cf.edges = [0..*]ae", - [ - "[0..*]cf.edges = [0..*]ae" - ] - ], - [ - "[1]ae → [1]ae", - [ - "[1]ae → [1]ae" - ] - ], - [ - "end: ae", - [ - "end: ae", - "end: ae" - ] - ], - [ - "EccentricCylinder", - [ - "EccentricCylinder" - ] - ], - [ - "CircularCylinder", - [ - "CircularCylinder" - ] - ], - [ - "RightCircularCylinder", - [ - "RightCircularCylinder" - ] - ], - [ - "Polyhedron", - [ - "Polyhedron" - ] - ], - [ - "CuboidOrTriangularPrism", - [ - "CuboidOrTriangularPrism" - ] - ], - [ - "tf", - [ - "tf" - ] - ], - [ - "bf", - [ - "bf" - ] - ], - [ - "ff", - [ - "ff" - ] - ], - [ - "rf", - [ - "rf" - ] - ], - [ - "slf", - [ - "slf" - ] - ], - [ - "srf", - [ - "srf" - ] - ], - [ - "tfe", - [ - "tfe" - ] - ], - [ - "tre", - [ - "tre" - ] - ], - [ - "tsle", - [ - "tsle" - ] - ], - [ - "tsre", - [ - "tsre" - ] - ], - [ - "bfe", - [ - "bfe" - ] - ], - [ - "bre", - [ - "bre" - ] - ], - [ - "bsle", - [ - "bsle" - ] - ], - [ - "bsre", - [ - "bsre" - ] - ], - [ - "ufle", - [ - "ufle" - ] - ], - [ - "ufre", - [ - "ufre" - ] - ], - [ - "urle", - [ - "urle" - ] - ], - [ - "urre", - [ - "urre" - ] - ], - [ - "tflv", - [ - "tflv" - ] - ], - [ - "tfrv", - [ - "tfrv" - ] - ], - [ - "trlv", - [ - "trlv" - ] - ], - [ - "trrv", - [ - "trrv" - ] - ], - [ - "bflv", - [ - "bflv" - ] - ], - [ - "bfrv", - [ - "bfrv" - ] - ], - [ - "brlv", - [ - "brlv" - ] - ], - [ - "brrv", - [ - "brrv" - ] - ], - [ - "[0..1]tf.edges = [0..1]tfe", - [ - "[0..1]tf.edges = [0..1]tfe" - ] - ], - [ - "[0..1]tf.edges = [0..1]tre", - [ - "[0..1]tf.edges = [0..1]tre" - ] - ], - [ - "[0..1]tf.edges = [0..1]tsle", - [ - "[0..1]tf.edges = [0..1]tsle" - ] - ], - [ - "[0..1]bf.edges = [0..1]bfe", - [ - "[0..1]bf.edges = [0..1]bfe" - ] - ], - [ - "[0..1]bf.edges = [0..1]bre", - [ - "[0..1]bf.edges = [0..1]bre" - ] - ], - [ - "[0..1]bf.edges = [0..1]bsle", - [ - "[0..1]bf.edges = [0..1]bsle" - ] - ], - [ - "[0..1]bf.edges = [0..1]bsre", - [ - "[0..1]bf.edges = [0..1]bsre" - ] - ], - [ - "[0..1]ff.edges = [0..1]tfe", - [ - "[0..1]ff.edges = [0..1]tfe" - ] - ], - [ - "[0..1]ff.edges = [0..1]bfe", - [ - "[0..1]ff.edges = [0..1]bfe" - ] - ], - [ - "[0..1]ff.edges = [0..1]ufle", - [ - "[0..1]ff.edges = [0..1]ufle" - ] - ], - [ - "[0..1]rf.edges = [0..1]tre", - [ - "[0..1]rf.edges = [0..1]tre" - ] - ], - [ - "[0..1]rf.edges = [0..1]bre", - [ - "[0..1]rf.edges = [0..1]bre" - ] - ], - [ - "[0..1]rf.edges = [0..1]urle", - [ - "[0..1]rf.edges = [0..1]urle" - ] - ], - [ - "Bind edge vertices to specific vertices", - [ - "Bind edge vertices to specific vertices", - "Bind edge vertices to specific vertices", - "Bind edge vertices to specific vertices" - ] - ], - [ - "[0..1]tfe.vertices = [0..1]tflv", - [ - "[0..1]tfe.vertices = [0..1]tflv" - ] - ], - [ - "[0..1]tre.vertices = [0..1]trlv", - [ - "[0..1]tre.vertices = [0..1]trlv" - ] - ], - [ - "[0..1]tsle.vertices = [0..1]tflv", - [ - "[0..1]tsle.vertices = [0..1]tflv" - ] - ], - [ - "[0..1]tsle.vertices = [0..1]trlv", - [ - "[0..1]tsle.vertices = [0..1]trlv" - ] - ], - [ - "[0..1]bfe.vertices = [0..1]bflv", - [ - "[0..1]bfe.vertices = [0..1]bflv" - ] - ], - [ - "[0..1]bfe.vertices = [0..1]bfrv", - [ - "[0..1]bfe.vertices = [0..1]bfrv" - ] - ], - [ - "[0..1]bre.vertices = [0..1]brlv", - [ - "[0..1]bre.vertices = [0..1]brlv" - ] - ], - [ - "[0..1]bre.vertices = [0..1]brrv", - [ - "[0..1]bre.vertices = [0..1]brrv" - ] - ], - [ - "[0..1]bsle.vertices = [0..1]bflv", - [ - "[0..1]bsle.vertices = [0..1]bflv" - ] - ], - [ - "[0..1]bsle.vertices = [0..1]brlv", - [ - "[0..1]bsle.vertices = [0..1]brlv" - ] - ], - [ - "[0..1]bsre.vertices = [0..1]bfrv", - [ - "[0..1]bsre.vertices = [0..1]bfrv" - ] - ], - [ - "[0..1]bsre.vertices = [0..1]brrv", - [ - "[0..1]bsre.vertices = [0..1]brrv" - ] - ], - [ - "[0..1]ufle.vertices = [0..1]tflv", - [ - "[0..1]ufle.vertices = [0..1]tflv" - ] - ], - [ - "[0..1]ufle.vertices = [0..1]bflv", - [ - "[0..1]ufle.vertices = [0..1]bflv" - ] - ], - [ - "[0..1]urle.vertices = [0..1]trlv", - [ - "[0..1]urle.vertices = [0..1]trlv" - ] - ], - [ - "[0..1]urle.vertices = [0..1]brlv", - [ - "[0..1]urle.vertices = [0..1]brlv" - ] - ], - [ - "[1]tfe → [1]tfe", - [ - "[1]tfe → [1]tfe" - ] - ], - [ - "end: tfe", - [ - "end: tfe", - "end: tfe" - ] - ], - [ - "[1]tre → [1]tre", - [ - "[1]tre → [1]tre" - ] - ], - [ - "end: tre", - [ - "end: tre", - "end: tre" - ] - ], - [ - "[1]tsle → [1]tsle", - [ - "[1]tsle → [1]tsle" - ] - ], - [ - "end: tsle", - [ - "end: tsle", - "end: tsle" - ] - ], - [ - "[1]bfe → [1]bfe", - [ - "[1]bfe → [1]bfe" - ] - ], - [ - "end: bfe", - [ - "end: bfe", - "end: bfe" - ] - ], - [ - "[1]bre → [1]bre", - [ - "[1]bre → [1]bre" - ] - ], - [ - "end: bre", - [ - "end: bre", - "end: bre" - ] - ], - [ - "[1]bsle → [1]bsle", - [ - "[1]bsle → [1]bsle" - ] - ], - [ - "end: bsle", - [ - "end: bsle", - "end: bsle" - ] - ], - [ - "[1]bsre → [1]bsre", - [ - "[1]bsre → [1]bsre", - "[1]bsre → [1]bsre", - "[1]bsre → [1]bsre" - ] - ], - [ - "end: bsre", - [ - "end: bsre", - "end: bsre", - "end: bsre", - "end: bsre", - "end: bsre", - "end: bsre" - ] - ], - [ - "[1]ufle → [1]ufle", - [ - "[1]ufle → [1]ufle" - ] - ], - [ - "end: ufle", - [ - "end: ufle", - "end: ufle" - ] - ], - [ - "[1]urle → [1]urle", - [ - "[1]urle → [1]urle" - ] - ], - [ - "end: urle", - [ - "end: urle", - "end: urle" - ] - ], - [ - "Meeting vertices", - [ - "Meeting vertices", - "Meeting vertices" - ] - ], - [ - "[2]tflv → [2]tflv", - [ - "[2]tflv → [2]tflv" - ] - ], - [ - "end: tflv", - [ - "end: tflv", - "end: tflv" - ] - ], - [ - "[2]trlv → [2]trlv", - [ - "[2]trlv → [2]trlv" - ] - ], - [ - "end: trlv", - [ - "end: trlv", - "end: trlv" - ] - ], - [ - "[2]bflv → [2]bflv", - [ - "[2]bflv → [2]bflv" - ] - ], - [ - "end: bflv", - [ - "end: bflv", - "end: bflv" - ] - ], - [ - "[2]bfrv → [2]bfrv", - [ - "[2]bfrv → [2]bfrv" - ] - ], - [ - "end: bfrv", - [ - "end: bfrv", - "end: bfrv" - ] - ], - [ - "[2]brlv → [2]brlv", - [ - "[2]brlv → [2]brlv" - ] - ], - [ - "end: brlv", - [ - "end: brlv", - "end: brlv" - ] - ], - [ - "[2]brrv → [2]brrv", - [ - "[2]brrv → [2]brrv" - ] - ], - [ - "end: brrv", - [ - "end: brrv", - "end: brrv" - ] - ], - [ - "TriangularPrism", - [ - "TriangularPrism" - ] - ], - [ - "redefines ff", - [ - "redefines ff", - "redefines ff", - "redefines ff", - "redefines ff", - "redefines ff", - "redefines ff", - "redefines ff", - "redefines ff" - ] - ], - [ - "redefines rf", - [ - "redefines rf", - "redefines rf", - "redefines rf", - "redefines rf", - "redefines rf", - "redefines rf", - "redefines rf", - "redefines rf" - ] - ], - [ - "[0..1]tf.edges = [0..1]bsre", - [ - "[0..1]tf.edges = [0..1]bsre" - ] - ], - [ - "[0..1]tfe.vertices = [0..1]bfrv", - [ - "[0..1]tfe.vertices = [0..1]bfrv" - ] - ], - [ - "[0..1]tre.vertices = [0..1]bfrv", - [ - "[0..1]tre.vertices = [0..1]bfrv" - ] - ], - [ - "RightTriangularPrism", - [ - "RightTriangularPrism" - ] - ], - [ - "redefines tf", - [ - "redefines tf", - "redefines tf", - "redefines tf", - "redefines tf" - ] - ], - [ - "redefines bf", - [ - "redefines bf", - "redefines bf", - "redefines bf", - "redefines bf" - ] - ], - [ - "redefines slf", - [ - "redefines slf", - "redefines slf", - "redefines slf", - "redefines slf" - ] - ], - [ - "redefines srf", - [ - "redefines srf", - "redefines srf", - "redefines srf", - "redefines srf" - ] - ], - [ - "redefines tfe", - [ - "redefines tfe", - "redefines tfe" - ] - ], - [ - "redefines tre", - [ - "redefines tre", - "redefines tre" - ] - ], - [ - "redefines tsle", - [ - "redefines tsle", - "redefines tsle" - ] - ], - [ - "redefines bfe", - [ - "redefines bfe", - "redefines bfe" - ] - ], - [ - "redefines bre", - [ - "redefines bre", - "redefines bre" - ] - ], - [ - "redefines bsle", - [ - "redefines bsle", - "redefines bsle" - ] - ], - [ - "redefines bsre", - [ - "redefines bsre", - "redefines bsre" - ] - ], - [ - "redefines ufle", - [ - "redefines ufle", - "redefines ufle" - ] - ], - [ - "redefines urle", - [ - "redefines urle", - "redefines urle" - ] - ], - [ - "Cuboid", - [ - "Cuboid" - ] - ], - [ - "[0..1]tf.edges = [0..1]tsre", - [ - "[0..1]tf.edges = [0..1]tsre" - ] - ], - [ - "[0..1]ff.edges = [0..1]ufre", - [ - "[0..1]ff.edges = [0..1]ufre" - ] - ], - [ - "[0..1]rf.edges = [0..1]urre", - [ - "[0..1]rf.edges = [0..1]urre" - ] - ], - [ - "[0..1]srf.edges = [0..1]tsre", - [ - "[0..1]srf.edges = [0..1]tsre" - ] - ], - [ - "[0..1]srf.edges = [0..1]bsre", - [ - "[0..1]srf.edges = [0..1]bsre" - ] - ], - [ - "[0..1]srf.edges = [0..1]ufre", - [ - "[0..1]srf.edges = [0..1]ufre" - ] - ], - [ - "[0..1]srf.edges = [0..1]urre", - [ - "[0..1]srf.edges = [0..1]urre" - ] - ], - [ - "[0..1]tfe.vertices = [0..1]tfrv", - [ - "[0..1]tfe.vertices = [0..1]tfrv" - ] - ], - [ - "[0..1]tre.vertices = [0..1]trrv", - [ - "[0..1]tre.vertices = [0..1]trrv" - ] - ], - [ - "[0..1]tsre.vertices = [0..1]tfrv", - [ - "[0..1]tsre.vertices = [0..1]tfrv" - ] - ], - [ - "[0..1]tsre.vertices = [0..1]trrv", - [ - "[0..1]tsre.vertices = [0..1]trrv" - ] - ], - [ - "[0..1]ufre.vertices = [0..1]tfrv", - [ - "[0..1]ufre.vertices = [0..1]tfrv" - ] - ], - [ - "[0..1]ufre.vertices = [0..1]bfrv", - [ - "[0..1]ufre.vertices = [0..1]bfrv" - ] - ], - [ - "[0..1]urre.vertices = [0..1]trrv", - [ - "[0..1]urre.vertices = [0..1]trrv" - ] - ], - [ - "[0..1]urre.vertices = [0..1]brrv", - [ - "[0..1]urre.vertices = [0..1]brrv" - ] - ], - [ - "[1]tsre → [1]tsre", - [ - "[1]tsre → [1]tsre" - ] - ], - [ - "end: tsre", - [ - "end: tsre", - "end: tsre" - ] - ], - [ - "[1]ufre → [1]ufre", - [ - "[1]ufre → [1]ufre" - ] - ], - [ - "end: ufre", - [ - "end: ufre", - "end: ufre" - ] - ], - [ - "[1]urre → [1]urre", - [ - "[1]urre → [1]urre" - ] - ], - [ - "end: urre", - [ - "end: urre", - "end: urre" - ] - ], - [ - "[2]tfrv → [2]tfrv", - [ - "[2]tfrv → [2]tfrv" - ] - ], - [ - "end: tfrv", - [ - "end: tfrv", - "end: tfrv" - ] - ], - [ - "[2]trrv → [2]trrv", - [ - "[2]trrv → [2]trrv" - ] - ], - [ - "end: trrv", - [ - "end: trrv", - "end: trrv" - ] - ], - [ - "RectangularCuboid", - [ - "RectangularCuboid" - ] - ], - [ - "Pyramid", - [ - "Pyramid" - ] - ], - [ - "wall", - [ - "wall" - ] - ], - [ - "wallNumber", - [ - "wallNumber" - ] - ], - [ - "Base to wall and wall to wall edge...", - [ - "Base to wall and wall to wall edge..." - ] - ], - [ - "Meeting apices.", - [ - "Meeting apices." - ] - ], - [ - "[wallNumber]apex → [wallNumber]apex", - [ - "[wallNumber]apex → [wallNumber]apex" - ] - ], - [ - "end: apex", - [ - "end: apex", - "end: apex" - ] - ], - [ - "Tetrahedron", - [ - "Tetrahedron" - ] - ], - [ - "redefines baseLength", - [ - "redefines baseLength", - "redefines baseLength", - "redefines baseLength", - "redefines baseLength" - ] - ], - [ - "redefines baseWidth", - [ - "redefines baseWidth", - "redefines baseWidth", - "redefines baseWidth", - "redefines baseWidth" - ] - ], - [ - "RectangularPyramid", - [ - "RectangularPyramid" - ] - ], - [ - "SpatialItem", - [ - "SpatialItem" - ] - ], - [ - "redefines localClock", - [ - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock", - "redefines localClock" - ] - ], - [ - "coordinateFrame", - [ - "coordinateFrame" - ] - ], - [ - "originPoint", - [ - "originPoint" - ] - ], - [ - "subSpatialItems", - [ - "subSpatialItems" - ] - ], - [ - "subSpatialParts", - [ - "subSpatialParts" - ] - ], - [ - "componentItems", - [ - "componentItems" - ] - ], - [ - "redefines coordinateFrame", - [ - "redefines coordinateFrame", - "redefines coordinateFrame" - ] - ], - [ - "redefines mRefs", - [ - "redefines mRefs", - "redefines mRefs", - "redefines mRefs", - "redefines mRefs" - ] - ], - [ - "redefines transformation", - [ - "redefines transformation", - "redefines transformation" - ] - ], - [ - "cunionNum", - [ - "cunionNum" - ] - ], - [ - "componentUnion", - [ - "componentUnion" - ] - ], - [ - "componentParts", - [ - "componentParts" - ] - ], - [ - "PositionOf", - [ - "PositionOf" - ] - ], - [ - "redefines 'frame'", - [ - "redefines 'frame'", - "redefines 'frame'", - "redefines 'frame'", - "redefines 'frame'" - ] - ], - [ - "redefines mRef", - [ - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef", - "redefines mRef" - ] - ], - [ - "CurrentPositionOf", - [ - "CurrentPositionOf" - ] - ], - [ - "DisplacementOf", - [ - "DisplacementOf" - ] - ], - [ - "CurrentDisplacementOf", - [ - "CurrentDisplacementOf" - ] - ], - [ - "Image", - [ - "Image" - ] - ], - [ - "content", - [ - "content" - ] - ], - [ - "encoding", - [ - "encoding" - ] - ], - [ - "location", - [ - "location" - ] - ], - [ - "Icon", - [ - "Icon" - ] - ], - [ - "fullImage", - [ - "fullImage" - ] - ], - [ - "smallImage", - [ - "smallImage" - ] - ], - [ - "StatusKind", - [ - "StatusKind" - ] - ], - [ - "StatusInfo", - [ - "StatusInfo" - ] - ], - [ - "originator", - [ - "originator" - ] - ], - [ - "owner", - [ - "owner" - ] - ], - [ - "status", - [ - "status" - ] - ], - [ - "risk", - [ - "risk" - ] - ], - [ - "Rationale", - [ - "Rationale" - ] - ], - [ - "text", - [ - "text", - "text", - "Systems::text", - "Systems::text" - ] - ], - [ - "Issue", - [ - "Issue" - ] - ], - [ - "refinement", - [ - "refinement" - ] - ], - [ - "measuresOfEffectiveness", - [ - "measuresOfEffectiveness" - ] - ], - [ - "measuresOfPerformance", - [ - "measuresOfPerformance" - ] - ], - [ - "moe", - [ - "moe" - ] - ], - [ - "mop", - [ - "mop" - ] - ], - [ - "Level", - [ - "Level" - ] - ], - [ - "LevelEnum", - [ - "LevelEnum" - ] - ], - [ - "RiskLevel", - [ - "RiskLevel" - ] - ], - [ - "impact", - [ - "impact" - ] - ], - [ - "RiskLevelEnum", - [ - "RiskLevelEnum" - ] - ], - [ - "Risk", - [ - "Risk" - ] - ], - [ - "totalRisk", - [ - "totalRisk" - ] - ], - [ - "technicalRisk", - [ - "technicalRisk" - ] - ], - [ - "scheduleRisk", - [ - "scheduleRisk" - ] - ], - [ - "costRisk", - [ - "costRisk" - ] - ], - [ - "Parse Error", - [ - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error", - "Parse Error" - ] - ], - [ - "TensorMeasurementReference", - [ - "TensorMeasurementReference" - ] - ], - [ - "isBound", - [ - "isBound" - ] - ], - [ - "order", - [ - "order" - ] - ], - [ - "redefines rank", - [ - "redefines rank" - ] - ], - [ - "mRefs", - [ - "mRefs" - ] - ], - [ - "definitionalQuantityValues", - [ - "definitionalQuantityValues" - ] - ], - [ - "VectorMeasurementReference", - [ - "VectorMeasurementReference" - ] - ], - [ - "redefines dimensions", - [ - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions", - "redefines dimensions" - ] - ], - [ - "isOrthogonal", - [ - "isOrthogonal" - ] - ], - [ - "ScalarMeasurementReference", - [ - "ScalarMeasurementReference" - ] - ], - [ - "redefines isOrthogonal", - [ - "redefines isOrthogonal", - "redefines isOrthogonal" - ] - ], - [ - "quantityDimension", - [ - "quantityDimension" - ] - ], - [ - "CoordinateFrame", - [ - "CoordinateFrame" - ] - ], - [ - "transformation", - [ - "transformation" - ] - ], - [ - "3dCoordinateFrame", - [ - "3dCoordinateFrame" - ] - ], - [ - "CoordinateTransformation", - [ - "CoordinateTransformation" - ] - ], - [ - "source", - [ - "source", - "source", - "source", - "source", - "Systems::source" - ] - ], - [ - "target", - [ - "target", - "target", - "target", - "target", - "Systems::target" - ] - ], - [ - "CoordinateFramePlacement", - [ - "CoordinateFramePlacement" - ] - ], - [ - "origin", - [ - "origin" - ] - ], - [ - "basisDirections", - [ - "basisDirections" - ] - ], - [ - "TranslationOrRotation", - [ - "TranslationOrRotation" - ] - ], - [ - "Translation", - [ - "Translation" - ] - ], - [ - "translationVector", - [ - "translationVector", - "translationVector" - ] - ], - [ - "Rotation", - [ - "Rotation" - ] - ], - [ - "axisDirection", - [ - "axisDirection" - ] - ], - [ - "angle", - [ - "angle" - ] - ], - [ - "redefines angularMeasure", - [ - "redefines angularMeasure" - ] - ], - [ - "isIntrinsic", - [ - "isIntrinsic" - ] - ], - [ - "TranslationRotationSequence", - [ - "TranslationRotationSequence" - ] - ], - [ - "AffineTransformationMatrix3d", - [ - "AffineTransformationMatrix3d" - ] - ], - [ - "rotationMatrix", - [ - "rotationMatrix" - ] - ], - [ - "NullTransformation", - [ - "NullTransformation" - ] - ], - [ - "redefines rotationMatrix", - [ - "redefines rotationMatrix", - "redefines rotationMatrix" - ] - ], - [ - "redefines translationVector", - [ - "redefines translationVector", - "redefines translationVector" - ] - ], - [ - "nullTransformation", - [ - "nullTransformation" - ] - ], - [ - "MeasurementUnit", - [ - "MeasurementUnit" - ] - ], - [ - "redefines isBound", - [ - "redefines isBound", - "redefines isBound", - "redefines isBound", - "redefines isBound" - ] - ], - [ - "unitPowerFactors", - [ - "unitPowerFactors" - ] - ], - [ - "unitConversion", - [ - "unitConversion" - ] - ], - [ - "SimpleUnit", - [ - "SimpleUnit" - ] - ], - [ - "simpleUnitSelf", - [ - "simpleUnitSelf" - ] - ], - [ - "redefines unitPowerFactors", - [ - "redefines unitPowerFactors", - "redefines unitPowerFactors", - "redefines unitPowerFactors", - "redefines unitPowerFactors" - ] - ], - [ - "unit", - [ - "unit", - "unit", - "unit" - ] - ], - [ - "redefines unit", - [ - "redefines unit" - ] - ], - [ - "exponent", - [ - "exponent", - "exponent", - "exponent" - ] - ], - [ - "redefines exponent", - [ - "redefines exponent" - ] - ], - [ - "DerivedUnit", - [ - "DerivedUnit" - ] - ], - [ - "UnitPowerFactor", - [ - "UnitPowerFactor" - ] - ], - [ - "UnitConversion", - [ - "UnitConversion" - ] - ], - [ - "referenceUnit", - [ - "referenceUnit" - ] - ], - [ - "conversionFactor", - [ - "conversionFactor", - "conversionFactor", - "conversionFactor" - ] - ], - [ - "isExact", - [ - "isExact" - ] - ], - [ - "ConversionByConvention", - [ - "ConversionByConvention" - ] - ], - [ - "ConversionByPrefix", - [ - "ConversionByPrefix" - ] - ], - [ - "prefix", - [ - "prefix" - ] - ], - [ - "redefines conversionFactor", - [ - "redefines conversionFactor" - ] - ], - [ - "UnitPrefix", - [ - "UnitPrefix" - ] - ], - [ - "longName", - [ - "longName", - "longName" - ] - ], - [ - "symbol", - [ - "symbol" - ] - ], - [ - "MeasurementScale", - [ - "MeasurementScale" - ] - ], - [ - "quantityValueMapping", - [ - "quantityValueMapping" - ] - ], - [ - "OrdinalScale", - [ - "OrdinalScale" - ] - ], - [ - "IntervalScale", - [ - "IntervalScale" - ] - ], - [ - "CyclicRatioScale", - [ - "CyclicRatioScale" - ] - ], - [ - "modulus", - [ - "modulus" - ] - ], - [ - "LogarithmicScale", - [ - "LogarithmicScale" - ] - ], - [ - "logarithmBase", - [ - "logarithmBase" - ] - ], - [ - "factor", - [ - "factor" - ] - ], - [ - "referenceQuantity", - [ - "referenceQuantity" - ] - ], - [ - "QuantityValueMapping", - [ - "QuantityValueMapping" - ] - ], - [ - "mappedQuantityValue", - [ - "mappedQuantityValue" - ] - ], - [ - "referenceQuantityValue", - [ - "referenceQuantityValue" - ] - ], - [ - "DefinitionalQuantityValue", - [ - "DefinitionalQuantityValue" - ] - ], - [ - "num", - [ - "num" - ] - ], - [ - "definition", - [ - "definition", - "Systems::definition" - ] - ], - [ - "DimensionOneUnit", - [ - "DimensionOneUnit" - ] - ], - [ - "DimensionOneValue", - [ - "DimensionOneValue" - ] - ], - [ - "dimensionOneQuantities", - [ - "dimensionOneQuantities" - ] - ], - [ - "one", - [ - "one", - "one" - ] - ], - [ - "CountValue", - [ - "CountValue" - ] - ], - [ - "countQuantities", - [ - "countQuantities" - ] - ], - [ - "SystemOfUnits", - [ - "SystemOfUnits" - ] - ], - [ - "systemOfQuantities", - [ - "systemOfQuantities" - ] - ], - [ - "baseUnits", - [ - "baseUnits" - ] - ], - [ - "VerifyUnitPowerFactors", - [ - "VerifyUnitPowerFactors" - ] - ], - [ - "[", - [ - "[" - ] - ], - [ - "isZero", - [ - "isZero" - ] - ], - [ - "isUnit", - [ - "isUnit" - ] - ], - [ - "abs", - [ - "abs" - ] - ], - [ - "+", - [ - "+" - ] - ], - [ - "-", - [ - "-" - ] - ], - [ - "*", - [ - "*" - ] - ], - [ - "/", - [ - "/" - ] - ], - [ - "**", - [ - "**" - ] - ], - [ - "^", - [ - "^" - ] - ], - [ - "<", - [ - "<" - ] - ], - [ - ">", - [ - ">" - ] - ], - [ - "<=", - [ - "<=" - ] - ], - [ - ">=", - [ - ">=" - ] - ], - [ - "max", - [ - "max" - ] - ], - [ - "min", - [ - "min" - ] - ], - [ - "==", - [ - "==" - ] - ], - [ - "sqrt", - [ - "sqrt" - ] - ], - [ - "floor", - [ - "floor" - ] - ], - [ - "round", - [ - "round" - ] - ], - [ - "ToString", - [ - "ToString" - ] - ], - [ - "ToInteger", - [ - "ToInteger" - ] - ], - [ - "ToRational", - [ - "ToRational" - ] - ], - [ - "ToReal", - [ - "ToReal" - ] - ], - [ - "ToDimensionOneValue", - [ - "ToDimensionOneValue" - ] - ], - [ - "sum", - [ - "sum" - ] - ], - [ - "zero", - [ - "zero" - ] - ], - [ - "product", - [ - "product" - ] - ], - [ - "ConvertQuantity", - [ - "ConvertQuantity" - ] - ], - [ - "originalRequirements", - [ - "originalRequirements" - ] - ], - [ - "derivedRequirements", - [ - "derivedRequirements" - ] - ], - [ - "Derivation", - [ - "Derivation" - ] - ], - [ - "originalRequirement", - [ - "originalRequirement" - ] - ], - [ - "redefines originalRequirements", - [ - "redefines originalRequirements" - ] - ], - [ - "redefines derivedRequirements", - [ - "redefines derivedRequirements", - "redefines derivedRequirements" - ] - ], - [ - "derivations", - [ - "derivations" - ] - ], - [ - "original", - [ - "original" - ] - ], - [ - "derive", - [ - "derive" - ] - ], - [ - "derivation", - [ - "derivation" - ] - ], - [ - "unnamed", - [ - "unnamed", - "unnamed", - "unnamed", - "unnamed", - "unnamed", - "unnamed", - "unnamed", - "unnamed" - ] - ], - [ - "self", - [ - "self", - "self", - "self", - "self", - "self", - "self", - "self" - ] - ], - [ - "redefines self", - [ - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self", - "redefines self" - ] - ], - [ - "incomingTransfers", - [ - "incomingTransfers" - ] - ], - [ - "redefines incomingTransfers", - [ - "redefines incomingTransfers" - ] - ], - [ - "start", - [ - "start", - "start", - "start", - "start", - "start" - ] - ], - [ - "redefines startShot", - [ - "redefines startShot", - "redefines startShot", - "redefines startShot" - ] - ], - [ - "done", - [ - "done", - "done", - "done", - "done", - "done" - ] - ], - [ - "redefines endShot", - [ - "redefines endShot", - "redefines endShot", - "redefines endShot" - ] - ], - [ - "subactions", - [ - "subactions" - ] - ], - [ - "redefines this", - [ - "redefines this", - "redefines this", - "redefines this", - "redefines this", - "redefines this", - "redefines this", - "redefines this", - "redefines this" - ] - ], - [ - "sendSubactions", - [ - "sendSubactions" - ] - ], - [ - "acceptSubactions", - [ - "acceptSubactions" - ] - ], - [ - "terminateSubactions", - [ - "terminateSubactions" - ] - ], - [ - "controls", - [ - "controls" - ] - ], - [ - "merges", - [ - "merges" - ] - ], - [ - "decisions", - [ - "decisions" - ] - ], - [ - "joins", - [ - "joins" - ] - ], - [ - "forks", - [ - "forks" - ] - ], - [ - "transitions", - [ - "transitions" - ] - ], - [ - "decisionTransitions", - [ - "decisionTransitions" - ] - ], - [ - "assignments", - [ - "assignments" - ] - ], - [ - "ifSubactions", - [ - "ifSubactions" - ] - ], - [ - "loops", - [ - "loops" - ] - ], - [ - "whileLoops", - [ - "whileLoops" - ] - ], - [ - "forLoops", - [ - "forLoops" - ] - ], - [ - "s", - [ - "s" - ] - ], - [ - "actions", - [ - "actions" - ] - ], - [ - "SendAction", - [ - "SendAction" - ] - ], - [ - "redefines payload", - [ - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload", - "redefines payload" - ] - ], - [ - "redefines sentTransfer", - [ - "redefines sentTransfer" - ] - ], - [ - "sendActions", - [ - "sendActions" - ] - ], - [ - "AcceptMessageAction", - [ - "AcceptMessageAction" - ] - ], - [ - "redefines acceptedTransfer", - [ - "redefines acceptedTransfer" - ] - ], - [ - "AcceptAction", - [ - "AcceptAction" - ] - ], - [ - "redefines acceptedMessage", - [ - "redefines acceptedMessage" - ] - ], - [ - "aState", - [ - "aState" - ] - ], - [ - "aTransition", - [ - "aTransition" - ] - ], - [ - "payload = aState.aTransition.apayload", - [ - "payload = aState.aTransition.apayload" - ] - ], - [ - "acceptActions", - [ - "acceptActions" - ] - ], - [ - "TerminateAction", - [ - "TerminateAction" - ] - ], - [ - "terminatedOccurrence", - [ - "terminatedOccurrence", - "terminatedOccurrence" - ] - ], - [ - "terminateOccurrence", - [ - "terminateOccurrence" - ] - ], - [ - "terminateActions", - [ - "terminateActions" - ] - ], - [ - "ControlAction", - [ - "ControlAction" - ] - ], - [ - "start = done", - [ - "start = done" - ] - ], - [ - "MergeAction", - [ - "MergeAction" - ] - ], - [ - "DecisionAction", - [ - "DecisionAction" - ] - ], - [ - "JoinAction", - [ - "JoinAction" - ] - ], - [ - "ForkAction", - [ - "ForkAction" - ] - ], - [ - "TransitionAction", - [ - "TransitionAction" - ] - ], - [ - "redefines transitionLinkSource", - [ - "redefines transitionLinkSource", - "redefines transitionLinkSource", - "redefines transitionLinkSource" - ] - ], - [ - "redefines trigger", - [ - "redefines trigger" - ] - ], - [ - "redefines triggerTarget", - [ - "redefines triggerTarget" - ] - ], - [ - "accepter", - [ - "accepter" - ] - ], - [ - "redefines 'accept'", - [ - "redefines 'accept'" - ] - ], - [ - "receiver = accepter.receiver", - [ - "receiver = accepter.receiver", - "receiver = accepter.receiver" - ] - ], - [ - "acceptedMessage = accepter.acceptedMessage", - [ - "acceptedMessage = accepter.acceptedMessage" - ] - ], - [ - "redefines effect", - [ - "redefines effect", - "redefines effect", - "redefines effect" - ] - ], - [ - "DecisionTransitionAction", - [ - "DecisionTransitionAction" - ] - ], - [ - "redefines accepter", - [ - "redefines accepter", - "redefines accepter" - ] - ], - [ - "transitionActions", - [ - "transitionActions" - ] - ], - [ - "AssignmentAction", - [ - "AssignmentAction" - ] - ], - [ - "assignmentActions", - [ - "assignmentActions" - ] - ], - [ - "IfThenAction", - [ - "IfThenAction" - ] - ], - [ - "thenClause", - [ - "thenClause", - "thenClause" - ] - ], - [ - "is", - [ - "is" - ] - ], - [ - "IfThenElseAction", - [ - "IfThenElseAction" - ] - ], - [ - "elseClause", - [ - "elseClause" - ] - ], - [ - "ifThenActions", - [ - "ifThenActions" - ] - ], - [ - "ifThenElseActions", - [ - "ifThenElseActions" - ] - ], - [ - "LoopAction", - [ - "LoopAction" - ] - ], - [ - "body", - [ - "body", - "body", - "body" - ] - ], - [ - "WhileLoopAction", - [ - "WhileLoopAction" - ] - ], - [ - "ForLoopAction", - [ - "ForLoopAction" - ] - ], - [ - "perform: body", - [ - "perform: body" - ] - ], - [ - "loopActions", - [ - "loopActions" - ] - ], - [ - "whileLoopActions", - [ - "whileLoopActions" - ] - ], - [ - "forLoopActions", - [ - "forLoopActions" - ] - ], - [ - "Allocation", - [ - "Allocation" - ] - ], - [ - "allocations", - [ - "allocations" - ] - ], - [ - "AnalysisCase", - [ - "AnalysisCase" - ] - ], - [ - "subj", - [ - "subj", - "subj", - "subj", - "subj", - "subj", - "subj", - "subj", - "subj" - ] - ], - [ - "redefines subj", - [ - "redefines subj", - "redefines subj", - "redefines subj", - "redefines subj" - ] - ], - [ - "subAnalysisCases", - [ - "subAnalysisCases" - ] - ], - [ - "analysisCases", - [ - "analysisCases" - ] - ], - [ - "Calculation", - [ - "Calculation" - ] - ], - [ - "subcalculations", - [ - "subcalculations" - ] - ], - [ - "calculations", - [ - "calculations" - ] - ], - [ - "actors", - [ - "actors", - "actors" - ] - ], - [ - "obj", - [ - "obj", - "obj", - "obj" - ] - ], - [ - "BinaryConnection", - [ - "BinaryConnection" - ] - ], - [ - "connections", - [ - "connections" - ] - ], - [ - "binaryConnections", - [ - "binaryConnections" - ] - ], - [ - "ConstraintCheck", - [ - "ConstraintCheck" - ] - ], - [ - "constraintChecks", - [ - "constraintChecks" - ] - ], - [ - "assertedConstraintChecks", - [ - "assertedConstraintChecks" - ] - ], - [ - "negatedConstraintChecks", - [ - "negatedConstraintChecks" - ] - ], - [ - "MessageAction", - [ - "MessageAction" - ] - ], - [ - "Message", - [ - "Message" - ] - ], - [ - "thisConnection", - [ - "thisConnection" - ] - ], - [ - "sourceEvent → [1]source", - [ - "sourceEvent → [1]source" - ] - ], - [ - "end: sourceEvent", - [ - "end: sourceEvent" - ] - ], - [ - "end: source", - [ - "end: source" - ] - ], - [ - "targetEvent → [1]target", - [ - "targetEvent → [1]target" - ] - ], - [ - "end: targetEvent", - [ - "end: targetEvent" - ] - ], - [ - "end: target", - [ - "end: target" - ] - ], - [ - "seBeforeNum", - [ - "seBeforeNum" - ] - ], - [ - "teAfterNum", - [ - "teAfterNum" - ] - ], - [ - "SuccessionFlow", - [ - "SuccessionFlow" - ] - ], - [ - "messages", - [ - "messages" - ] - ], - [ - "subsets messages", - [ - "subsets messages" - ] - ], - [ - "subsets flows", - [ - "subsets flows" - ] - ], - [ - "excludingOnce", - [ - "excludingOnce" - ] - ], - [ - "position", - [ - "position" - ] - ], - [ - "redefines participant", - [ - "redefines participant", - "redefines participant", - "redefines participant", - "redefines participant", - "redefines participant" - ] - ], - [ - "BinaryInterface", - [ - "BinaryInterface" - ] - ], - [ - "interfaces", - [ - "interfaces" - ] - ], - [ - "binaryInterfaces", - [ - "binaryInterfaces" - ] - ], - [ - "shape", - [ - "shape" - ] - ], - [ - "redefines spaceBoundary", - [ - "redefines spaceBoundary" - ] - ], - [ - "envelopingShapes", - [ - "envelopingShapes" - ] - ], - [ - "envelopedItem", - [ - "envelopedItem" - ] - ], - [ - "redefines that", - [ - "redefines that" - ] - ], - [ - "envelopingItem", - [ - "envelopingItem" - ] - ], - [ - "boundingShapes", - [ - "boundingShapes" - ] - ], - [ - "boundingShape", - [ - "boundingShape" - ] - ], - [ - "face", - [ - "face" - ] - ], - [ - "inter", - [ - "inter", - "inter" - ] - ], - [ - "edge", - [ - "edge" - ] - ], - [ - "voids", - [ - "voids" - ] - ], - [ - "redefines innerSpaceOccurrences", - [ - "redefines innerSpaceOccurrences" - ] - ], - [ - "isSolid", - [ - "isSolid" - ] - ], - [ - "subitems", - [ - "subitems" - ] - ], - [ - "redefines incomingTransferSort", - [ - "redefines incomingTransferSort", - "redefines incomingTransferSort" - ] - ], - [ - "subparts", - [ - "subparts" - ] - ], - [ - "checkedConstraints", - [ - "checkedConstraints" - ] - ], - [ - "Touches", - [ - "Touches" - ] - ], - [ - "touchedItemToo", - [ - "touchedItemToo" - ] - ], - [ - "redefines separateSpaceToo", - [ - "redefines separateSpaceToo" - ] - ], - [ - "redefines thisOccurrence", - [ - "redefines thisOccurrence" - ] - ], - [ - "touchedItem", - [ - "touchedItem" - ] - ], - [ - "redefines separateSpace", - [ - "redefines separateSpace" - ] - ], - [ - "redefines thatOccurrence", - [ - "redefines thatOccurrence" - ] - ], - [ - "items", - [ - "items" - ] - ], - [ - "MetadataItem", - [ - "MetadataItem" - ] - ], - [ - "metadataItems", - [ - "metadataItems" - ] - ], - [ - "redefines start", - [ - "redefines start", - "redefines start", - "redefines start" - ] - ], - [ - "redefines done", - [ - "redefines done", - "redefines done", - "redefines done" - ] - ], - [ - "ownedPorts", - [ - "ownedPorts" - ] - ], - [ - "performedActions", - [ - "performedActions" - ] - ], - [ - "ownedActions", - [ - "ownedActions" - ] - ], - [ - "this", - [ - "this" - ] - ], - [ - "exhibitedStates", - [ - "exhibitedStates" - ] - ], - [ - "ownedStates", - [ - "ownedStates" - ] - ], - [ - "parts", - [ - "parts" - ] - ], - [ - "subports", - [ - "subports" - ] - ], - [ - "interfacingPorts", - [ - "interfacingPorts" - ] - ], - [ - "redefines outgoingTransfersFromSelf", - [ - "redefines outgoingTransfersFromSelf" - ] - ], - [ - "ports", - [ - "ports" - ] - ], - [ - "RequirementConstraintCheck", - [ - "RequirementConstraintCheck" - ] - ], - [ - "assumptions", - [ - "assumptions", - "assumptions" - ] - ], - [ - "constraints", - [ - "constraints", - "constraints" - ] - ], - [ - "RequirementCheck", - [ - "RequirementCheck" - ] - ], - [ - "stakeholders", - [ - "stakeholders" - ] - ], - [ - "Note: assumptions and constraints are...", - [ - "Note: assumptions and constraints are..." - ] - ], - [ - "redefines assumptions", - [ - "redefines assumptions" - ] - ], - [ - "redefines constraints", - [ - "redefines constraints" - ] - ], - [ - "subrequirements", - [ - "subrequirements" - ] - ], - [ - "concerns", - [ - "concerns" - ] - ], - [ - "FunctionalRequirementCheck", - [ - "FunctionalRequirementCheck" - ] - ], - [ - "(anonymous subject)", - [ - "(anonymous subject)", - "(anonymous subject)", - "(anonymous subject)", - "(anonymous subject)", - "(anonymous subject)" - ] - ], - [ - "InterfaceRequirementCheck", - [ - "InterfaceRequirementCheck" - ] - ], - [ - "PerformanceRequirementCheck", - [ - "PerformanceRequirementCheck" - ] - ], - [ - "PhysicalRequirementCheck", - [ - "PhysicalRequirementCheck" - ] - ], - [ - "DesignConstraintCheck", - [ - "DesignConstraintCheck" - ] - ], - [ - "ConcernCheck", - [ - "ConcernCheck" - ] - ], - [ - "requirementChecks", - [ - "requirementChecks" - ] - ], - [ - "satisfiedRequirementChecks", - [ - "satisfiedRequirementChecks" - ] - ], - [ - "notSatisfiedRequirementChecks", - [ - "notSatisfiedRequirementChecks" - ] - ], - [ - "concernChecks", - [ - "concernChecks" - ] - ], - [ - "gv", - [ - "gv" - ] - ], - [ - "iv", - [ - "iv" - ] - ], - [ - "afv", - [ - "afv" - ] - ], - [ - "stv", - [ - "stv" - ] - ], - [ - "sv", - [ - "sv" - ] - ], - [ - "gev", - [ - "gev" - ] - ], - [ - "grv", - [ - "grv" - ] - ], - [ - "bv", - [ - "bv" - ] - ], - [ - "StateAction", - [ - "StateAction" - ] - ], - [ - "entryAction", - [ - "entryAction", - "Systems::entryAction", - "Systems::entryAction" - ] - ], - [ - "redefines 'entry'", - [ - "redefines 'entry'" - ] - ], - [ - "doAction", - [ - "doAction", - "Systems::doAction", - "Systems::doAction" - ] - ], - [ - "redefines 'do'", - [ - "redefines 'do'" - ] - ], - [ - "exitAction", - [ - "exitAction", - "Systems::exitAction", - "Systems::exitAction" - ] - ], - [ - "redefines 'exit'", - [ - "redefines 'exit'" - ] - ], - [ - "redefines isTriggerDuring", - [ - "redefines isTriggerDuring", - "redefines isTriggerDuring" - ] - ], - [ - "redefines subactions", - [ - "redefines subactions", - "redefines subactions" - ] - ], - [ - "substates", - [ - "substates" - ] - ], - [ - "exclusiveStates", - [ - "exclusiveStates" - ] - ], - [ - "stateTransitions", - [ - "stateTransitions" - ] - ], - [ - "StateTransitionAction", - [ - "StateTransitionAction" - ] - ], - [ - "redefines receiver", - [ - "redefines receiver" - ] - ], - [ - "payload = accepter.payload", - [ - "payload = accepter.payload" - ] - ], - [ - "stateActions", - [ - "stateActions" - ] - ], - [ - "Systems", - [ - "Systems" - ] - ], - [ - "AcceptActionUsage", - [ - "Systems::AcceptActionUsage" - ] - ], - [ - "receiverArgument", - [ - "Systems::receiverArgument", - "Systems::receiverArgument" - ] - ], - [ - "payloadParameter", - [ - "Systems::payloadParameter" - ] - ], - [ - "payloadArgument", - [ - "Systems::payloadArgument", - "Systems::payloadArgument" - ] - ], - [ - "ActionDefinition", - [ - "Systems::ActionDefinition" - ] - ], - [ - "action", - [ - "Systems::action", - "Systems::action" - ] - ], - [ - "ActionUsage", - [ - "Systems::ActionUsage" - ] - ], - [ - "actionDefinition", - [ - "Systems::actionDefinition" - ] - ], - [ - "redefines behavior", - [ - "Systems::redefines behavior" - ] - ], - [ - "redefines occurrenceDefinition", - [ - "Systems::redefines occurrenceDefinition", - "Systems::redefines occurrenceDefinition" - ] - ], - [ - "ActorMembership", - [ - "Systems::ActorMembership" - ] - ], - [ - "ownedActorParameter", - [ - "Systems::ownedActorParameter" - ] - ], - [ - "redefines ownedMemberParameter", - [ - "Systems::redefines ownedMemberParameter", - "Systems::redefines ownedMemberParameter", - "Systems::redefines ownedMemberParameter" - ] - ], - [ - "AllocationDefinition", - [ - "Systems::AllocationDefinition" - ] - ], - [ - "allocation", - [ - "Systems::allocation" - ] - ], - [ - "AllocationUsage", - [ - "Systems::AllocationUsage" - ] - ], - [ - "allocationDefinition", - [ - "Systems::allocationDefinition" - ] - ], - [ - "redefines connectionDefinition", - [ - "Systems::redefines connectionDefinition", - "Systems::redefines connectionDefinition" - ] - ], - [ - "AnalysisCaseDefinition", - [ - "Systems::AnalysisCaseDefinition" - ] - ], - [ - "resultExpression", - [ - "Systems::resultExpression", - "Systems::resultExpression" - ] - ], - [ - "AnalysisCaseUsage", - [ - "Systems::AnalysisCaseUsage" - ] - ], - [ - "analysisCaseDefinition", - [ - "Systems::analysisCaseDefinition" - ] - ], - [ - "redefines caseDefinition", - [ - "Systems::redefines caseDefinition", - "Systems::redefines caseDefinition" - ] - ], - [ - "AssertConstraintUsage", - [ - "Systems::AssertConstraintUsage" - ] - ], - [ - "assertedConstraint", - [ - "Systems::assertedConstraint" - ] - ], - [ - "AssignmentActionUsage", - [ - "Systems::AssignmentActionUsage" - ] - ], - [ - "targetArgument", - [ - "Systems::targetArgument" - ] - ], - [ - "valueExpression", - [ - "Systems::valueExpression" - ] - ], - [ - "referent", - [ - "Systems::referent" - ] - ], - [ - "AttributeDefinition", - [ - "Systems::AttributeDefinition" - ] - ], - [ - "AttributeUsage", - [ - "Systems::AttributeUsage" - ] - ], - [ - "isReference", - [ - "Systems::isReference", - "Systems::isReference", - "Systems::isReference", - "Systems::isReference" - ] - ], - [ - "redefines isReference", - [ - "Systems::redefines isReference", - "Systems::redefines isReference", - "Systems::redefines isReference" - ] - ], - [ - "attributeDefinition", - [ - "Systems::attributeDefinition" - ] - ], - [ - "redefines definition", - [ - "Systems::redefines definition", - "Systems::redefines definition" - ] - ], - [ - "BindingConnectorAsUsage", - [ - "Systems::BindingConnectorAsUsage" - ] - ], - [ - "CalculationDefinition", - [ - "Systems::CalculationDefinition" - ] - ], - [ - "CalculationUsage", - [ - "Systems::CalculationUsage" - ] - ], - [ - "calculationDefinition", - [ - "Systems::calculationDefinition" - ] - ], - [ - "redefines function", - [ - "Systems::redefines function" - ] - ], - [ - "redefines actionDefinition", - [ - "Systems::redefines actionDefinition", - "Systems::redefines actionDefinition", - "Systems::redefines actionDefinition" - ] - ], - [ - "CaseDefinition", - [ - "Systems::CaseDefinition" - ] - ], - [ - "objectiveRequirement", - [ - "Systems::objectiveRequirement", - "Systems::objectiveRequirement" - ] - ], - [ - "subjectParameter", - [ - "Systems::subjectParameter", - "Systems::subjectParameter", - "Systems::subjectParameter", - "Systems::subjectParameter" - ] - ], - [ - "actorParameter", - [ - "Systems::actorParameter", - "Systems::actorParameter", - "Systems::actorParameter", - "Systems::actorParameter" - ] - ], - [ - "CaseUsage", - [ - "Systems::CaseUsage" - ] - ], - [ - "caseDefinition", - [ - "Systems::caseDefinition" - ] - ], - [ - "redefines calculationDefinition", - [ - "Systems::redefines calculationDefinition" - ] - ], - [ - "ConcernDefinition", - [ - "Systems::ConcernDefinition" - ] - ], - [ - "ConcernUsage", - [ - "Systems::ConcernUsage" - ] - ], - [ - "concernDefinition", - [ - "Systems::concernDefinition" - ] - ], - [ - "redefines requirementDefinition", - [ - "Systems::redefines requirementDefinition", - "Systems::redefines requirementDefinition" - ] - ], - [ - "ConjugatedPortDefinition", - [ - "Systems::ConjugatedPortDefinition" - ] - ], - [ - "originalPortDefinition", - [ - "Systems::originalPortDefinition", - "Systems::originalPortDefinition" - ] - ], - [ - "redefines owningNamespace", - [ - "Systems::redefines owningNamespace" - ] - ], - [ - "ownedPortConjugator", - [ - "Systems::ownedPortConjugator" - ] - ], - [ - "redefines ownedConjugator", - [ - "Systems::redefines ownedConjugator" - ] - ], - [ - "ConjugatedPortTyping", - [ - "Systems::ConjugatedPortTyping" - ] - ], - [ - "conjugatedPortDefinition", - [ - "Systems::conjugatedPortDefinition", - "Systems::conjugatedPortDefinition", - "Systems::conjugatedPortDefinition" - ] - ], - [ - "redefines type", - [ - "Systems::redefines type", - "Systems::redefines type" - ] - ], - [ - "portDefinition", - [ - "Systems::portDefinition", - "Systems::portDefinition" - ] - ], - [ - "ConnectionDefinition", - [ - "Systems::ConnectionDefinition" - ] - ], - [ - "redefines isSufficient", - [ - "Systems::redefines isSufficient" - ] - ], - [ - "connectionEnd", - [ - "Systems::connectionEnd" - ] - ], - [ - "redefines associationEnd", - [ - "Systems::redefines associationEnd", - "Systems::redefines associationEnd" - ] - ], - [ - "ConnectionUsage", - [ - "Systems::ConnectionUsage" - ] - ], - [ - "connectionDefinition", - [ - "Systems::connectionDefinition" - ] - ], - [ - "redefines association", - [ - "Systems::redefines association" - ] - ], - [ - "ConnectorAsUsage", - [ - "Systems::ConnectorAsUsage" - ] - ], - [ - "ConstraintDefinition", - [ - "Systems::ConstraintDefinition" - ] - ], - [ - "ConstraintUsage", - [ - "Systems::ConstraintUsage" - ] - ], - [ - "constraintDefinition", - [ - "Systems::constraintDefinition" - ] - ], - [ - "redefines predicate", - [ - "Systems::redefines predicate" - ] - ], - [ - "ControlNode", - [ - "Systems::ControlNode" - ] - ], - [ - "DecisionNode", - [ - "Systems::DecisionNode" - ] - ], - [ - "Definition", - [ - "Systems::Definition" - ] - ], - [ - "isVariation", - [ - "Systems::isVariation", - "Systems::isVariation", - "Systems::isVariation" - ] - ], - [ - "variant", - [ - "Systems::variant", - "Systems::variant" - ] - ], - [ - "variantMembership", - [ - "Systems::variantMembership", - "Systems::variantMembership" - ] - ], - [ - "usage", - [ - "Systems::usage", - "Systems::usage" - ] - ], - [ - "directedUsage", - [ - "Systems::directedUsage", - "Systems::directedUsage" - ] - ], - [ - "ownedUsage", - [ - "Systems::ownedUsage" - ] - ], - [ - "ownedReference", - [ - "Systems::ownedReference" - ] - ], - [ - "ownedAttribute", - [ - "Systems::ownedAttribute" - ] - ], - [ - "ownedEnumeration", - [ - "Systems::ownedEnumeration" - ] - ], - [ - "ownedOccurrence", - [ - "Systems::ownedOccurrence" - ] - ], - [ - "ownedItem", - [ - "Systems::ownedItem" - ] - ], - [ - "ownedPart", - [ - "Systems::ownedPart" - ] - ], - [ - "ownedPort", - [ - "Systems::ownedPort" - ] - ], - [ - "ownedConnection", - [ - "Systems::ownedConnection" - ] - ], - [ - "ownedFlow", - [ - "Systems::ownedFlow" - ] - ], - [ - "ownedInterface", - [ - "Systems::ownedInterface" - ] - ], - [ - "ownedAllocation", - [ - "Systems::ownedAllocation" - ] - ], - [ - "ownedAction", - [ - "Systems::ownedAction" - ] - ], - [ - "ownedState", - [ - "Systems::ownedState" - ] - ], - [ - "ownedTransition", - [ - "Systems::ownedTransition" - ] - ], - [ - "ownedCalculation", - [ - "Systems::ownedCalculation" - ] - ], - [ - "ownedConstraint", - [ - "Systems::ownedConstraint", - "Systems::ownedConstraint" - ] - ], - [ - "ownedRequirement", - [ - "Systems::ownedRequirement", - "Systems::ownedRequirement" - ] - ], - [ - "ownedConcern", - [ - "Systems::ownedConcern", - "Systems::ownedConcern" - ] - ], - [ - "ownedCase", - [ - "Systems::ownedCase" - ] - ], - [ - "ownedAnalysisCase", - [ - "Systems::ownedAnalysisCase" - ] - ], - [ - "ownedVerificationCase", - [ - "Systems::ownedVerificationCase" - ] - ], - [ - "ownedUseCase", - [ - "Systems::ownedUseCase" - ] - ], - [ - "ownedView", - [ - "Systems::ownedView" - ] - ], - [ - "ownedViewpoint", - [ - "Systems::ownedViewpoint" - ] - ], - [ - "ownedRendering", - [ - "Systems::ownedRendering", - "Systems::ownedRendering" - ] - ], - [ - "ownedMetadata", - [ - "Systems::ownedMetadata" - ] - ], - [ - "EnumerationDefinition", - [ - "Systems::EnumerationDefinition" - ] - ], - [ - "redefines isVariation", - [ - "Systems::redefines isVariation" - ] - ], - [ - "enumeratedValue", - [ - "Systems::enumeratedValue" - ] - ], - [ - "redefines 'variant'", - [ - "Systems::redefines 'variant'" - ] - ], - [ - "EnumerationUsage", - [ - "Systems::EnumerationUsage" - ] - ], - [ - "enumerationDefinition", - [ - "Systems::enumerationDefinition" - ] - ], - [ - "redefines attributeDefinition", - [ - "Systems::redefines attributeDefinition" - ] - ], - [ - "EventOccurrenceUsage", - [ - "Systems::EventOccurrenceUsage" - ] - ], - [ - "eventOccurrence", - [ - "Systems::eventOccurrence" - ] - ], - [ - "ExhibitStateUsage", - [ - "Systems::ExhibitStateUsage" - ] - ], - [ - "exhibitedState", - [ - "Systems::exhibitedState" - ] - ], - [ - "redefines performedAction", - [ - "Systems::redefines performedAction", - "Systems::redefines performedAction" - ] - ], - [ - "Expose", - [ - "Systems::Expose" - ] - ], - [ - "visibility", - [ - "Systems::visibility" - ] - ], - [ - "redefines visibility", - [ - "Systems::redefines visibility" - ] - ], - [ - "isImportAll", - [ - "Systems::isImportAll" - ] - ], - [ - "redefines isImportAll", - [ - "Systems::redefines isImportAll" - ] - ], - [ - "FlowDefinition", - [ - "Systems::FlowDefinition" - ] - ], - [ - "flowEnd", - [ - "Systems::flowEnd" - ] - ], - [ - "FlowUsage", - [ - "Systems::FlowUsage" - ] - ], - [ - "flowDefinition", - [ - "Systems::flowDefinition" - ] - ], - [ - "redefines interaction", - [ - "Systems::redefines interaction" - ] - ], - [ - "ForLoopActionUsage", - [ - "Systems::ForLoopActionUsage" - ] - ], - [ - "seqArgument", - [ - "Systems::seqArgument" - ] - ], - [ - "loopVariable", - [ - "Systems::loopVariable" - ] - ], - [ - "ForkNode", - [ - "Systems::ForkNode" - ] - ], - [ - "FramedConcernMembership", - [ - "Systems::FramedConcernMembership" - ] - ], - [ - "kind", - [ - "Systems::kind", - "Systems::kind", - "Systems::kind", - "Systems::kind", - "Systems::kind", - "Systems::kind", - "kind" - ] - ], - [ - "redefines kind", - [ - "Systems::redefines kind", - "Systems::redefines kind" - ] - ], - [ - "redefines ownedConstraint", - [ - "Systems::redefines ownedConstraint", - "Systems::redefines ownedConstraint" - ] - ], - [ - "referencedConcern", - [ - "Systems::referencedConcern" - ] - ], - [ - "redefines referencedConstraint", - [ - "Systems::redefines referencedConstraint", - "Systems::redefines referencedConstraint" - ] - ], - [ - "IfActionUsage", - [ - "Systems::IfActionUsage" - ] - ], - [ - "elseAction", - [ - "Systems::elseAction" - ] - ], - [ - "thenAction", - [ - "Systems::thenAction" - ] - ], - [ - "ifArgument", - [ - "Systems::ifArgument" - ] - ], - [ - "IncludeUseCaseUsage", - [ - "Systems::IncludeUseCaseUsage" - ] - ], - [ - "useCaseIncluded", - [ - "Systems::useCaseIncluded" - ] - ], - [ - "InterfaceDefinition", - [ - "Systems::InterfaceDefinition" - ] - ], - [ - "interfaceEnd", - [ - "Systems::interfaceEnd" - ] - ], - [ - "redefines connectionEnd", - [ - "Systems::redefines connectionEnd" - ] - ], - [ - "InterfaceUsage", - [ - "Systems::InterfaceUsage" - ] - ], - [ - "interfaceDefinition", - [ - "Systems::interfaceDefinition" - ] - ], - [ - "ItemDefinition", - [ - "Systems::ItemDefinition" - ] - ], - [ - "ItemUsage", - [ - "Systems::ItemUsage" - ] - ], - [ - "itemDefinition", - [ - "Systems::itemDefinition" - ] - ], - [ - "JoinNode", - [ - "Systems::JoinNode" - ] - ], - [ - "LoopActionUsage", - [ - "Systems::LoopActionUsage" - ] - ], - [ - "bodyAction", - [ - "Systems::bodyAction" - ] - ], - [ - "MembershipExpose", - [ - "Systems::MembershipExpose" - ] - ], - [ - "MergeNode", - [ - "Systems::MergeNode" - ] - ], - [ - "MetadataDefinition", - [ - "Systems::MetadataDefinition" - ] - ], - [ - "MetadataUsage", - [ - "Systems::MetadataUsage" - ] - ], - [ - "metadataDefinition", - [ - "Systems::metadataDefinition" - ] - ], - [ - "redefines itemDefinition", - [ - "Systems::redefines itemDefinition" - ] - ], - [ - "redefines metaclass", - [ - "Systems::redefines metaclass" - ] - ], - [ - "NamespaceExpose", - [ - "Systems::NamespaceExpose" - ] - ], - [ - "ObjectiveMembership", - [ - "Systems::ObjectiveMembership" - ] - ], - [ - "ownedObjectiveRequirement", - [ - "Systems::ownedObjectiveRequirement" - ] - ], - [ - "redefines ownedMemberFeature", - [ - "Systems::redefines ownedMemberFeature", - "Systems::redefines ownedMemberFeature", - "Systems::redefines ownedMemberFeature", - "Systems::redefines ownedMemberFeature", - "Systems::redefines ownedMemberFeature" - ] - ], - [ - "OccurrenceDefinition", - [ - "Systems::OccurrenceDefinition" - ] - ], - [ - "isIndividual", - [ - "Systems::isIndividual", - "Systems::isIndividual" - ] - ], - [ - "OccurrenceUsage", - [ - "Systems::OccurrenceUsage" - ] - ], - [ - "portionKind", - [ - "Systems::portionKind" - ] - ], - [ - "occurrenceDefinition", - [ - "Systems::occurrenceDefinition" - ] - ], - [ - "individualDefinition", - [ - "Systems::individualDefinition" - ] - ], - [ - "PartDefinition", - [ - "Systems::PartDefinition" - ] - ], - [ - "PartUsage", - [ - "Systems::PartUsage" - ] - ], - [ - "partDefinition", - [ - "Systems::partDefinition" - ] - ], - [ - "PerformActionUsage", - [ - "Systems::PerformActionUsage" - ] - ], - [ - "performedAction", - [ - "Systems::performedAction" - ] - ], - [ - "redefines eventOccurrence", - [ - "Systems::redefines eventOccurrence" - ] - ], - [ - "PortConjugation", - [ - "Systems::PortConjugation" - ] - ], - [ - "redefines originalType", - [ - "Systems::redefines originalType" - ] - ], - [ - "redefines owningType", - [ - "Systems::redefines owningType" - ] - ], - [ - "PortDefinition", - [ - "Systems::PortDefinition" - ] - ], - [ - "PortUsage", - [ - "Systems::PortUsage" - ] - ], - [ - "PortionKind", - [ - "Systems::PortionKind" - ] - ], - [ - "ReferenceUsage", - [ - "Systems::ReferenceUsage" - ] - ], - [ - "RenderingDefinition", - [ - "Systems::RenderingDefinition" - ] - ], - [ - "rendering", - [ - "Systems::rendering" - ] - ], - [ - "RenderingUsage", - [ - "Systems::RenderingUsage" - ] - ], - [ - "renderingDefinition", - [ - "Systems::renderingDefinition" - ] - ], - [ - "redefines partDefinition", - [ - "Systems::redefines partDefinition", - "Systems::redefines partDefinition" - ] - ], - [ - "RequirementConstraintKind", - [ - "Systems::RequirementConstraintKind" - ] - ], - [ - "RequirementConstraintMembership", - [ - "Systems::RequirementConstraintMembership" - ] - ], - [ - "referencedConstraint", - [ - "Systems::referencedConstraint" - ] - ], - [ - "RequirementDefinition", - [ - "Systems::RequirementDefinition" - ] - ], - [ - "reqId", - [ - "Systems::reqId", - "Systems::reqId" - ] - ], - [ - "redefines declaredShortName", - [ - "Systems::redefines declaredShortName", - "Systems::redefines declaredShortName" - ] - ], - [ - "stakeholderParameter", - [ - "Systems::stakeholderParameter", - "Systems::stakeholderParameter" - ] - ], - [ - "assumedConstraint", - [ - "Systems::assumedConstraint", - "Systems::assumedConstraint" - ] - ], - [ - "requiredConstraint", - [ - "Systems::requiredConstraint", - "Systems::requiredConstraint" - ] - ], - [ - "framedConcern", - [ - "Systems::framedConcern", - "Systems::framedConcern" - ] - ], - [ - "RequirementUsage", - [ - "Systems::RequirementUsage" - ] - ], - [ - "requirementDefinition", - [ - "Systems::requirementDefinition" - ] - ], - [ - "redefines constraintDefinition", - [ - "Systems::redefines constraintDefinition" - ] - ], - [ - "RequirementVerificationMembership", - [ - "Systems::RequirementVerificationMembership" - ] - ], - [ - "verifiedRequirement", - [ - "Systems::verifiedRequirement", - "Systems::verifiedRequirement", - "Systems::verifiedRequirement" - ] - ], - [ - "SatisfyRequirementUsage", - [ - "Systems::SatisfyRequirementUsage" - ] - ], - [ - "satisfiedRequirement", - [ - "Systems::satisfiedRequirement" - ] - ], - [ - "redefines assertedConstraint", - [ - "Systems::redefines assertedConstraint" - ] - ], - [ - "satisfyingFeature", - [ - "Systems::satisfyingFeature" - ] - ], - [ - "SendActionUsage", - [ - "Systems::SendActionUsage" - ] - ], - [ - "senderArgument", - [ - "Systems::senderArgument" - ] - ], - [ - "StakeholderMembership", - [ - "Systems::StakeholderMembership" - ] - ], - [ - "ownedStakeholderParameter", - [ - "Systems::ownedStakeholderParameter" - ] - ], - [ - "StateDefinition", - [ - "Systems::StateDefinition" - ] - ], - [ - "isParallel", - [ - "Systems::isParallel", - "Systems::isParallel" - ] - ], - [ - "state", - [ - "Systems::state" - ] - ], - [ - "StateSubactionKind", - [ - "Systems::StateSubactionKind" - ] - ], - [ - "StateSubactionMembership", - [ - "Systems::StateSubactionMembership" - ] - ], - [ - "StateUsage", - [ - "Systems::StateUsage" - ] - ], - [ - "stateDefinition", - [ - "Systems::stateDefinition" - ] - ], - [ - "SubjectMembership", - [ - "Systems::SubjectMembership" - ] - ], - [ - "ownedSubjectParameter", - [ - "Systems::ownedSubjectParameter" - ] - ], - [ - "SuccessionAsUsage", - [ - "Systems::SuccessionAsUsage" - ] - ], - [ - "SuccessionFlowUsage", - [ - "Systems::SuccessionFlowUsage" - ] - ], - [ - "TerminateActionUsage", - [ - "Systems::TerminateActionUsage" - ] - ], - [ - "terminatedOccurrenceArgument", - [ - "Systems::terminatedOccurrenceArgument" - ] - ], - [ - "TransitionFeatureKind", - [ - "Systems::TransitionFeatureKind" - ] - ], - [ - "TransitionFeatureMembership", - [ - "Systems::TransitionFeatureMembership" - ] - ], - [ - "transitionFeature", - [ - "Systems::transitionFeature" - ] - ], - [ - "TransitionUsage", - [ - "Systems::TransitionUsage" - ] - ], - [ - "triggerAction", - [ - "Systems::triggerAction" - ] - ], - [ - "guardExpression", - [ - "Systems::guardExpression" - ] - ], - [ - "effectAction", - [ - "Systems::effectAction" - ] - ], - [ - "succession", - [ - "Systems::succession" - ] - ], - [ - "TriggerInvocationExpression", - [ - "Systems::TriggerInvocationExpression" - ] - ], - [ - "TriggerKind", - [ - "Systems::TriggerKind" - ] - ], - [ - "Usage", - [ - "Systems::Usage" - ] - ], - [ - "mayTimeVary", - [ - "Systems::mayTimeVary" - ] - ], - [ - "redefines isVariable", - [ - "Systems::redefines isVariable" - ] - ], - [ - "owningDefinition", - [ - "Systems::owningDefinition" - ] - ], - [ - "owningUsage", - [ - "Systems::owningUsage" - ] - ], - [ - "nestedUsage", - [ - "Systems::nestedUsage" - ] - ], - [ - "nestedReference", - [ - "Systems::nestedReference" - ] - ], - [ - "nestedAttribute", - [ - "Systems::nestedAttribute" - ] - ], - [ - "nestedEnumeration", - [ - "Systems::nestedEnumeration" - ] - ], - [ - "nestedOccurrence", - [ - "Systems::nestedOccurrence" - ] - ], - [ - "nestedItem", - [ - "Systems::nestedItem" - ] - ], - [ - "nestedPart", - [ - "Systems::nestedPart" - ] - ], - [ - "nestedPort", - [ - "Systems::nestedPort" - ] - ], - [ - "nestedConnection", - [ - "Systems::nestedConnection" - ] - ], - [ - "nestedFlow", - [ - "Systems::nestedFlow" - ] - ], - [ - "nestedInterface", - [ - "Systems::nestedInterface" - ] - ], - [ - "nestedAllocation", - [ - "Systems::nestedAllocation" - ] - ], - [ - "nestedAction", - [ - "Systems::nestedAction" - ] - ], - [ - "nestedState", - [ - "Systems::nestedState" - ] - ], - [ - "nestedTransition", - [ - "Systems::nestedTransition" - ] - ], - [ - "nestedCalculation", - [ - "Systems::nestedCalculation" - ] - ], - [ - "nestedConstraint", - [ - "Systems::nestedConstraint" - ] - ], - [ - "nestedRequirement", - [ - "Systems::nestedRequirement" - ] - ], - [ - "nestedConcern", - [ - "Systems::nestedConcern" - ] - ], - [ - "nestedCase", - [ - "Systems::nestedCase" - ] - ], - [ - "nestedAnalysisCase", - [ - "Systems::nestedAnalysisCase" - ] - ], - [ - "nestedVerificationCase", - [ - "Systems::nestedVerificationCase" - ] - ], - [ - "nestedUseCase", - [ - "Systems::nestedUseCase" - ] - ], - [ - "nestedView", - [ - "Systems::nestedView" - ] - ], - [ - "nestedViewpoint", - [ - "Systems::nestedViewpoint" - ] - ], - [ - "nestedRendering", - [ - "Systems::nestedRendering" - ] - ], - [ - "nestedMetadata", - [ - "Systems::nestedMetadata" - ] - ], - [ - "UseCaseDefinition", - [ - "Systems::UseCaseDefinition" - ] - ], - [ - "includedUseCase", - [ - "Systems::includedUseCase", - "Systems::includedUseCase" - ] - ], - [ - "UseCaseUsage", - [ - "Systems::UseCaseUsage" - ] - ], - [ - "useCaseDefinition", - [ - "Systems::useCaseDefinition" - ] - ], - [ - "VariantMembership", - [ - "Systems::VariantMembership" - ] - ], - [ - "ownedVariantUsage", - [ - "Systems::ownedVariantUsage" - ] - ], - [ - "redefines ownedMemberElement", - [ - "Systems::redefines ownedMemberElement" - ] - ], - [ - "VerificationCaseDefinition", - [ - "Systems::VerificationCaseDefinition" - ] - ], - [ - "VerificationCaseUsage", - [ - "Systems::VerificationCaseUsage" - ] - ], - [ - "verificationCaseDefinition", - [ - "Systems::verificationCaseDefinition" - ] - ], - [ - "ViewDefinition", - [ - "Systems::ViewDefinition" - ] - ], - [ - "view", - [ - "Systems::view" - ] - ], - [ - "satisfiedViewpoint", - [ - "Systems::satisfiedViewpoint", - "Systems::satisfiedViewpoint" - ] - ], - [ - "viewRendering", - [ - "Systems::viewRendering", - "Systems::viewRendering", - "viewRendering" - ] - ], - [ - "viewCondition", - [ - "Systems::viewCondition", - "Systems::viewCondition" - ] - ], - [ - "ViewRenderingMembership", - [ - "Systems::ViewRenderingMembership" - ] - ], - [ - "referencedRendering", - [ - "Systems::referencedRendering" - ] - ], - [ - "ViewUsage", - [ - "Systems::ViewUsage" - ] - ], - [ - "viewDefinition", - [ - "Systems::viewDefinition" - ] - ], - [ - "exposedElement", - [ - "Systems::exposedElement" - ] - ], - [ - "ViewpointDefinition", - [ - "Systems::ViewpointDefinition" - ] - ], - [ - "viewpointStakeholder", - [ - "Systems::viewpointStakeholder", - "Systems::viewpointStakeholder" - ] - ], - [ - "ViewpointUsage", - [ - "Systems::ViewpointUsage" - ] - ], - [ - "viewpointDefinition", - [ - "Systems::viewpointDefinition" - ] - ], - [ - "WhileLoopActionUsage", - [ - "Systems::WhileLoopActionUsage" - ] - ], - [ - "whileArgument", - [ - "Systems::whileArgument" - ] - ], - [ - "untilArgument", - [ - "Systems::untilArgument" - ] - ], - [ - "UseCase", - [ - "UseCase" - ] - ], - [ - "redefines obj", - [ - "redefines obj", - "redefines obj" - ] - ], - [ - "subUseCases", - [ - "subUseCases" - ] - ], - [ - "includedUseCases", - [ - "includedUseCases" - ] - ], - [ - "useCases", - [ - "useCases" - ] - ], - [ - "VerificationCase", - [ - "VerificationCase" - ] - ], - [ - "redefines result", - [ - "redefines result" - ] - ], - [ - "requirementVerifications", - [ - "requirementVerifications", - "requirementVerifications" - ] - ], - [ - "subVerificationCases", - [ - "subVerificationCases" - ] - ], - [ - "verificationCases", - [ - "verificationCases" - ] - ], - [ - "VerdictKind", - [ - "VerdictKind" - ] - ], - [ - "PassIf", - [ - "PassIf" - ] - ], - [ - "isPassing", - [ - "isPassing" - ] - ], - [ - "verdict", - [ - "verdict" - ] - ], - [ - "VerificationMethod", - [ - "VerificationMethod" - ] - ], - [ - "VerificationMethodKind", - [ - "VerificationMethodKind" - ] - ], - [ - "View", - [ - "View" - ] - ], - [ - "subviews", - [ - "subviews" - ] - ], - [ - "viewpointSatisfactions", - [ - "viewpointSatisfactions" - ] - ], - [ - "require: viewpointSatisfactions", - [ - "require: viewpointSatisfactions" - ] - ], - [ - "ViewpointCheck", - [ - "ViewpointCheck" - ] - ], - [ - "subrenderings", - [ - "subrenderings" - ] - ], - [ - "TextualRendering", - [ - "TextualRendering" - ] - ], - [ - "GraphicalRendering", - [ - "GraphicalRendering" - ] - ], - [ - "TabularRendering", - [ - "TabularRendering" - ] - ], - [ - "views", - [ - "views" - ] - ], - [ - "viewpointChecks", - [ - "viewpointChecks" - ] - ], - [ - "renderings", - [ - "renderings" - ] - ], - [ - "asTextualNotation", - [ - "asTextualNotation" - ] - ], - [ - "asTreeDiagram", - [ - "asTreeDiagram" - ] - ], - [ - "asInterconnectionDiagram", - [ - "asInterconnectionDiagram" - ] - ], - [ - "asElementTable", - [ - "asElementTable" - ] - ], - [ - "columnView", - [ - "columnView" - ] - ], - [ - "redefines viewRendering", - [ - "redefines viewRendering", - "redefines viewRendering" - ] - ], - [ - "redefines subrenderings", - [ - "redefines subrenderings", - "redefines subrenderings" - ] - ] - ], - "packages": [ - [ - "Systems", - [ - "Systems::AcceptActionUsage", - "Systems::receiverArgument", - "Systems::payloadParameter", - "Systems::payloadArgument", - "Systems::ActionDefinition", - "Systems::action", - "Systems::ActionUsage", - "Systems::actionDefinition", - "Systems::redefines behavior", - "Systems::redefines occurrenceDefinition", - "Systems::ActorMembership", - "Systems::ownedActorParameter", - "Systems::redefines ownedMemberParameter", - "Systems::AllocationDefinition", - "Systems::allocation", - "Systems::AllocationUsage", - "Systems::allocationDefinition", - "Systems::redefines connectionDefinition", - "Systems::AnalysisCaseDefinition", - "Systems::resultExpression", - "Systems::AnalysisCaseUsage", - "Systems::analysisCaseDefinition", - "Systems::redefines caseDefinition", - "Systems::resultExpression", - "Systems::AssertConstraintUsage", - "Systems::assertedConstraint", - "Systems::AssignmentActionUsage", - "Systems::targetArgument", - "Systems::valueExpression", - "Systems::referent", - "Systems::AttributeDefinition", - "Systems::AttributeUsage", - "Systems::isReference", - "Systems::redefines isReference", - "Systems::attributeDefinition", - "Systems::redefines definition", - "Systems::BindingConnectorAsUsage", - "Systems::CalculationDefinition", - "Systems::calculation", - "Systems::CalculationUsage", - "Systems::calculationDefinition", - "Systems::redefines function", - "Systems::redefines actionDefinition", - "Systems::CaseDefinition", - "Systems::objectiveRequirement", - "Systems::subjectParameter", - "Systems::actorParameter", - "Systems::CaseUsage", - "Systems::objectiveRequirement", - "Systems::caseDefinition", - "Systems::redefines calculationDefinition", - "Systems::subjectParameter", - "Systems::actorParameter", - "Systems::ConcernDefinition", - "Systems::ConcernUsage", - "Systems::concernDefinition", - "Systems::redefines requirementDefinition", - "Systems::ConjugatedPortDefinition", - "Systems::originalPortDefinition", - "Systems::redefines owningNamespace", - "Systems::ownedPortConjugator", - "Systems::redefines ownedConjugator", - "Systems::ConjugatedPortTyping", - "Systems::conjugatedPortDefinition", - "Systems::redefines type", - "Systems::portDefinition", - "Systems::ConnectionDefinition", - "Systems::isSufficient", - "Systems::redefines isSufficient", - "Systems::connectionEnd", - "Systems::redefines associationEnd", - "Systems::ConnectionUsage", - "Systems::connectionDefinition", - "Systems::redefines association", - "Systems::ConnectorAsUsage", - "Systems::ConstraintDefinition", - "Systems::ConstraintUsage", - "Systems::constraintDefinition", - "Systems::redefines predicate", - "Systems::ControlNode", - "Systems::DecisionNode", - "Systems::Definition", - "Systems::isVariation", - "Systems::variant", - "Systems::variantMembership", - "Systems::usage", - "Systems::directedUsage", - "Systems::ownedUsage", - "Systems::ownedReference", - "Systems::ownedAttribute", - "Systems::ownedEnumeration", - "Systems::ownedOccurrence", - "Systems::ownedItem", - "Systems::ownedPart", - "Systems::ownedPort", - "Systems::ownedConnection", - "Systems::ownedFlow", - "Systems::ownedInterface", - "Systems::ownedAllocation", - "Systems::ownedAction", - "Systems::ownedState", - "Systems::ownedTransition", - "Systems::ownedCalculation", - "Systems::ownedConstraint", - "Systems::ownedRequirement", - "Systems::ownedConcern", - "Systems::ownedCase", - "Systems::ownedAnalysisCase", - "Systems::ownedVerificationCase", - "Systems::ownedUseCase", - "Systems::ownedView", - "Systems::ownedViewpoint", - "Systems::ownedRendering", - "Systems::ownedMetadata", - "Systems::EnumerationDefinition", - "Systems::isVariation", - "Systems::redefines isVariation", - "Systems::enumeratedValue", - "Systems::redefines 'variant'", - "Systems::EnumerationUsage", - "Systems::enumerationDefinition", - "Systems::redefines attributeDefinition", - "Systems::EventOccurrenceUsage", - "Systems::isReference", - "Systems::redefines isReference", - "Systems::eventOccurrence", - "Systems::ExhibitStateUsage", - "Systems::exhibitedState", - "Systems::redefines performedAction", - "Systems::Expose", - "Systems::visibility", - "Systems::redefines visibility", - "Systems::isImportAll", - "Systems::redefines isImportAll", - "Systems::FlowDefinition", - "Systems::flowEnd", - "Systems::redefines associationEnd", - "Systems::FlowUsage", - "Systems::flowDefinition", - "Systems::redefines actionDefinition", - "Systems::redefines interaction", - "Systems::ForLoopActionUsage", - "Systems::seqArgument", - "Systems::loopVariable", - "Systems::ForkNode", - "Systems::FramedConcernMembership", - "Systems::kind", - "Systems::redefines kind", - "Systems::ownedConcern", - "Systems::redefines ownedConstraint", - "Systems::referencedConcern", - "Systems::redefines referencedConstraint", - "Systems::IfActionUsage", - "Systems::elseAction", - "Systems::thenAction", - "Systems::ifArgument", - "Systems::IncludeUseCaseUsage", - "Systems::useCaseIncluded", - "Systems::redefines performedAction", - "Systems::InterfaceDefinition", - "Systems::interfaceEnd", - "Systems::redefines connectionEnd", - "Systems::InterfaceUsage", - "Systems::interfaceDefinition", - "Systems::redefines connectionDefinition", - "Systems::ItemDefinition", - "Systems::ItemUsage", - "Systems::itemDefinition", - "Systems::JoinNode", - "Systems::LoopActionUsage", - "Systems::bodyAction", - "Systems::MembershipExpose", - "Systems::MergeNode", - "Systems::MetadataDefinition", - "Systems::MetadataUsage", - "Systems::metadataDefinition", - "Systems::redefines itemDefinition", - "Systems::redefines metaclass", - "Systems::NamespaceExpose", - "Systems::ObjectiveMembership", - "Systems::ownedObjectiveRequirement", - "Systems::redefines ownedMemberFeature", - "Systems::OccurrenceDefinition", - "Systems::isIndividual", - "Systems::OccurrenceUsage", - "Systems::isIndividual", - "Systems::portionKind", - "Systems::occurrenceDefinition", - "Systems::redefines definition", - "Systems::individualDefinition", - "Systems::PartDefinition", - "Systems::PartUsage", - "Systems::partDefinition", - "Systems::PerformActionUsage", - "Systems::performedAction", - "Systems::redefines eventOccurrence", - "Systems::PortConjugation", - "Systems::originalPortDefinition", - "Systems::redefines originalType", - "Systems::conjugatedPortDefinition", - "Systems::redefines owningType", - "Systems::PortDefinition", - "Systems::conjugatedPortDefinition", - "Systems::PortUsage", - "Systems::portDefinition", - "Systems::redefines occurrenceDefinition", - "Systems::PortionKind", - "Systems::ReferenceUsage", - "Systems::isReference", - "Systems::redefines isReference", - "Systems::RenderingDefinition", - "Systems::rendering", - "Systems::RenderingUsage", - "Systems::renderingDefinition", - "Systems::redefines partDefinition", - "Systems::RequirementConstraintKind", - "Systems::RequirementConstraintMembership", - "Systems::kind", - "Systems::ownedConstraint", - "Systems::redefines ownedMemberFeature", - "Systems::referencedConstraint", - "Systems::RequirementDefinition", - "Systems::reqId", - "Systems::redefines declaredShortName", - "Systems::text", - "Systems::subjectParameter", - "Systems::actorParameter", - "Systems::stakeholderParameter", - "Systems::assumedConstraint", - "Systems::requiredConstraint", - "Systems::framedConcern", - "Systems::RequirementUsage", - "Systems::reqId", - "Systems::redefines declaredShortName", - "Systems::text", - "Systems::requirementDefinition", - "Systems::redefines constraintDefinition", - "Systems::requiredConstraint", - "Systems::assumedConstraint", - "Systems::subjectParameter", - "Systems::framedConcern", - "Systems::actorParameter", - "Systems::stakeholderParameter", - "Systems::RequirementVerificationMembership", - "Systems::kind", - "Systems::redefines kind", - "Systems::ownedRequirement", - "Systems::redefines ownedConstraint", - "Systems::verifiedRequirement", - "Systems::redefines referencedConstraint", - "Systems::SatisfyRequirementUsage", - "Systems::satisfiedRequirement", - "Systems::redefines assertedConstraint", - "Systems::satisfyingFeature", - "Systems::SendActionUsage", - "Systems::receiverArgument", - "Systems::payloadArgument", - "Systems::senderArgument", - "Systems::StakeholderMembership", - "Systems::ownedStakeholderParameter", - "Systems::redefines ownedMemberParameter", - "Systems::StateDefinition", - "Systems::isParallel", - "Systems::state", - "Systems::entryAction", - "Systems::doAction", - "Systems::exitAction", - "Systems::StateSubactionKind", - "Systems::StateSubactionMembership", - "Systems::kind", - "Systems::action", - "Systems::redefines ownedMemberFeature", - "Systems::StateUsage", - "Systems::isParallel", - "Systems::stateDefinition", - "Systems::redefines actionDefinition", - "Systems::entryAction", - "Systems::doAction", - "Systems::exitAction", - "Systems::SubjectMembership", - "Systems::ownedSubjectParameter", - "Systems::redefines ownedMemberParameter", - "Systems::SuccessionAsUsage", - "Systems::SuccessionFlowUsage", - "Systems::TerminateActionUsage", - "Systems::terminatedOccurrenceArgument", - "Systems::TransitionFeatureKind", - "Systems::TransitionFeatureMembership", - "Systems::kind", - "Systems::transitionFeature", - "Systems::redefines ownedMemberFeature", - "Systems::TransitionUsage", - "Systems::source", - "Systems::target", - "Systems::triggerAction", - "Systems::guardExpression", - "Systems::effectAction", - "Systems::succession", - "Systems::TriggerInvocationExpression", - "Systems::kind", - "Systems::TriggerKind", - "Systems::Usage", - "Systems::isVariation", - "Systems::mayTimeVary", - "Systems::redefines isVariable", - "Systems::isReference", - "Systems::variant", - "Systems::variantMembership", - "Systems::owningDefinition", - "Systems::owningUsage", - "Systems::definition", - "Systems::redefines type", - "Systems::usage", - "Systems::directedUsage", - "Systems::nestedUsage", - "Systems::nestedReference", - "Systems::nestedAttribute", - "Systems::nestedEnumeration", - "Systems::nestedOccurrence", - "Systems::nestedItem", - "Systems::nestedPart", - "Systems::nestedPort", - "Systems::nestedConnection", - "Systems::nestedFlow", - "Systems::nestedInterface", - "Systems::nestedAllocation", - "Systems::nestedAction", - "Systems::nestedState", - "Systems::nestedTransition", - "Systems::nestedCalculation", - "Systems::nestedConstraint", - "Systems::nestedRequirement", - "Systems::nestedConcern", - "Systems::nestedCase", - "Systems::nestedAnalysisCase", - "Systems::nestedVerificationCase", - "Systems::nestedUseCase", - "Systems::nestedView", - "Systems::nestedViewpoint", - "Systems::nestedRendering", - "Systems::nestedMetadata", - "Systems::UseCaseDefinition", - "Systems::includedUseCase", - "Systems::UseCaseUsage", - "Systems::useCaseDefinition", - "Systems::redefines caseDefinition", - "Systems::includedUseCase", - "Systems::VariantMembership", - "Systems::ownedVariantUsage", - "Systems::redefines ownedMemberElement", - "Systems::VerificationCaseDefinition", - "Systems::verifiedRequirement", - "Systems::VerificationCaseUsage", - "Systems::verificationCaseDefinition", - "Systems::verifiedRequirement", - "Systems::ViewDefinition", - "Systems::view", - "Systems::satisfiedViewpoint", - "Systems::viewRendering", - "Systems::viewCondition", - "Systems::ViewRenderingMembership", - "Systems::ownedRendering", - "Systems::redefines ownedMemberFeature", - "Systems::referencedRendering", - "Systems::ViewUsage", - "Systems::viewDefinition", - "Systems::redefines partDefinition", - "Systems::satisfiedViewpoint", - "Systems::exposedElement", - "Systems::viewRendering", - "Systems::viewCondition", - "Systems::ViewpointDefinition", - "Systems::viewpointStakeholder", - "Systems::ViewpointUsage", - "Systems::viewpointDefinition", - "Systems::redefines requirementDefinition", - "Systems::viewpointStakeholder", - "Systems::WhileLoopActionUsage", - "Systems::whileArgument", - "Systems::untilArgument" - ] - ] - ], - "specializationGraph": [], - "stats": { - "totalSymbols": 1921, - "byKind": { - "part": 961, - "attribute": 350, - "action": 74, - "item def": 46, - "constraint": 10, - "comment": 18, - "requirement def": 9, - "occurrence": 13, - "connection": 38, - "item": 363, - "constraint def": 3, - "requirement": 11, - "state": 9, - "allocation": 1, - "interface": 4, - "port": 9, - "part def": 1, - "package": 1 - }, - "totalFiles": 58, - "totalPackages": 1 - } -} \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore index 5dabf8f..3316891 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -8,7 +8,6 @@ vsc-extension-quickstart.md **/.eslintrc.json **/*.map **/*.ts -!node_modules/antlr4ts/** node_modules/**/test/** node_modules/**/*.md node_modules/**/*.ts @@ -22,8 +21,6 @@ node_modules/**/.eslintrc* .github/** .nvmrc tsconfig.tsbuildinfo -grammar/** -tools/** scripts/** schemas/** samples/** diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index ddf4e27..01541cd 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -2,7 +2,7 @@ ## Overview -A VS Code extension providing SysML v2.0 language support with interactive visualization. Language intelligence (diagnostics, completions, hover, go-to-definition, formatting, etc.) is provided by the **[sysml-v2-lsp](https://github.com/daltskin/sysml-v2-lsp)** language server via the Language Server Protocol. The extension adds visualization, model exploration, and diagram rendering on top. +A VS Code extension providing SysML v2.0 language support with interactive visualization. All language intelligence (parsing, diagnostics, completions, hover, go-to-definition, formatting, etc.) is provided by the **[sysml-v2-lsp](https://github.com/daltskin/sysml-v2-lsp)** language server via the Language Server Protocol. The extension adds visualization, model exploration, and diagram rendering on top via a custom `sysml/model` LSP request. ## High-Level Architecture @@ -22,28 +22,29 @@ A VS Code extension providing SysML v2.0 language support with interactive visua │ │ │ (separate Node.js process) │ │ │ │ │ │ │ │ │ │ * ANTLR4 parser (worker thread) │ │ +│ │ │ * Symbol table & model provider │ │ │ │ │ * Diagnostics & keyword typos │ │ │ │ │ * Completions / signature help │ │ │ │ │ * Hover / go-to-def / references │ │ -│ │ │ * Semantic tokens / CodeLens │ │ +│ │ │ * Semantic tokens / CodeLens │ │ │ │ │ * Rename / linked editing │ │ │ │ │ * Inlay hints / document links │ │ │ │ │ * Type & call hierarchy │ │ │ │ │ * Formatting / folding / selection │ │ │ │ │ * Workspace symbols │ │ +│ │ │ * Standard library resolution │ │ +│ │ │ * Custom sysml/model request │ │ │ │ └──────────────────────────────────────┘ │ │ │ │ -│ │ ┌──────────────┐ ┌──────────────────────────┐ │ -│ +->│ Parser │-->│ Semantic Resolver │ │ -│ │ │ (ANTLR4) │ │ (visualization only) │ │ -│ │ └──────┬───────┘ └──────────────────────────┘ │ -│ │ │ │ -│ +---------+----------------------------+ │ -│ v v v │ -│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ -│ │ Model Tree │ │ Library │ │ Webview │ │ -│ │ Explorer │ │ Service │ │ Visualizer │ │ -│ └────────────┘ └────────────┘ └────────────┘ │ +│ │ │ +│ ┌──────┴──────────────────────────────────────────────────────┐ │ +│ │ Extension Features │ │ +│ │ │ │ +│ │ ┌────────────┐ ┌───────────────┐ ┌────────────────────┐ │ │ +│ │ │ Model Tree │ │ LSP Model │ │ Model Dashboard │ │ │ +│ │ │ Explorer │ │ Provider │ │ Panel │ │ │ +│ │ └────────────┘ └───────────────┘ └────────────────────┘ │ │ +│ └─────────────────────────────────────────────────────────────┘ │ │ │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ Visualization Panel (Webview) │ │ @@ -62,32 +63,30 @@ A VS Code extension providing SysML v2.0 language support with interactive visua - Starts the **sysml-v2-lsp** language server as a child process (IPC transport) - The server module is shipped as the `sysml-v2-lsp` npm dependency - Provides all language intelligence: diagnostics, completions, hover, go-to-definition, references, rename, formatting, code actions, semantic tokens, CodeLens, inlay hints, type/call hierarchy, document symbols, folding ranges, selection ranges, workspace symbols +- Custom `sysml/model` request returns parsed model data for visualization and explorer - Supports `sysml.restartServer` command for development -### 2. Parser (`src/parser/`) — Visualization & Explorer only +### 2. LSP Model Provider (`src/providers/`) -- **ANTLR4-based** parser generated from `grammar/SysMLv2Parser.g4` -- Parses `.sysml` and `.kerml` files into AST -- Used **only** for the Model Explorer tree view and Visualization panel -- Language features (diagnostics, navigation, etc.) are handled by the LSP server -- Caches parse results by content hash for performance +- `lspModelProvider.ts` — sends `sysml/model` requests to the LSP server +- `sysmlModelTypes.ts` — shared type definitions for model data (elements, relationships, stats) +- Converts LSP model responses into visualization-ready data structures -### 2. Semantic Resolver (`src/resolver/`) +### 3. Model Explorer (`src/explorer/`) -- Validates types against SysML standard library -- Resolves references (part types, specializations) -- Produces enriched elements with resolved type info -- Generates semantic diagnostics +- `modelExplorerProvider.ts` — tree view showing SysML model structure +- Displays packages, parts, attributes, ports, connections, etc. +- Uses `sysml/model` request with `['elements', 'relationships']` scope +- Supports refresh, navigation to source, and model dashboard -### 3. Library Service (`src/library/`) +### 4. Model Dashboard (`src/panels/`) -- Indexes the SysML v2 standard library (`sysml.library/`) -- Provides symbol lookup for type resolution -- Caches index to `.sysml-cache/library.json` +- `modelDashboardPanel.ts` — webview panel showing model statistics +- Displays element counts, relationship types, parse timing, and model structure overview -### 4. Visualization (`src/visualization/`) +### 5. Visualization (`src/visualization/`) -- Webview-based diagram rendering +- `visualizationPanel.ts` — webview-based diagram rendering - Multiple renderers: BDD, IBD, Package, Activity, Sequence, State, UseCase - Uses **Cytoscape.js** + **ELK** for graph layout - Uses **D3.js** for custom diagrams @@ -95,26 +94,24 @@ A VS Code extension providing SysML v2.0 language support with interactive visua ## Data Flow ``` - .sysml File Webview - │ ^ - v │ -┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────┴───────┐ -│ TextDoc │--->│ ANTLR │--->│ SysML │--->│ Renderer │ -│ │ │ Lexer/ │ │ Elements │ │(view-specific)│ -│ │ │ Parser │ │ (AST) │ │ │ -└───────────┘ └───────────┘ └─────┬─────┘ └───────────────┘ - │ - v - ┌───────────┐ ┌─────────────┐ - │ Semantic │--->│ Enriched │ - │ Resolver │ │ Elements │ - └─────┬─────┘ └─────────────┘ - │ - v - ┌───────────┐ - │ Library │ - │ Service │ - └───────────┘ + .sysml File + │ + v +┌───────────┐ ┌──────────────────────────┐ ┌───────────────┐ +│ TextDoc │--->│ sysml-v2-lsp Server │--->│ LSP Responses │ +│ │ │ │ │ │ +│ │ │ ANTLR4 parse (worker) │ │ diagnostics, │ +│ │ │ Symbol table build │ │ completions, │ +│ │ │ Library resolution │ │ model data │ +└───────────┘ └──────────────────────────┘ └───────┬───────┘ + │ + ┌───────────────────────────────┤ + │ │ + v v + ┌─────────────┐ ┌───────────────┐ + │ Model Tree │ │ Visualization │ + │ Explorer │ │ Webview │ + └─────────────┘ └───────────────┘ ``` ## Key Dependencies @@ -123,7 +120,6 @@ A VS Code extension providing SysML v2.0 language support with interactive visua | ----------------------- | --------------------------------- | | `sysml-v2-lsp` | Language server (LSP) | | `vscode-languageclient` | VS Code LSP client library | -| `antlr4` | TypeScript ANTLR4 runtime (viz) | | `elkjs` | ELK graph layout algorithm | | `cytoscape` | Graph visualization library | | `cytoscape-elk` | ELK layout adapter for Cytoscape | @@ -135,36 +131,29 @@ A VS Code extension providing SysML v2.0 language support with interactive visua src/ ├── extension.ts # Entry point, command registration ├── lsp/ -│ └── client.ts # LSP client (starts sysml-v2-lsp server) -├── parser/ -│ ├── sysmlParser.ts # High-level parser API (visualization only) -│ ├── antlrSysMLParser.ts # ANTLR wrapper -│ └── generated/ # ANTLR-generated lexer/parser -├── resolver/ -│ ├── resolver.ts # Type resolution logic (visualization) -│ └── diagnostics.ts # Diagnostic message factory (visualization) -├── library/ -│ ├── service.ts # Library indexing & lookup -│ └── cacheManager.ts # Index persistence +│ ├── client.ts # LSP client (starts sysml-v2-lsp server) +│ └── server-launcher.cjs # Server process entry point +├── providers/ +│ ├── lspModelProvider.ts # sysml/model request handler +│ └── sysmlModelTypes.ts # Shared model type definitions ├── visualization/ -│ ├── visualizationPanel.ts # Webview host -│ └── renderers/ # View-specific renderers +│ └── visualizationPanel.ts # Webview host & diagram rendering ├── explorer/ -│ └── modelExplorerProvider.ts # Tree view +│ └── modelExplorerProvider.ts # Tree view provider +├── panels/ +│ └── modelDashboardPanel.ts # Dashboard webview panel ├── types/ -│ └── sysml-v2-lsp.d.ts # Type declarations for LSP package -├── validation/ # Retained for reference (LSP handles validation) -├── navigation/ # Retained for reference (LSP handles navigation) -└── formatting/ # Retained for reference (LSP handles formatting) +│ └── sysml-v2-lsp.d.ts # Type declarations for LSP package +└── test/ + └── *.test.ts # Unit and integration tests ``` ## Extension Activation 1. Triggered by `onLanguage:sysml` or command invocation 2. Starts the **sysml-v2-lsp** language server via IPC (handles all language features) -3. Creates `SysMLParser`, `ModelExplorerProvider` (for visualization only) -4. Registers visualization, export, and model explorer commands -5. Sets up file watchers and document change handlers (for model explorer updates) +3. Registers Model Explorer tree view, visualization commands, and dashboard +4. Sets up file watchers and document change handlers for model updates ## Webview Communication diff --git a/CHANGELOG.md b/CHANGELOG.md index 68d5ad7..5c9caee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,37 @@ All notable changes to the SysML v2.0 Language Support extension will be documen The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.21.0] + +### Added + +- **LSP model provider** (`src/providers/lspModelProvider.ts`) — sends `sysml/model` requests to the language server for structured model data +- **Model type definitions** (`src/providers/sysmlModelTypes.ts`) — shared TypeScript types for elements, relationships, and model statistics +- **Model Dashboard panel** (`src/panels/modelDashboardPanel.ts`) — webview dashboard showing model statistics and build timing +- **Go-to-Definition for library imports** — navigate to standard library definitions from import statements +- **`modelBuildTimeMs` timing metric** — real ANTLR parse time from the LSP server, reported consistently across status bar, dashboard, and output log + +### Changed + +- **Architecture: complete migration to LSP-only model** — visualization panel and model explorer now use `sysml/model` LSP requests instead of the in-extension ANTLR parser; the extension no longer bundles any parser, resolver, or library code +- **Visualization panel refactored** (`src/visualization/visualizationPanel.ts`) — rebuilt to consume LSP model data directly +- **Model Explorer refactored** (`src/explorer/modelExplorerProvider.ts`) — uses LSP model provider instead of in-extension parser +- **Extension activation refactored** (`src/extension.ts`) — streamlined for LSP-only architecture + +### Fixed + +- **LSP cold-start race condition** — model explorer and visualization now wait for the server to be ready +- **Filename encoding in logs** — spaces in filenames are properly handled + +### Removed + +- **In-extension ANTLR parser** (`src/parser/`) — `antlrSysMLParser.ts`, `sysmlParser.ts`, `parserWorker.ts`, `parserWorkerHost.ts`, `libraryIndexer.ts`, `vscodeMock.ts`, and `generated/` directory +- **Semantic resolver** (`src/resolver/`) — `resolver.ts`, `diagnostics.ts`, `types.ts`, `index.ts` +- **Library service** (`src/library/`) — `service.ts`, `cacheManager.ts`, `compiler.ts`, `types.ts`, `index.ts` +- **Grammar files** (`grammar/`) — `SysMLv2Lexer.g4`, `SysMLv2Parser.g4` +- **`sysml.library/` directory** — standard library files now bundled in the LSP server +- **`antlr4` runtime dependency** + ## [0.20.0] ### Fixed diff --git a/Makefile b/Makefile index db8022c..9a152ba 100644 --- a/Makefile +++ b/Makefile @@ -5,11 +5,6 @@ NODE_MODULES = node_modules OUT_DIR = out SRC_DIR = src DIST_DIR = dist -LIBRARY_DIR = sysml.library -GRAMMAR_REPO = daltskin/sysml-v2-grammar -LIBRARY_VERSION ?= $(shell gh release view --repo $(GRAMMAR_REPO) --json tagName --jq '.tagName' 2>/dev/null | sed 's/^v//') -LIBRARY_REPO = Systems-Modeling/SysML-v2-Release -LIBRARY_URL = https://github.com/$(LIBRARY_REPO)/archive/refs/tags/$(LIBRARY_VERSION).tar.gz PACKAGE_NAME = $(shell node -p "require('./package.json').name") VERSION = $(shell node -p "require('./package.json').version") @@ -31,7 +26,6 @@ help: @echo "" @echo "$(YELLOW)Available targets:$(NC)" @echo " $(GREEN)install$(NC) - Install dependencies" - @echo " $(GREEN)download-library$(NC) - Download official SysML v2 standard library" @echo " $(GREEN)compile$(NC) - Compile TypeScript to JavaScript" @echo " $(GREEN)watch$(NC) - Watch and compile on changes" @echo " $(GREEN)test$(NC) - Run all tests" @@ -47,8 +41,6 @@ help: @echo " $(GREEN)dev$(NC) - Start development environment" @echo " $(GREEN)debug$(NC) - Prepare for debugging (then press F5 in VS Code)" @echo " $(GREEN)debug-watch$(NC) - Launch watch mode for debugging with auto-recompile" - @echo " $(GREEN)grammar$(NC) - Generate ANTLR4 grammar from SysML v2 spec BNF" - @echo " $(GREEN)grammar-clean$(NC) - Remove generated grammar files" @echo " $(GREEN)prepublish$(NC) - Prepare for publishing" @echo " $(GREEN)info$(NC) - Show project information" @echo " $(GREEN)help$(NC) - Show this help message" @@ -62,38 +54,12 @@ $(NODE_MODULES): package.json package-lock.json npm install @echo "$(GREEN)Dependencies installed successfully!$(NC)" -# Download SysML v2 standard library -.PHONY: download-library -download-library: - @echo "$(YELLOW)Downloading SysML v2 standard library ($(LIBRARY_VERSION))...$(NC)" - @if [ -d "$(LIBRARY_DIR)" ]; then \ - echo "$(BLUE)Library already exists. Remove $(LIBRARY_DIR) to re-download.$(NC)"; \ - else \ - curl -L $(LIBRARY_URL) | tar xz && \ - mv SysML-v2-Release-$(LIBRARY_VERSION)/sysml.library . && \ - rm -rf SysML-v2-Release-$(LIBRARY_VERSION) && \ - echo "$(GREEN)Library downloaded successfully!$(NC)" && \ - echo "$(BLUE)Library location: $(LIBRARY_DIR)$(NC)" && \ - echo "$(BLUE)Library files: $$(find $(LIBRARY_DIR) -name '*.sysml' -o -name '*.kerml' | wc -l) files$(NC)"; \ - fi - -# Check if library exists -.PHONY: check-library -check-library: - @if [ ! -d "$(LIBRARY_DIR)" ]; then \ - echo "$(YELLOW)Standard library not found. Downloading...$(NC)"; \ - $(MAKE) download-library; \ - else \ - echo "$(GREEN)Standard library found at $(LIBRARY_DIR)$(NC)"; \ - fi - # Compile TypeScript .PHONY: compile compile: $(OUT_DIR) $(OUT_DIR): $(NODE_MODULES) tsconfig.json $(shell find $(SRC_DIR) -name "*.ts" 2>/dev/null || echo "") @echo "$(YELLOW)Compiling TypeScript...$(NC)" - @$(MAKE) check-library npm run compile @echo "$(GREEN)Compilation completed!$(NC)" @@ -255,37 +221,6 @@ info: @echo " Compiled: $(shell [ -d $(OUT_DIR) ] && echo '✓ Yes' || echo '✗ No')" @echo " Package exists: $(shell [ -f "$(PACKAGE_NAME)-$(VERSION).vsix" ] && echo '✓ Yes' || echo '✗ No')" -# Download pre-built grammar from sysml-v2-grammar releases -.PHONY: grammar -grammar: - @echo "$(YELLOW)Downloading grammar from $(GRAMMAR_REPO) release...$(NC)" - @if ! command -v gh >/dev/null 2>&1; then \ - echo "$(RED)GitHub CLI (gh) is required but not installed.$(NC)"; exit 1; fi - @mkdir -p grammar - @rm -rf /tmp/sysml-grammar-dl - @mkdir -p /tmp/sysml-grammar-dl - gh release download --repo $(GRAMMAR_REPO) --pattern '*.zip' --dir /tmp/sysml-grammar-dl --clobber - @unzip -o -j /tmp/sysml-grammar-dl/*.zip '*.g4' '*.tokens' -d grammar 2>/dev/null || \ - unzip -o -j /tmp/sysml-grammar-dl/*.zip '*.g4' -d grammar - @rm -rf /tmp/sysml-grammar-dl - @echo "$(GREEN)Grammar downloaded successfully!$(NC)" - @echo "$(YELLOW)Run 'npm run antlr:generate' to compile TypeScript sources.$(NC)" - -# Generate grammar and compile ANTLR4 to TypeScript in one step -.PHONY: grammar-full -grammar-full: grammar - @echo "$(YELLOW)Compiling ANTLR4 grammar to TypeScript...$(NC)" - npm run antlr:generate - @echo "$(GREEN)ANTLR4 TypeScript sources generated!$(NC)" - -# Clean generated grammar files -.PHONY: grammar-clean -grammar-clean: - @echo "$(YELLOW)Cleaning generated grammar files...$(NC)" - rm -rf .grammar-cache - rm -f grammar/*.g4 grammar/*.tokens - @echo "$(GREEN)Grammar files cleaned.$(NC)" - # Verify all is working .PHONY: verify verify: install compile test lint diff --git a/eslint.config.js b/eslint.config.js index 6bd2aef..aeb6bd5 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -102,29 +102,6 @@ module.exports = [ 'prefer-template': 'error' } }, - { - // Special configuration for ANTLR parser files that need 'any' types - files: ['src/parser/antlrSysMLParser.ts'], - languageOptions: { - parser: tsParser, - parserOptions: { - ecmaVersion: 2020, - sourceType: 'module', - project: './tsconfig.json' - } - }, - plugins: { - '@typescript-eslint': tsPlugin - }, - rules: { - 'no-unused-vars': 'off', - '@typescript-eslint/no-explicit-any': 'off', // Disable for ANTLR integration - '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], - 'no-console': 'warn', - 'prefer-const': 'error', - 'no-var': 'error' - } - }, { ignores: [ 'out/**', @@ -133,15 +110,7 @@ module.exports = [ '**/*.d.ts', 'dist/**', 'coverage/**', - '*.vsix', - // Generated ANTLR files - 'src/parser/SysMLv2.ts', - 'src/parser/SysMLv2Lexer.ts', - 'src/parser/SysMLv2Visitor.ts', - 'src/parser/SysMLv2Listener.ts', - 'src/parser/generated/**/*.ts', - // Duplicate ANTLR files in generated folder - 'src/parser/generated/grammar/*.ts' + '*.vsix' ] } ]; diff --git a/grammar/SysMLv2Lexer.g4 b/grammar/SysMLv2Lexer.g4 deleted file mode 100644 index e3cfd0c..0000000 --- a/grammar/SysMLv2Lexer.g4 +++ /dev/null @@ -1,922 +0,0 @@ -/* - * SysML v2 ANTLR4 Grammar - * Derived from the OMG SysML v2 specification (KEBNF format). - * Source: https://github.com/Systems-Modeling/SysML-v2-Release - * Generator: https://github.com/daltskin/sysml-v2-grammar - * License: MIT - */ - -lexer grammar SysMLv2Lexer; - -// $antlr-format alignTrailingComments true, columnLimit 150, useTab false -// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true -// $antlr-format alignSemicolons hanging, alignColons hanging -// $antlr-format minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false - -// Keywords -ABOUT - : 'about' - ; - -ABSTRACT - : 'abstract' - ; - -ACCEPT - : 'accept' - ; - -ACTION - : 'action' - ; - -ACTOR - : 'actor' - ; - -AFTER - : 'after' - ; - -ALIAS - : 'alias' - ; - -ALL - : 'all' - ; - -ALLOCATE - : 'allocate' - ; - -ALLOCATION - : 'allocation' - ; - -ANALYSIS - : 'analysis' - ; - -AND - : 'and' - ; - -AS - : 'as' - ; - -ASSERT - : 'assert' - ; - -ASSIGN - : 'assign' - ; - -ASSOC - : 'assoc' - ; - -ASSUME - : 'assume' - ; - -AT - : 'at' - ; - -ATTRIBUTE - : 'attribute' - ; - -BEHAVIOR - : 'behavior' - ; - -BIND - : 'bind' - ; - -BINDING - : 'binding' - ; - -BOOL - : 'bool' - ; - -BY - : 'by' - ; - -CALC - : 'calc' - ; - -CASE - : 'case' - ; - -CHAINS - : 'chains' - ; - -CLASS - : 'class' - ; - -CLASSIFIER - : 'classifier' - ; - -COMMENT - : 'comment' - ; - -COMPOSITE - : 'composite' - ; - -CONCERN - : 'concern' - ; - -CONJUGATE - : 'conjugate' - ; - -CONJUGATES - : 'conjugates' - ; - -CONJUGATION - : 'conjugation' - ; - -CONNECT - : 'connect' - ; - -CONNECTION - : 'connection' - ; - -CONNECTOR - : 'connector' - ; - -CONST - : 'const' - ; - -CONSTANT - : 'constant' - ; - -CONSTRAINT - : 'constraint' - ; - -CROSSES - : 'crosses' - ; - -DATATYPE - : 'datatype' - ; - -DECIDE - : 'decide' - ; - -DEF - : 'def' - ; - -DEFAULT - : 'default' - ; - -DEFINED - : 'defined' - ; - -DEPENDENCY - : 'dependency' - ; - -DERIVED - : 'derived' - ; - -DIFFERENCES - : 'differences' - ; - -DISJOINING - : 'disjoining' - ; - -DISJOINT - : 'disjoint' - ; - -DO - : 'do' - ; - -DOC - : 'doc' - ; - -ELSE - : 'else' - ; - -END - : 'end' - ; - -ENTRY - : 'entry' - ; - -ENUM - : 'enum' - ; - -EVENT - : 'event' - ; - -EXHIBIT - : 'exhibit' - ; - -EXIT - : 'exit' - ; - -EXPOSE - : 'expose' - ; - -EXPR - : 'expr' - ; - -FALSE - : 'false' - ; - -FEATURE - : 'feature' - ; - -FEATURED - : 'featured' - ; - -FEATURING - : 'featuring' - ; - -FILTER - : 'filter' - ; - -FIRST - : 'first' - ; - -FLOW - : 'flow' - ; - -FOR - : 'for' - ; - -FORK - : 'fork' - ; - -FRAME - : 'frame' - ; - -FROM - : 'from' - ; - -FUNCTION - : 'function' - ; - -HASTYPE - : 'hastype' - ; - -IF - : 'if' - ; - -IMPLIES - : 'implies' - ; - -IMPORT - : 'import' - ; - -IN - : 'in' - ; - -INCLUDE - : 'include' - ; - -INDIVIDUAL - : 'individual' - ; - -INOUT - : 'inout' - ; - -INTERACTION - : 'interaction' - ; - -INTERFACE - : 'interface' - ; - -INTERSECTS - : 'intersects' - ; - -INV - : 'inv' - ; - -INVERSE - : 'inverse' - ; - -INVERTING - : 'inverting' - ; - -ISTYPE - : 'istype' - ; - -ITEM - : 'item' - ; - -JOIN - : 'join' - ; - -LANGUAGE - : 'language' - ; - -LIBRARY - : 'library' - ; - -LOCALE - : 'locale' - ; - -LOOP - : 'loop' - ; - -MEMBER - : 'member' - ; - -MERGE - : 'merge' - ; - -MESSAGE - : 'message' - ; - -META - : 'meta' - ; - -METACLASS - : 'metaclass' - ; - -METADATA - : 'metadata' - ; - -MULTIPLICITY - : 'multiplicity' - ; - -NAMESPACE - : 'namespace' - ; - -NEW - : 'new' - ; - -NONUNIQUE - : 'nonunique' - ; - -NOT - : 'not' - ; - -NULL - : 'null' - ; - -OBJECTIVE - : 'objective' - ; - -OCCURRENCE - : 'occurrence' - ; - -OF - : 'of' - ; - -OR - : 'or' - ; - -ORDERED - : 'ordered' - ; - -OUT - : 'out' - ; - -PACKAGE - : 'package' - ; - -PARALLEL - : 'parallel' - ; - -PART - : 'part' - ; - -PERFORM - : 'perform' - ; - -PORT - : 'port' - ; - -PORTION - : 'portion' - ; - -PREDICATE - : 'predicate' - ; - -PRIVATE - : 'private' - ; - -PROTECTED - : 'protected' - ; - -PUBLIC - : 'public' - ; - -REDEFINES - : 'redefines' - ; - -REDEFINITION - : 'redefinition' - ; - -REF - : 'ref' - ; - -REFERENCES - : 'references' - ; - -RENDER - : 'render' - ; - -RENDERING - : 'rendering' - ; - -REP - : 'rep' - ; - -REQUIRE - : 'require' - ; - -REQUIREMENT - : 'requirement' - ; - -RETURN - : 'return' - ; - -SATISFY - : 'satisfy' - ; - -SEND - : 'send' - ; - -SNAPSHOT - : 'snapshot' - ; - -SPECIALIZATION - : 'specialization' - ; - -SPECIALIZES - : 'specializes' - ; - -STAKEHOLDER - : 'stakeholder' - ; - -STANDARD - : 'standard' - ; - -STATE - : 'state' - ; - -STEP - : 'step' - ; - -STRUCT - : 'struct' - ; - -SUBCLASSIFIER - : 'subclassifier' - ; - -SUBJECT - : 'subject' - ; - -SUBSET - : 'subset' - ; - -SUBSETS - : 'subsets' - ; - -SUBTYPE - : 'subtype' - ; - -SUCCESSION - : 'succession' - ; - -TERMINATE - : 'terminate' - ; - -THEN - : 'then' - ; - -TIMESLICE - : 'timeslice' - ; - -TO - : 'to' - ; - -TRANSITION - : 'transition' - ; - -TRUE - : 'true' - ; - -TYPE - : 'type' - ; - -TYPED - : 'typed' - ; - -TYPING - : 'typing' - ; - -UNIONS - : 'unions' - ; - -UNTIL - : 'until' - ; - -USE - : 'use' - ; - -VAR - : 'var' - ; - -VARIANT - : 'variant' - ; - -VARIATION - : 'variation' - ; - -VERIFICATION - : 'verification' - ; - -VERIFY - : 'verify' - ; - -VIA - : 'via' - ; - -VIEW - : 'view' - ; - -VIEWPOINT - : 'viewpoint' - ; - -WHEN - : 'when' - ; - -WHILE - : 'while' - ; - -XOR - : 'xor' - ; - -// Operators and punctuation -BANG_EQ_EQ - : '!==' - ; - -COLON_COLON_GT - : '::>' - ; - -COLON_GT_GT - : ':>>' - ; - -EQ_EQ_EQ - : '===' - ; - -BANG_EQ - : '!=' - ; - -STAR_STAR - : '**' - ; - -ARROW - : '->' - ; - -DOT_DOT - : '..' - ; - -DOT_QUESTION - : '.?' - ; - -COLON_COLON - : '::' - ; - -COLON_EQ - : ':=' - ; - -COLON_GT - : ':>' - ; - -LE - : '<=' - ; - -EQ_EQ - : '==' - ; - -FAT_ARROW - : '=>' - ; - -GE - : '>=' - ; - -QUESTION_QUESTION - : '??' - ; - -AT_AT - : '@@' - ; - -HASH - : '#' - ; - -DOLLAR - : '$' - ; - -PERCENT - : '%' - ; - -AMP - : '&' - ; - -LPAREN - : '(' - ; - -RPAREN - : ')' - ; - -STAR - : '*' - ; - -PLUS - : '+' - ; - -COMMA - : ',' - ; - -MINUS - : '-' - ; - -DOT - : '.' - ; - -SLASH - : '/' - ; - -COLON - : ':' - ; - -SEMI - : ';' - ; - -LT - : '<' - ; - -EQ - : '=' - ; - -GT - : '>' - ; - -QUESTION - : '?' - ; - -AT_SIGN - : '@' - ; - -LBRACK - : '[' - ; - -RBRACK - : ']' - ; - -CARET - : '^' - ; - -LBRACE - : '{' - ; - -PIPE - : '|' - ; - -RBRACE - : '}' - ; - -TILDE - : '~' - ; - -// Identifiers -IDENTIFIER - : [a-zA-Z_] [a-zA-Z0-9_]* - ; - -// String literals -STRING - : '\'' ('\\' . | ~['\\])* '\'' - ; - -DOUBLE_STRING - : '"' ('\\' . | ~["\\])* '"' - ; - -// Numeric literals -INTEGER - : [0-9]+ - ; - -REAL - : [0-9]* '.' [0-9]+ ([eE] [+-]? [0-9]+)? - | [0-9]+ [eE] [+-]? [0-9]+ - ; - -// Comments -REGULAR_COMMENT - : '/*' .*? '*/' - ; - -SINGLE_LINE_NOTE - : '//' ~[\r\n]* -> skip - ; - -// Whitespace -WS - : [ \t\r\n]+ -> skip - ; \ No newline at end of file diff --git a/grammar/SysMLv2Parser.g4 b/grammar/SysMLv2Parser.g4 deleted file mode 100644 index df89607..0000000 --- a/grammar/SysMLv2Parser.g4 +++ /dev/null @@ -1,2400 +0,0 @@ -/* - * SysML v2 ANTLR4 Grammar - * Derived from the OMG SysML v2 specification (KEBNF format). - * Source: https://github.com/Systems-Modeling/SysML-v2-Release - * Generator: https://github.com/daltskin/sysml-v2-grammar - * License: MIT - */ - -parser grammar SysMLv2Parser; - -options { - tokenVocab = SysMLv2Lexer; -} - -// $antlr-format alignTrailingComments true, columnLimit 150, useTab false -// $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true -// $antlr-format alignSemicolons hanging, alignColons hanging -// $antlr-format minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false - -// ===== Expression rules (precedence-climbing) ===== - -ownedExpression - : IF ownedExpression QUESTION ownedExpression ELSE ownedExpression - | ownedExpression QUESTION_QUESTION ownedExpression - | ownedExpression IMPLIES ownedExpression - | ownedExpression OR ownedExpression - | ownedExpression AND ownedExpression - | ownedExpression XOR ownedExpression - | ownedExpression PIPE ownedExpression - | ownedExpression AMP ownedExpression - | ownedExpression ( EQ_EQ | BANG_EQ | EQ_EQ_EQ | BANG_EQ_EQ) ownedExpression - | ownedExpression ( LT | GT | LE | GE) ownedExpression - | ownedExpression DOT_DOT ownedExpression - | ownedExpression ( PLUS | MINUS) ownedExpression - | ownedExpression ( STAR | SLASH | PERCENT) ownedExpression - | ownedExpression ( STAR_STAR | CARET) ownedExpression - | ( PLUS | MINUS | TILDE | NOT) ownedExpression - | ( AT_SIGN | AT_AT) typeReference - | ownedExpression ( ISTYPE | HASTYPE | AT_SIGN) typeReference - | ownedExpression AS typeReference - | ownedExpression AT_AT typeReference - | ownedExpression META typeReference - | ownedExpression LBRACK sequenceExpressionList? RBRACK - | ownedExpression HASH LPAREN sequenceExpressionList? RPAREN - | ownedExpression argumentList - | ownedExpression DOT qualifiedName - | ownedExpression DOT_QUESTION bodyExpression - | ownedExpression ARROW qualifiedName ( bodyExpression | argumentList) - | ALL typeReference - | baseExpression - ; - -typeReference - : qualifiedName - ; - -sequenceExpressionList - : ownedExpression (COMMA ownedExpression)* - ; - -baseExpression - : nullExpression - | literalExpression - | qualifiedName (argumentList | DOT METADATA)? // merged featureRef/metadataAccess/invocation - | constructorExpression - | bodyExpression - | LPAREN sequenceExpressionList? RPAREN - ; - -nullExpression - : NULL - | LPAREN RPAREN - ; - -featureReferenceExpression - : qualifiedName - ; - -metadataAccessExpression - : qualifiedName DOT METADATA - ; - -invocationExpression - : qualifiedName argumentList - ; - -constructorExpression - : NEW qualifiedName argumentList - ; - -bodyExpression - : LBRACE functionBodyPart RBRACE - ; - -argumentList - : LPAREN (positionalArgumentList | namedArgumentList)? RPAREN - ; - -positionalArgumentList - : ownedExpression (COMMA ownedExpression)* - ; - -namedArgumentList - : namedArgument (COMMA namedArgument)* - ; - -namedArgument - : qualifiedName EQ ownedExpression - ; - -literalExpression - : literalBoolean - | literalString - | literalInteger - | literalReal - | literalInfinity - ; - -literalBoolean - : TRUE - | FALSE - ; - -literalString - : DOUBLE_STRING - ; - -literalInteger - : INTEGER - ; - -literalReal - : REAL - ; - -literalInfinity - : STAR - ; - -argumentMember - : ownedExpression - ; - -argumentExpressionMember - : ownedExpression - ; - -// ===== Name rule (Identifier or UnrestrictedName) ===== - -name - : IDENTIFIER - | STRING - ; - -// ===== Parser rules ===== - -identification - : LT name GT name - | LT name GT - | name - ; - -relationshipBody - : SEMI - | LBRACE relationshipOwnedElement* RBRACE - | LBRACE ( ownedAnnotation)* RBRACE - ; - -relationshipOwnedElement - : ownedRelatedElement - | ownedAnnotation - ; - -ownedRelatedElement - : nonFeatureElement - | featureElement - ; - -dependency - : (prefixMetadataAnnotation)* DEPENDENCY (identification? FROM)? qualifiedName ( - COMMA qualifiedName - )* TO qualifiedName (COMMA qualifiedName)* relationshipBody - | (prefixMetadataAnnotation)* DEPENDENCY dependencyDeclaration relationshipBody - ; - -annotation - : qualifiedName - ; - -ownedAnnotation - : annotatingElement - ; - -annotatingElement - : comment - | documentation - | textualRepresentation - | metadataFeature - ; - -comment - : (COMMENT identification? ( ABOUT annotation ( COMMA annotation)*)?)? (LOCALE DOUBLE_STRING)? REGULAR_COMMENT - ; - -documentation - : DOC identification? (LOCALE DOUBLE_STRING)? REGULAR_COMMENT - ; - -textualRepresentation - : (REP identification?)? LANGUAGE DOUBLE_STRING REGULAR_COMMENT - ; - -rootNamespace - : packageBodyElement* EOF - ; - -namespace - : (prefixMetadataMember)* namespaceDeclaration namespaceBody - ; - -namespaceDeclaration - : NAMESPACE identification? - ; - -namespaceBody - : SEMI - | LBRACE namespaceBodyElement* RBRACE - ; - -namespaceBodyElement - : namespaceMember - | aliasMember - | importRule - ; - -memberPrefix - : (visibilityIndicator)? - ; - -visibilityIndicator - : PUBLIC - | PRIVATE - | PROTECTED - ; - -namespaceMember - : nonFeatureMember - | namespaceFeatureMember - ; - -nonFeatureMember - : memberPrefix memberElement - ; - -namespaceFeatureMember - : memberPrefix featureElement - ; - -aliasMember - : memberPrefix ALIAS (LT name GT)? (name)? FOR qualifiedName relationshipBody - ; - -qualifiedName - : (DOLLAR COLON_COLON)? (name COLON_COLON)* name - ; - -importRule - : (visibilityIndicator)? IMPORT (ALL)? importDeclaration relationshipBody - ; - -importDeclaration - : membershipImport - | namespaceImport - ; - -membershipImport - : qualifiedName (COLON_COLON STAR_STAR)? - ; - -namespaceImport - : qualifiedName COLON_COLON STAR (COLON_COLON STAR_STAR)? - | filterPackage - ; - -filterPackage - : filterPackageImportDeclaration (filterPackageMember)+ - | filterPackageImport ( filterPackageMember)+ - ; - -filterPackageMember - : LBRACK ownedExpression RBRACK - ; - -memberElement - : annotatingElement - | nonFeatureElement - ; - -nonFeatureElement - : dependency - | namespace - | type - | classifier - | dataType - | class - | structure - | metaclass - | association - | associationStructure - | interaction - | behavior - | function - | predicate - | multiplicity - | package - | libraryPackage - | specialization - | conjugation - | subclassification - | disjoining - | featureInverting - | featureTyping - | subsetting - | redefinition - | typeFeaturing - ; - -featureElement - : feature - | step - | expression - | booleanExpression - | invariant - | connector - | bindingConnector - | succession - | flow - | successionFlow - ; - -type - : typePrefix TYPE typeDeclaration typeBody - ; - -typePrefix - : (ABSTRACT)? (prefixMetadataMember)* - ; - -typeDeclaration - : (ALL)? identification? (ownedMultiplicity)? (specializationPart | conjugationPart)+ typeRelationshipPart* - ; - -specializationPart - : (COLON_GT | SPECIALIZES) ownedSpecialization (COMMA ownedSpecialization)* - ; - -conjugationPart - : (TILDE | CONJUGATES) ownedConjugation - ; - -typeRelationshipPart - : disjoiningPart - | unioningPart - | intersectingPart - | differencingPart - ; - -disjoiningPart - : DISJOINT FROM ownedDisjoining (COMMA ownedDisjoining)* - ; - -unioningPart - : UNIONS unioning (COMMA unioning)* - ; - -intersectingPart - : INTERSECTS intersecting (COMMA intersecting)* - ; - -differencingPart - : DIFFERENCES differencing (COMMA differencing)* - ; - -typeBody - : SEMI - | LBRACE typeBodyElement* RBRACE - ; - -typeBodyElement - : nonFeatureMember - | featureMember - | aliasMember - | importRule - ; - -specialization - : (SPECIALIZATION identification?)? SUBTYPE specificType (COLON_GT | SPECIALIZES) generalType relationshipBody - ; - -ownedSpecialization - : generalType - ; - -specificType - : qualifiedName (DOT qualifiedName)* - ; - -generalType - : qualifiedName (DOT qualifiedName)* - ; - -conjugation - : (CONJUGATION identification?)? CONJUGATE qualifiedName (DOT qualifiedName)* ( - TILDE - | CONJUGATES - ) qualifiedName (DOT qualifiedName)* relationshipBody - ; - -ownedConjugation - : qualifiedName (DOT qualifiedName)* - ; - -disjoining - : (DISJOINING identification?)? DISJOINT qualifiedName (DOT qualifiedName)* FROM qualifiedName ( - DOT qualifiedName - )* relationshipBody - ; - -ownedDisjoining - : qualifiedName (DOT qualifiedName)* - ; - -unioning - : qualifiedName (DOT qualifiedName)* - ; - -intersecting - : qualifiedName (DOT qualifiedName)* - ; - -differencing - : qualifiedName (DOT qualifiedName)* - ; - -featureMember - : typeFeatureMember - | ownedFeatureMember - ; - -typeFeatureMember - : memberPrefix MEMBER featureElement - ; - -ownedFeatureMember - : memberPrefix featureElement - ; - -classifier - : typePrefix CLASSIFIER classifierDeclaration typeBody - ; - -classifierDeclaration - : (ALL)? identification? (ownedMultiplicity)? (superclassingPart | conjugationPart)? typeRelationshipPart* - ; - -superclassingPart - : (COLON_GT | SPECIALIZES) ownedSubclassification (COMMA ownedSubclassification)* - ; - -subclassification - : (SPECIALIZATION identification?)? SUBCLASSIFIER qualifiedName (COLON_GT | SPECIALIZES) qualifiedName relationshipBody - ; - -ownedSubclassification - : qualifiedName - ; - -feature - : ( - featurePrefix ( FEATURE | prefixMetadataMember) featureDeclaration? - | ( endFeaturePrefix | basicFeaturePrefix) featureDeclaration - ) valuePart? typeBody - ; - -endFeaturePrefix - : (CONST)? END - ; - -basicFeaturePrefix - : (featureDirection)? (DERIVED)? (ABSTRACT)? (COMPOSITE | PORTION)? (VAR | CONST)? - ; - -featurePrefix - : (endFeaturePrefix ownedCrossFeatureMember | basicFeaturePrefix) (prefixMetadataMember)* - ; - -ownedCrossFeatureMember - : ownedCrossFeature - ; - -ownedCrossFeature - : basicFeaturePrefix featureDeclaration - | basicUsagePrefix usageDeclaration? - ; - -featureDirection - : IN - | OUT - | INOUT - ; - -featureDeclaration - : (ALL)? ( - featureIdentification ( featureSpecializationPart | conjugationPart)? - | featureSpecializationPart - | conjugationPart - ) featureRelationshipPart* - ; - -featureIdentification - : LT name GT (name)? - | name - ; - -featureRelationshipPart - : typeRelationshipPart - | chainingPart - | invertingPart - | typeFeaturingPart - ; - -chainingPart - : CHAINS qualifiedName (DOT qualifiedName)* - ; - -invertingPart - : INVERSE OF ownedFeatureInverting - ; - -typeFeaturingPart - : FEATURED BY ownedTypeFeaturing (COMMA ownedTypeFeaturing)* - ; - -featureSpecializationPart - : featureSpecialization+ multiplicityPart? featureSpecialization* - | multiplicityPart featureSpecialization* - ; - -multiplicityPart - : ownedMultiplicity (ORDERED ( NONUNIQUE)? | NONUNIQUE ( ORDERED)?)? - | ( ORDERED ( NONUNIQUE)? | NONUNIQUE ( ORDERED)?) - ; - -featureSpecialization - : typings - | subsettings - | references - | crosses - | redefinitions - ; - -typings - : typedBy (COMMA featureTyping)* - ; - -typedBy - : (COLON | TYPED BY | DEFINED BY) featureTyping - ; - -subsettings - : subsets (COMMA ownedSubsetting)* - ; - -subsets - : (COLON_GT | SUBSETS) ownedSubsetting - ; - -references - : (COLON_COLON_GT | REFERENCES) ownedReferenceSubsetting - ; - -crosses - : (FAT_ARROW | CROSSES) ownedCrossSubsetting - ; - -redefinitions - : redefines (COMMA ownedRedefinition)* - ; - -redefines - : (COLON_GT_GT | REDEFINES) ownedRedefinition - ; - -featureTyping - : (SPECIALIZATION identification?)? TYPING qualifiedName (COLON | TYPED BY) generalType relationshipBody - | ownedFeatureTyping - | conjugatedPortTyping - ; - -ownedFeatureTyping - : qualifiedName (DOT qualifiedName)* - ; - -subsetting - : (SPECIALIZATION identification?)? SUBSET specificType (COLON_GT | SUBSETS) generalType relationshipBody - ; - -ownedSubsetting - : qualifiedName (DOT qualifiedName)* - ; - -ownedReferenceSubsetting - : qualifiedName (DOT qualifiedName)* - ; - -ownedCrossSubsetting - : qualifiedName (DOT qualifiedName)* - ; - -redefinition - : (SPECIALIZATION identification?)? REDEFINITION specificType (COLON_GT_GT | REDEFINES) generalType relationshipBody - ; - -ownedRedefinition - : qualifiedName (DOT qualifiedName)* - ; - -ownedFeatureChain - : featureChain - | ownedFeatureChaining ( DOT ownedFeatureChaining)+ - ; - -featureChain - : ownedFeatureChaining (DOT ownedFeatureChaining)+ - ; - -ownedFeatureChaining - : qualifiedName - ; - -featureInverting - : (INVERTING identification?)? INVERSE qualifiedName (DOT qualifiedName)* OF qualifiedName ( - DOT qualifiedName - )* relationshipBody - ; - -ownedFeatureInverting - : qualifiedName (DOT qualifiedName)* - ; - -typeFeaturing - : FEATURING (identification? OF)? qualifiedName BY qualifiedName relationshipBody - ; - -ownedTypeFeaturing - : qualifiedName - ; - -dataType - : typePrefix DATATYPE classifierDeclaration typeBody - ; - -class - : typePrefix CLASS classifierDeclaration typeBody - ; - -structure - : typePrefix STRUCT classifierDeclaration typeBody - ; - -association - : typePrefix ASSOC classifierDeclaration typeBody - ; - -associationStructure - : typePrefix ASSOC STRUCT classifierDeclaration typeBody - ; - -connector - : featurePrefix CONNECTOR (featureDeclaration? valuePart? | connectorDeclaration) typeBody - ; - -connectorDeclaration - : binaryConnectorDeclaration - | naryConnectorDeclaration - ; - -binaryConnectorDeclaration - : (featureDeclaration? FROM | ALL FROM?)? connectorEndMember TO connectorEndMember - ; - -naryConnectorDeclaration - : featureDeclaration? LPAREN connectorEndMember COMMA connectorEndMember ( - COMMA connectorEndMember - )* RPAREN - ; - -connectorEndMember - : connectorEnd - ; - -connectorEnd - : (ownedCrossMultiplicityMember)? (name ( COLON_COLON_GT | REFERENCES))? ownedReferenceSubsetting - ; - -ownedCrossMultiplicityMember - : ownedCrossMultiplicity - ; - -ownedCrossMultiplicity - : ownedMultiplicity - ; - -bindingConnector - : featurePrefix BINDING bindingConnectorDeclaration typeBody - ; - -bindingConnectorDeclaration - : featureDeclaration (OF connectorEndMember EQ connectorEndMember)? - | ( ALL)? ( OF? connectorEndMember EQ connectorEndMember)? - ; - -succession - : featurePrefix SUCCESSION successionDeclaration typeBody - ; - -successionDeclaration - : featureDeclaration (FIRST connectorEndMember THEN connectorEndMember)? - | ( ALL)? ( FIRST? connectorEndMember THEN connectorEndMember)? - ; - -behavior - : typePrefix BEHAVIOR classifierDeclaration typeBody - ; - -step - : featurePrefix STEP featureDeclaration valuePart? typeBody - ; - -function - : typePrefix FUNCTION classifierDeclaration functionBody - ; - -functionBody - : SEMI - | LBRACE functionBodyPart RBRACE - ; - -functionBodyPart - : (typeBodyElement | returnFeatureMember)* (resultExpressionMember)? - ; - -returnFeatureMember - : memberPrefix RETURN featureElement - ; - -resultExpressionMember - : memberPrefix ownedExpression - ; - -expression - : featurePrefix EXPR featureDeclaration valuePart? functionBody - ; - -predicate - : typePrefix PREDICATE classifierDeclaration functionBody - ; - -booleanExpression - : featurePrefix BOOL featureDeclaration valuePart? functionBody - ; - -invariant - : featurePrefix INV (TRUE | FALSE)? featureDeclaration valuePart? functionBody - ; - -ownedExpressionMember - : ownedExpression - ; - -metadataReference - : elementReferenceMember - ; - -typeReferenceMember - : typeReference - ; - -typeResultMember - : typeReference - ; - -referenceTyping - : qualifiedName - ; - -emptyResultMember - : emptyFeature_ - ; - -sequenceOperatorExpression - : ownedExpressionMember COMMA sequenceExpressionListMember - ; - -sequenceExpressionListMember - : sequenceExpressionList - ; - -bodyArgumentMember - : bodyArgument - ; - -bodyArgument - : bodyArgumentValue - ; - -bodyArgumentValue - : bodyExpression - ; - -functionReferenceArgumentMember - : functionReferenceArgument - ; - -functionReferenceArgument - : functionReferenceArgumentValue - ; - -functionReferenceArgumentValue - : functionReferenceExpression - ; - -functionReferenceExpression - : functionReferenceMember - ; - -functionReferenceMember - : functionReference - ; - -functionReference - : referenceTyping - ; - -featureChainMember - : qualifiedName (DOT qualifiedName)* - ; - -ownedFeatureChainMember - : featureChain - | ownedFeatureChain - ; - -featureReferenceMember - : featureReference - ; - -featureReference - : qualifiedName - ; - -elementReferenceMember - : qualifiedName - ; - -constructorResultMember - : constructorResult - ; - -constructorResult - : argumentList - ; - -instantiatedTypeMember - : qualifiedName (DOT qualifiedName)* - ; - -instantiatedTypeReference - : qualifiedName - ; - -namedArgumentMember - : namedArgument - ; - -parameterRedefinition - : qualifiedName - ; - -expressionBodyMember - : expressionBody - ; - -expressionBody - : LBRACE functionBodyPart RBRACE - ; - -booleanValue - : TRUE - | FALSE - ; - -realValue - : INTEGER? DOT (INTEGER | REAL) - | REAL - ; - -interaction - : typePrefix INTERACTION classifierDeclaration typeBody - ; - -flow - : featurePrefix FLOW flowDeclaration typeBody - ; - -successionFlow - : featurePrefix SUCCESSION FLOW flowDeclaration typeBody - ; - -flowDeclaration - : featureDeclaration valuePart? (OF payloadFeatureMember)? ( - FROM flowEndMember TO flowEndMember - )? - | ( ALL)? flowEndMember TO flowEndMember - | usageDeclaration? valuePart? (OF flowPayloadFeatureMember)? ( - FROM flowEndMember TO flowEndMember - )? - ; - -payloadFeatureMember - : payloadFeature - ; - -payloadFeature - : identification? valuePart - | identification? payloadFeatureSpecializationPart valuePart? - | ownedFeatureTyping ( ownedMultiplicity)? - | ownedMultiplicity ( ownedFeatureTyping)? - ; - -payloadFeatureSpecializationPart - : featureSpecialization+ multiplicityPart? featureSpecialization* - | multiplicityPart featureSpecialization+ - ; - -flowEndMember - : flowEnd - ; - -flowEnd - : qualifiedName (DOT qualifiedName)* - ; - -flowFeatureMember - : flowFeature - ; - -flowFeature - : flowFeatureRedefinition - ; - -flowFeatureRedefinition - : qualifiedName - ; - -valuePart - : featureValue - ; - -featureValue - : (EQ | COLON_EQ | DEFAULT ( EQ | COLON_EQ)?) ownedExpression - ; - -multiplicity - : multiplicitySubset - | multiplicityRange - ; - -multiplicitySubset - : MULTIPLICITY identification? subsets typeBody - ; - -multiplicityRange - : MULTIPLICITY identification? multiplicityBounds typeBody - ; - -ownedMultiplicity - : ownedMultiplicityRange - ; - -ownedMultiplicityRange - : multiplicityBounds - ; - -multiplicityBounds - : LBRACK (multiplicityExpressionMember DOT_DOT)? multiplicityExpressionMember RBRACK - ; - -multiplicityExpressionMember - : (literalExpression | featureReferenceExpression) - ; - -metaclass - : typePrefix METACLASS classifierDeclaration typeBody - ; - -prefixMetadataAnnotation - : HASH prefixMetadataFeature - | HASH prefixMetadataUsage - ; - -prefixMetadataMember - : HASH prefixMetadataFeature - | HASH prefixMetadataUsage - ; - -prefixMetadataFeature - : ownedFeatureTyping - ; - -metadataFeature - : (prefixMetadataMember)* (AT_SIGN | METADATA) metadataFeatureDeclaration ( - ABOUT annotation ( COMMA annotation)* - )? metadataBody - ; - -metadataFeatureDeclaration - : (identification? ( COLON | TYPED BY))? ownedFeatureTyping - ; - -metadataBody - : SEMI - | LBRACE ( metadataBodyElement)* RBRACE - | LBRACE (definitionMember | metadataBodyUsageMember | aliasMember | importRule)* RBRACE - ; - -metadataBodyElement - : nonFeatureMember - | metadataBodyFeatureMember - | aliasMember - | importRule - ; - -metadataBodyFeatureMember - : metadataBodyFeature - ; - -metadataBodyFeature - : FEATURE? (COLON_GT_GT | REDEFINES)? ownedRedefinition featureSpecializationPart? valuePart? metadataBody - ; - -package - : (prefixMetadataMember)* packageDeclaration packageBody - ; - -libraryPackage - : (STANDARD)? LIBRARY (prefixMetadataMember)* packageDeclaration packageBody - ; - -packageDeclaration - : PACKAGE identification? - ; - -packageBody - : SEMI - | LBRACE packageBodyElement* RBRACE - ; - -elementFilterMember - : memberPrefix FILTER ownedExpression SEMI - ; - -dependencyDeclaration - : (identification? FROM)? qualifiedName (COMMA qualifiedName)* TO qualifiedName ( - COMMA qualifiedName - )* - ; - -annotatingMember - : annotatingElement - ; - -packageBodyElement - : packageMember - | elementFilterMember - | aliasMember - | importRule - ; - -packageMember - : memberPrefix (definitionElement | usageElement) - ; - -definitionElement - : package - | libraryPackage - | annotatingElement - | dependency - | attributeDefinition - | enumerationDefinition - | occurrenceDefinition - | individualDefinition - | itemDefinition - | partDefinition - | connectionDefinition - | flowDefinition - | interfaceDefinition - | portDefinition - | actionDefinition - | calculationDefinition - | stateDefinition - | constraintDefinition - | requirementDefinition - | concernDefinition - | caseDefinition - | analysisCaseDefinition - | verificationCaseDefinition - | useCaseDefinition - | viewDefinition - | viewpointDefinition - | renderingDefinition - | metadataDefinition - | allocationDefinition - | extendedDefinition - ; - -usageElement - : nonOccurrenceUsageElement - | occurrenceUsageElement - ; - -basicDefinitionPrefix - : ABSTRACT - | VARIATION - ; - -definitionExtensionKeyword - : prefixMetadataMember - ; - -definitionPrefix - : basicDefinitionPrefix? definitionExtensionKeyword* - ; - -definition - : definitionDeclaration definitionBody - ; - -definitionDeclaration - : identification? subclassificationPart? - ; - -definitionBody - : SEMI - | LBRACE definitionBodyItem* RBRACE - ; - -definitionBodyItem - : importRule - | memberPrefix definitionBodyItemContent - | ( sourceSuccessionMember)? memberPrefix occurrenceUsageElement - ; - -// Factored dispatch: after memberPrefix is consumed, the next token -// (ALIAS, VARIANT, keyword, or identifier) unambiguously selects the branch. -// This reduces the SLL prediction DFA from 6 nullable-prefix alternatives to 3+4. -definitionBodyItemContent - : ALIAS (LT name GT)? (name)? FOR qualifiedName relationshipBody - | VARIANT variantUsageElement - | definitionElement - | nonOccurrenceUsageElement - ; - -definitionMember - : memberPrefix definitionElement - ; - -variantUsageMember - : memberPrefix VARIANT variantUsageElement - ; - -nonOccurrenceUsageMember - : memberPrefix nonOccurrenceUsageElement - ; - -occurrenceUsageMember - : memberPrefix occurrenceUsageElement - ; - -structureUsageMember - : memberPrefix structureUsageElement - ; - -behaviorUsageMember - : memberPrefix behaviorUsageElement - ; - -refPrefix - : (featureDirection)? (DERIVED)? (ABSTRACT | VARIATION)? (CONSTANT)? - ; - -basicUsagePrefix - : refPrefix (REF)? - ; - -endUsagePrefix - : END ownedCrossFeatureMember - ; - -usageExtensionKeyword - : prefixMetadataMember - ; - -unextendedUsagePrefix - : endUsagePrefix - | basicUsagePrefix - ; - -usagePrefix - : unextendedUsagePrefix usageExtensionKeyword* - ; - -usage - : usageDeclaration? usageCompletion - ; - -usageDeclaration - : identification featureSpecializationPart? - | featureSpecializationPart - ; - -usageCompletion - : valuePart? usageBody - ; - -usageBody - : definitionBody - ; - -defaultReferenceUsage - : refPrefix usage - ; - -referenceUsage - : (endUsagePrefix | refPrefix) REF usage - ; - -// Unnamed end feature with specialization (e.g., end :>> QualifiedName;) -// Handles end features in connection/flow/interface definition bodies -// where no name is given, only a redefines/subsets/typing. -endFeatureUsage - : endUsagePrefix featureDeclaration usageCompletion - ; - -variantReference - : ownedReferenceSubsetting featureSpecialization* usageBody - ; - -nonOccurrenceUsageElement - : referenceUsage - | endFeatureUsage - | attributeUsage - | enumerationUsage - | bindingConnectorAsUsage - | successionAsUsage - | extendedUsage - | defaultReferenceUsage - ; - -occurrenceUsageElement - : structureUsageElement - | behaviorUsageElement - ; - -structureUsageElement - : occurrenceUsage - | individualUsage - | portionUsage - | eventOccurrenceUsage - | itemUsage - | partUsage - | viewUsage - | renderingUsage - | portUsage - | connectionUsage - | interfaceUsage - | allocationUsage - | message - | flowUsage - | successionFlowUsage - ; - -behaviorUsageElement - : actionUsage - | calculationUsage - | stateUsage - | constraintUsage - | requirementUsage - | concernUsage - | caseUsage - | analysisCaseUsage - | verificationCaseUsage - | useCaseUsage - | viewpointUsage - | performActionUsage - | exhibitStateUsage - | includeUseCaseUsage - | assertConstraintUsage - | satisfyRequirementUsage - ; - -variantUsageElement - : variantReference - | referenceUsage - | attributeUsage - | bindingConnectorAsUsage - | successionAsUsage - | occurrenceUsage - | individualUsage - | portionUsage - | eventOccurrenceUsage - | itemUsage - | partUsage - | viewUsage - | renderingUsage - | portUsage - | connectionUsage - | interfaceUsage - | allocationUsage - | message - | flowUsage - | successionFlowUsage - | behaviorUsageElement - ; - -subclassificationPart - : (COLON_GT | SPECIALIZES) ownedSubclassification (COMMA ownedSubclassification)* - ; - -attributeDefinition - : definitionPrefix ATTRIBUTE DEF definition - ; - -attributeUsage - : usagePrefix ATTRIBUTE usage - ; - -enumerationDefinition - : definitionExtensionKeyword* ENUM DEF definitionDeclaration enumerationBody - ; - -enumerationBody - : SEMI - | LBRACE ( annotatingMember | enumerationUsageMember)* RBRACE - ; - -enumerationUsageMember - : memberPrefix enumeratedValue - ; - -enumeratedValue - : ENUM? usage - ; - -enumerationUsage - : usagePrefix ENUM usage - ; - -occurrenceDefinitionPrefix - : basicDefinitionPrefix? (INDIVIDUAL emptyMultiplicityMember)? definitionExtensionKeyword* - ; - -occurrenceDefinition - : occurrenceDefinitionPrefix OCCURRENCE DEF definition - ; - -individualDefinition - : basicDefinitionPrefix? INDIVIDUAL definitionExtensionKeyword* DEF definition emptyMultiplicityMember - ; - -emptyMultiplicityMember - : emptyMultiplicity_ - ; - -occurrenceUsagePrefix - : basicUsagePrefix (INDIVIDUAL)? (portionKind)? usageExtensionKeyword* - ; - -occurrenceUsage - : occurrenceUsagePrefix OCCURRENCE usage - ; - -individualUsage - : basicUsagePrefix INDIVIDUAL usageExtensionKeyword* usage - ; - -portionUsage - : basicUsagePrefix (INDIVIDUAL)? portionKind usageExtensionKeyword* usage - ; - -portionKind - : SNAPSHOT - | TIMESLICE - ; - -eventOccurrenceUsage - : occurrenceUsagePrefix EVENT ( - ownedReferenceSubsetting featureSpecializationPart? - | OCCURRENCE usageDeclaration? - ) usageCompletion - ; - -sourceSuccessionMember - : THEN sourceSuccession - ; - -sourceSuccession - : sourceEndMember - ; - -sourceEndMember - : sourceEnd - ; - -sourceEnd - : (ownedMultiplicity)? - ; - -itemDefinition - : occurrenceDefinitionPrefix ITEM DEF definition - ; - -itemUsage - : occurrenceUsagePrefix ITEM usage - ; - -partDefinition - : occurrenceDefinitionPrefix PART DEF definition - ; - -partUsage - : occurrenceUsagePrefix PART usage - ; - -portDefinition - : definitionPrefix PORT DEF definition conjugatedPortDefinitionMember - ; - -conjugatedPortDefinitionMember - : conjugatedPortDefinition - ; - -conjugatedPortDefinition - : portConjugation - ; - -portUsage - : occurrenceUsagePrefix PORT usage - ; - -conjugatedPortTyping - : TILDE qualifiedName - ; - -connectionDefinition - : occurrenceDefinitionPrefix CONNECTION DEF definition - ; - -connectionUsage - : occurrenceUsagePrefix ( - CONNECTION usageDeclaration? valuePart? ( CONNECT connectorPart)? - | CONNECT connectorPart - ) usageBody - ; - -connectorPart - : binaryConnectorPart - | naryConnectorPart - ; - -binaryConnectorPart - : connectorEndMember TO connectorEndMember - ; - -naryConnectorPart - : LPAREN connectorEndMember COMMA connectorEndMember (COMMA connectorEndMember)* RPAREN - ; - -bindingConnectorAsUsage - : usagePrefix (BINDING usageDeclaration?)? BIND connectorEndMember EQ connectorEndMember usageBody - ; - -successionAsUsage - : usagePrefix (SUCCESSION usageDeclaration?)? FIRST connectorEndMember THEN connectorEndMember usageBody - ; - -interfaceDefinition - : occurrenceDefinitionPrefix INTERFACE DEF definitionDeclaration interfaceBody - ; - -interfaceBody - : SEMI - | LBRACE interfaceBodyItem* RBRACE - ; - -interfaceBodyItem - : definitionMember - | variantUsageMember - | interfaceNonOccurrenceUsageMember - | ( sourceSuccessionMember)? interfaceOccurrenceUsageMember - | aliasMember - | importRule - ; - -interfaceNonOccurrenceUsageMember - : memberPrefix interfaceNonOccurrenceUsageElement - ; - -interfaceNonOccurrenceUsageElement - : referenceUsage - | attributeUsage - | enumerationUsage - | bindingConnectorAsUsage - | successionAsUsage - ; - -interfaceOccurrenceUsageMember - : memberPrefix interfaceOccurrenceUsageElement - ; - -interfaceOccurrenceUsageElement - : defaultInterfaceEnd - | structureUsageElement - | behaviorUsageElement - ; - -defaultInterfaceEnd - : END usage - ; - -interfaceUsage - : occurrenceUsagePrefix INTERFACE interfaceUsageDeclaration interfaceBody - ; - -interfaceUsageDeclaration - : usageDeclaration? valuePart? (CONNECT interfacePart)? - | interfacePart - ; - -interfacePart - : binaryInterfacePart - | naryInterfacePart - ; - -binaryInterfacePart - : interfaceEndMember TO interfaceEndMember - ; - -naryInterfacePart - : LPAREN interfaceEndMember COMMA interfaceEndMember (COMMA interfaceEndMember)* RPAREN - ; - -interfaceEndMember - : interfaceEnd - ; - -interfaceEnd - : (ownedCrossMultiplicityMember)? (name ( COLON_COLON_GT | REFERENCES))? ownedReferenceSubsetting - ; - -allocationDefinition - : occurrenceDefinitionPrefix ALLOCATION DEF definition - ; - -allocationUsage - : occurrenceUsagePrefix allocationUsageDeclaration usageBody - ; - -allocationUsageDeclaration - : ALLOCATION usageDeclaration? (ALLOCATE connectorPart)? - | ALLOCATE connectorPart - ; - -flowDefinition - : occurrenceDefinitionPrefix FLOW DEF definition - ; - -message - : occurrenceUsagePrefix MESSAGE messageDeclaration definitionBody - ; - -messageDeclaration - : usageDeclaration? valuePart? (OF flowPayloadFeatureMember)? ( - FROM messageEventMember TO messageEventMember - )? - | messageEventMember TO messageEventMember - ; - -messageEventMember - : messageEvent - ; - -messageEvent - : ownedReferenceSubsetting - ; - -flowUsage - : occurrenceUsagePrefix FLOW flowDeclaration definitionBody - ; - -successionFlowUsage - : occurrenceUsagePrefix SUCCESSION FLOW flowDeclaration definitionBody - ; - -flowPayloadFeatureMember - : flowPayloadFeature - ; - -flowPayloadFeature - : payloadFeature - ; - -flowEndSubsetting - : qualifiedName - | featureChainPrefix - ; - -featureChainPrefix - : (ownedFeatureChaining DOT)+ ownedFeatureChaining DOT - ; - -actionDefinition - : occurrenceDefinitionPrefix ACTION DEF definitionDeclaration actionBody - ; - -actionBody - : SEMI - | LBRACE actionBodyItem* RBRACE - ; - -actionBodyItem - : nonBehaviorBodyItem - | initialNodeMember ( actionTargetSuccessionMember)* - | (sourceSuccessionMember)? actionBehaviorMember (actionTargetSuccessionMember)* - | guardedSuccessionMember - ; - -nonBehaviorBodyItem - : importRule - | aliasMember - | definitionMember - | variantUsageMember - | nonOccurrenceUsageMember - | ( sourceSuccessionMember)? structureUsageMember - ; - -actionBehaviorMember - : behaviorUsageMember - | actionNodeMember - ; - -initialNodeMember - : memberPrefix FIRST qualifiedName relationshipBody - ; - -actionNodeMember - : memberPrefix actionNode - ; - -actionTargetSuccessionMember - : memberPrefix actionTargetSuccession - ; - -guardedSuccessionMember - : memberPrefix guardedSuccession - ; - -actionUsage - : occurrenceUsagePrefix ACTION actionUsageDeclaration actionBody - ; - -actionUsageDeclaration - : usageDeclaration? valuePart? - ; - -performActionUsage - : occurrenceUsagePrefix PERFORM performActionUsageDeclaration actionBody - ; - -performActionUsageDeclaration - : (ownedReferenceSubsetting featureSpecializationPart? | ACTION usageDeclaration?) valuePart? - ; - -actionNode - : controlNode - | sendNode - | acceptNode - | assignmentNode - | terminateNode - | ifNode - | whileLoopNode - | forLoopNode - ; - -actionNodeUsageDeclaration - : ACTION usageDeclaration? - ; - -actionNodePrefix - : occurrenceUsagePrefix actionNodeUsageDeclaration? - ; - -controlNode - : mergeNode - | decisionNode - | joinNode - | forkNode - ; - -controlNodePrefix - : refPrefix (INDIVIDUAL)? (portionKind)? usageExtensionKeyword* - ; - -mergeNode - : controlNodePrefix MERGE usageDeclaration? actionBody - ; - -decisionNode - : controlNodePrefix DECIDE usageDeclaration? actionBody - ; - -joinNode - : controlNodePrefix JOIN usageDeclaration? actionBody - ; - -forkNode - : controlNodePrefix FORK usageDeclaration? actionBody - ; - -acceptNode - : occurrenceUsagePrefix acceptNodeDeclaration actionBody - ; - -acceptNodeDeclaration - : actionNodeUsageDeclaration? ACCEPT acceptParameterPart - ; - -acceptParameterPart - : payloadParameterMember (VIA nodeParameterMember)? - ; - -payloadParameterMember - : payloadParameter - ; - -payloadParameter - : payloadFeature - | identification? payloadFeatureSpecializationPart? triggerValuePart - ; - -triggerValuePart - : triggerFeatureValue - ; - -triggerFeatureValue - : triggerExpression - ; - -triggerExpression - : (AT | AFTER) argumentMember - | WHEN argumentExpressionMember - ; - -sendNode - : occurrenceUsagePrefix (actionNodeUsageDeclaration | actionUsageDeclaration) SEND ( - nodeParameterMember senderReceiverPart? - | emptyParameterMember senderReceiverPart - ) actionBody - ; - -sendNodeDeclaration - : actionNodeUsageDeclaration? SEND nodeParameterMember senderReceiverPart? - ; - -senderReceiverPart - : VIA nodeParameterMember (TO nodeParameterMember)? - | emptyParameterMember TO nodeParameterMember - ; - -nodeParameterMember - : nodeParameter - ; - -nodeParameter - : featureBinding - ; - -featureBinding - : ownedExpression - ; - -emptyParameterMember - : emptyUsage_ - ; - -assignmentNode - : occurrenceUsagePrefix assignmentNodeDeclaration actionBody - ; - -assignmentNodeDeclaration - : (actionNodeUsageDeclaration)? ASSIGN assignmentTargetMember featureChainMember COLON_EQ nodeParameterMember - ; - -assignmentTargetMember - : assignmentTargetParameter - ; - -assignmentTargetParameter - : (assignmentTargetBinding DOT)? - ; - -assignmentTargetBinding - : nonFeatureChainPrimaryExpression - ; - -terminateNode - : occurrenceUsagePrefix actionNodeUsageDeclaration? TERMINATE (nodeParameterMember)? actionBody - ; - -ifNode - : actionNodePrefix IF expressionParameterMember actionBodyParameterMember ( - ELSE ( actionBodyParameterMember | ifNodeParameterMember) - )? - ; - -expressionParameterMember - : ownedExpression - ; - -actionBodyParameterMember - : actionBodyParameter - ; - -actionBodyParameter - : (ACTION usageDeclaration?)? LBRACE actionBodyItem* RBRACE - ; - -ifNodeParameterMember - : ifNode - ; - -whileLoopNode - : actionNodePrefix (WHILE expressionParameterMember | LOOP emptyParameterMember) actionBodyParameterMember ( - UNTIL expressionParameterMember SEMI - )? - ; - -forLoopNode - : actionNodePrefix FOR forVariableDeclarationMember IN nodeParameterMember actionBodyParameterMember - ; - -forVariableDeclarationMember - : usageDeclaration? - ; - -forVariableDeclaration - : usageDeclaration? - ; - -actionTargetSuccession - : (targetSuccession | guardedTargetSuccession | defaultTargetSuccession) usageBody - ; - -targetSuccession - : sourceEndMember THEN connectorEndMember - ; - -guardedTargetSuccession - : guardExpressionMember THEN transitionSuccessionMember - ; - -defaultTargetSuccession - : ELSE transitionSuccessionMember - ; - -guardedSuccession - : (SUCCESSION usageDeclaration?)? FIRST featureChainMember guardExpressionMember THEN transitionSuccessionMember usageBody - ; - -stateDefinition - : occurrenceDefinitionPrefix STATE DEF definitionDeclaration stateDefBody - ; - -stateDefBody - : SEMI - | ( PARALLEL)? LBRACE stateBodyItem* RBRACE - ; - -stateBodyItem - : nonBehaviorBodyItem - | (sourceSuccessionMember)? behaviorUsageMember (targetTransitionUsageMember)* - | transitionUsageMember - | entryActionMember ( entryTransitionMember)* - | doActionMember - | exitActionMember - ; - -entryActionMember - : memberPrefix ENTRY stateActionUsage - ; - -doActionMember - : memberPrefix DO stateActionUsage - ; - -exitActionMember - : memberPrefix EXIT stateActionUsage - ; - -entryTransitionMember - : memberPrefix (guardedTargetSuccession | THEN transitionSuccessionMember) SEMI - ; - -stateActionUsage - : emptyActionUsage_ SEMI - | statePerformActionUsage - | stateAcceptActionUsage - | stateSendActionUsage - | stateAssignmentActionUsage - ; - -statePerformActionUsage - : performActionUsageDeclaration actionBody - ; - -stateAcceptActionUsage - : acceptNodeDeclaration actionBody - ; - -stateSendActionUsage - : sendNodeDeclaration actionBody - ; - -stateAssignmentActionUsage - : assignmentNodeDeclaration actionBody - ; - -transitionUsageMember - : memberPrefix transitionUsage - ; - -targetTransitionUsageMember - : memberPrefix targetTransitionUsage - ; - -stateUsage - : occurrenceUsagePrefix STATE actionUsageDeclaration stateUsageBody - ; - -stateUsageBody - : SEMI - | ( PARALLEL)? LBRACE stateBodyItem* RBRACE - ; - -exhibitStateUsage - : occurrenceUsagePrefix EXHIBIT ( - ownedReferenceSubsetting featureSpecializationPart? - | STATE usageDeclaration? - ) valuePart? stateUsageBody - ; - -transitionUsage - : TRANSITION (usageDeclaration? FIRST)? featureChainMember emptyParameterMember ( - emptyParameterMember triggerActionMember - )? (guardExpressionMember)? (effectBehaviorMember)? THEN transitionSuccessionMember actionBody - ; - -targetTransitionUsage - : emptyParameterMember ( - TRANSITION (emptyParameterMember triggerActionMember)? (guardExpressionMember)? ( - effectBehaviorMember - )? - | emptyParameterMember triggerActionMember (guardExpressionMember)? (effectBehaviorMember)? - | guardExpressionMember ( effectBehaviorMember)? - )? THEN transitionSuccessionMember actionBody - ; - -triggerActionMember - : ACCEPT triggerAction - ; - -triggerAction - : acceptParameterPart - ; - -guardExpressionMember - : IF ownedExpression - ; - -effectBehaviorMember - : DO effectBehaviorUsage - ; - -effectBehaviorUsage - : emptyActionUsage_ - | transitionPerformActionUsage - | transitionAcceptActionUsage - | transitionSendActionUsage - | transitionAssignmentActionUsage - ; - -transitionPerformActionUsage - : performActionUsageDeclaration (LBRACE actionBodyItem* RBRACE)? - ; - -transitionAcceptActionUsage - : acceptNodeDeclaration (LBRACE actionBodyItem* RBRACE)? - ; - -transitionSendActionUsage - : sendNodeDeclaration (LBRACE actionBodyItem* RBRACE)? - ; - -transitionAssignmentActionUsage - : assignmentNodeDeclaration (LBRACE actionBodyItem* RBRACE)? - ; - -transitionSuccessionMember - : transitionSuccession - ; - -transitionSuccession - : emptyEndMember connectorEndMember - ; - -emptyEndMember - : emptyFeature_ - ; - -calculationDefinition - : occurrenceDefinitionPrefix CALC DEF definitionDeclaration calculationBody - ; - -calculationUsage - : occurrenceUsagePrefix CALC actionUsageDeclaration calculationBody - ; - -calculationBody - : SEMI - | LBRACE calculationBodyPart RBRACE - ; - -calculationBodyPart - : calculationBodyItem* (resultExpressionMember)? - ; - -calculationBodyItem - : actionBodyItem - | returnParameterMember - ; - -returnParameterMember - : memberPrefix RETURN usageElement - ; - -constraintDefinition - : occurrenceDefinitionPrefix CONSTRAINT DEF definitionDeclaration calculationBody - ; - -constraintUsage - : occurrenceUsagePrefix CONSTRAINT constraintUsageDeclaration calculationBody - ; - -assertConstraintUsage - : occurrenceUsagePrefix ASSERT (NOT)? ( - ownedReferenceSubsetting featureSpecializationPart? - | CONSTRAINT constraintUsageDeclaration - ) calculationBody - ; - -constraintUsageDeclaration - : usageDeclaration? valuePart? - ; - -requirementDefinition - : occurrenceDefinitionPrefix REQUIREMENT DEF definitionDeclaration requirementBody - ; - -requirementBody - : SEMI - | LBRACE requirementBodyItem* RBRACE - ; - -requirementBodyItem - : definitionBodyItem - | subjectMember - | requirementConstraintMember - | framedConcernMember - | requirementVerificationMember - | actorMember - | stakeholderMember - ; - -subjectMember - : memberPrefix subjectUsage - ; - -subjectUsage - : SUBJECT usageExtensionKeyword* usage - ; - -requirementConstraintMember - : memberPrefix requirementKind requirementConstraintUsage - ; - -requirementKind - : ASSUME - | REQUIRE - ; - -requirementConstraintUsage - : ownedReferenceSubsetting featureSpecializationPart? requirementBody - | (usageExtensionKeyword* CONSTRAINT | usageExtensionKeyword+) constraintUsageDeclaration calculationBody - ; - -framedConcernMember - : memberPrefix FRAME framedConcernUsage - ; - -framedConcernUsage - : ownedReferenceSubsetting featureSpecializationPart? calculationBody - | (usageExtensionKeyword* CONCERN | usageExtensionKeyword+) calculationUsageDeclaration calculationBody - ; - -actorMember - : memberPrefix actorUsage - ; - -actorUsage - : ACTOR usageExtensionKeyword* usage - ; - -stakeholderMember - : memberPrefix stakeholderUsage - ; - -stakeholderUsage - : STAKEHOLDER usageExtensionKeyword* usage - ; - -requirementUsage - : occurrenceUsagePrefix REQUIREMENT constraintUsageDeclaration requirementBody - ; - -satisfyRequirementUsage - : occurrenceUsagePrefix (ASSERT ( NOT)?)? SATISFY ( - ownedReferenceSubsetting featureSpecializationPart? - | REQUIREMENT usageDeclaration? - ) valuePart? (BY satisfactionSubjectMember)? requirementBody - ; - -satisfactionSubjectMember - : satisfactionParameter - ; - -satisfactionParameter - : satisfactionFeatureValue - ; - -satisfactionFeatureValue - : satisfactionReferenceExpression - ; - -satisfactionReferenceExpression - : featureChainMember - ; - -concernDefinition - : occurrenceDefinitionPrefix CONCERN DEF definitionDeclaration requirementBody - ; - -concernUsage - : occurrenceUsagePrefix CONCERN constraintUsageDeclaration requirementBody - ; - -caseDefinition - : occurrenceDefinitionPrefix CASE DEF definitionDeclaration caseBody - ; - -caseUsage - : occurrenceUsagePrefix CASE constraintUsageDeclaration caseBody - ; - -caseBody - : SEMI - | LBRACE caseBodyItem* ( resultExpressionMember)? RBRACE - ; - -caseBodyItem - : actionBodyItem - | returnParameterMember - | subjectMember - | actorMember - | objectiveMember - ; - -objectiveMember - : memberPrefix OBJECTIVE objectiveRequirementUsage - ; - -objectiveRequirementUsage - : usageExtensionKeyword* constraintUsageDeclaration requirementBody - ; - -analysisCaseDefinition - : occurrenceDefinitionPrefix ANALYSIS DEF definitionDeclaration caseBody - ; - -analysisCaseUsage - : occurrenceUsagePrefix ANALYSIS constraintUsageDeclaration caseBody - ; - -verificationCaseDefinition - : occurrenceDefinitionPrefix VERIFICATION DEF definitionDeclaration caseBody - ; - -verificationCaseUsage - : occurrenceUsagePrefix VERIFICATION constraintUsageDeclaration caseBody - ; - -requirementVerificationMember - : memberPrefix VERIFY requirementVerificationUsage - ; - -requirementVerificationUsage - : ownedReferenceSubsetting featureSpecialization* requirementBody - | (usageExtensionKeyword* REQUIREMENT | usageExtensionKeyword+) constraintUsageDeclaration requirementBody - ; - -useCaseDefinition - : occurrenceDefinitionPrefix USE CASE DEF definitionDeclaration caseBody - ; - -useCaseUsage - : occurrenceUsagePrefix USE CASE constraintUsageDeclaration caseBody - ; - -includeUseCaseUsage - : occurrenceUsagePrefix INCLUDE ( - ownedReferenceSubsetting featureSpecializationPart? - | USE CASE usageDeclaration? - ) valuePart? caseBody - ; - -viewDefinition - : occurrenceDefinitionPrefix VIEW DEF definitionDeclaration viewDefinitionBody - ; - -viewDefinitionBody - : SEMI - | LBRACE viewDefinitionBodyItem* RBRACE - ; - -viewDefinitionBodyItem - : definitionBodyItem - | elementFilterMember - | viewRenderingMember - ; - -viewRenderingMember - : memberPrefix RENDER viewRenderingUsage - ; - -viewRenderingUsage - : ownedReferenceSubsetting featureSpecializationPart? usageBody - | ( usageExtensionKeyword* RENDERING | usageExtensionKeyword+) usage - ; - -viewUsage - : occurrenceUsagePrefix VIEW usageDeclaration? valuePart? viewBody - ; - -viewBody - : SEMI - | LBRACE viewBodyItem* RBRACE - ; - -viewBodyItem - : definitionBodyItem - | elementFilterMember - | viewRenderingMember - | expose - ; - -expose - : EXPOSE (membershipExpose | namespaceExpose) relationshipBody - ; - -membershipExpose - : membershipImport - ; - -namespaceExpose - : namespaceImport - ; - -viewpointDefinition - : occurrenceDefinitionPrefix VIEWPOINT DEF definitionDeclaration requirementBody - ; - -viewpointUsage - : occurrenceUsagePrefix VIEWPOINT constraintUsageDeclaration requirementBody - ; - -renderingDefinition - : occurrenceDefinitionPrefix RENDERING DEF definition - ; - -renderingUsage - : occurrenceUsagePrefix RENDERING usage - ; - -metadataDefinition - : (ABSTRACT)? definitionExtensionKeyword* METADATA DEF definition - ; - -prefixMetadataUsage - : ownedFeatureTyping - ; - -metadataUsage - : usageExtensionKeyword* (AT_SIGN | METADATA) metadataUsageDeclaration ( - ABOUT annotation ( COMMA annotation)* - )? metadataBody - ; - -metadataUsageDeclaration - : (identification? ( COLON | TYPED BY))? ownedFeatureTyping - ; - -metadataBodyUsageMember - : metadataBodyUsage - ; - -metadataBodyUsage - : REF? (COLON_GT_GT | REDEFINES)? ownedRedefinition featureSpecializationPart? valuePart? metadataBody - ; - -extendedDefinition - : basicDefinitionPrefix? definitionExtensionKeyword+ DEF definition - ; - -extendedUsage - : unextendedUsagePrefix usageExtensionKeyword+ usage - ; - -filterPackageImportDeclaration - : membershipImport - | namespaceImportDirect - ; - -namespaceImportDirect - : qualifiedName COLON_COLON STAR (COLON_COLON STAR_STAR)? - ; - -// ===== Stub rules for undefined references ===== -// These rules are referenced in the spec but not fully defined. -// They need manual review and completion. - -calculationUsageDeclaration - : usageDeclaration? valuePart? - ; - -emptyActionUsage_ - : /* epsilon */ - ; - -emptyFeature_ - : /* epsilon */ - ; - -emptyMultiplicity_ - : /* epsilon */ - ; - -emptyUsage_ - : /* epsilon */ - ; - -filterPackageImport - : IDENTIFIER /* TODO: stub for filterPackageImport */ - ; - -nonFeatureChainPrimaryExpression - : IDENTIFIER /* TODO: stub for nonFeatureChainPrimaryExpression */ - ; - -portConjugation - : /* epsilon */ - ; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 67a9e51..a41d30b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,8 @@ "version": "0.17.0", "license": "MIT", "dependencies": { - "antlr4": "^4.13.2", "elkjs": "^0.11.0", - "sysml-v2-lsp": "^0.1.7", + "sysml-v2-lsp": "^0.2.0", "vscode-languageclient": "^9.0.1" }, "devDependencies": { @@ -41,15 +40,11 @@ }, "node_modules/@azu/format-text": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", - "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@azu/style-format": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", - "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", "dev": true, "license": "WTFPL", "dependencies": { @@ -58,8 +53,6 @@ }, "node_modules/@azure/abort-controller": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dev": true, "license": "MIT", "dependencies": { @@ -71,8 +64,6 @@ }, "node_modules/@azure/core-auth": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", "dev": true, "license": "MIT", "dependencies": { @@ -86,8 +77,6 @@ }, "node_modules/@azure/core-client": { "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", - "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", "dev": true, "license": "MIT", "dependencies": { @@ -105,8 +94,6 @@ }, "node_modules/@azure/core-rest-pipeline": { "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", - "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", "dev": true, "license": "MIT", "dependencies": { @@ -124,8 +111,6 @@ }, "node_modules/@azure/core-tracing": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -137,8 +122,6 @@ }, "node_modules/@azure/core-util": { "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", "dev": true, "license": "MIT", "dependencies": { @@ -152,8 +135,6 @@ }, "node_modules/@azure/identity": { "version": "4.13.0", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.0.tgz", - "integrity": "sha512-uWC0fssc+hs1TGGVkkghiaFkkS7NkTxfnCH+Hdg+yTehTpMcehpok4PgUKKdyCH+9ldu6FhiHRv84Ntqj1vVcw==", "dev": true, "license": "MIT", "dependencies": { @@ -175,8 +156,6 @@ }, "node_modules/@azure/logger": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", "dev": true, "license": "MIT", "dependencies": { @@ -189,8 +168,6 @@ }, "node_modules/@azure/msal-browser": { "version": "4.27.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.27.0.tgz", - "integrity": "sha512-bZ8Pta6YAbdd0o0PEaL1/geBsPrLEnyY/RDWqvF1PP9RUH8EMLvUMGoZFYS6jSlUan6KZ9IMTLCnwpWWpQRK/w==", "dev": true, "license": "MIT", "dependencies": { @@ -202,8 +179,6 @@ }, "node_modules/@azure/msal-common": { "version": "15.13.3", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.3.tgz", - "integrity": "sha512-shSDU7Ioecya+Aob5xliW9IGq1Ui8y4EVSdWGyI1Gbm4Vg61WpP95LuzcY214/wEjSn6w4PZYD4/iVldErHayQ==", "dev": true, "license": "MIT", "engines": { @@ -212,8 +187,6 @@ }, "node_modules/@azure/msal-node": { "version": "3.8.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.4.tgz", - "integrity": "sha512-lvuAwsDpPDE/jSuVQOBMpLbXuVuLsPNRwWCyK3/6bPlBk0fGWegqoZ0qjZclMWyQ2JNvIY3vHY7hoFmFmFQcOw==", "dev": true, "license": "MIT", "dependencies": { @@ -227,8 +200,6 @@ }, "node_modules/@babel/code-frame": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "license": "MIT", "dependencies": { @@ -242,8 +213,6 @@ }, "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", "engines": { @@ -252,8 +221,6 @@ }, "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": "MIT", "engines": { @@ -262,8 +229,6 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "license": "MIT", "dependencies": { @@ -275,8 +240,6 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -294,8 +257,6 @@ }, "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": { @@ -304,8 +265,6 @@ }, "node_modules/@eslint/config-array": { "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -319,8 +278,6 @@ }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -330,8 +287,6 @@ }, "node_modules/@eslint/config-array/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -343,8 +298,6 @@ }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -356,8 +309,6 @@ }, "node_modules/@eslint/core": { "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -369,8 +320,6 @@ }, "node_modules/@eslint/eslintrc": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -393,8 +342,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -410,8 +357,6 @@ }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -421,8 +366,6 @@ }, "node_modules/@eslint/eslintrc/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": { @@ -431,15 +374,11 @@ }, "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -451,8 +390,6 @@ }, "node_modules/@eslint/js": { "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", "engines": { @@ -464,8 +401,6 @@ }, "node_modules/@eslint/object-schema": { "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -474,8 +409,6 @@ }, "node_modules/@eslint/plugin-kit": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -488,8 +421,6 @@ }, "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": "Apache-2.0", "engines": { @@ -498,8 +429,6 @@ }, "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": "Apache-2.0", "dependencies": { @@ -512,8 +441,6 @@ }, "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": "Apache-2.0", "engines": { @@ -526,8 +453,6 @@ }, "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": "Apache-2.0", "engines": { @@ -540,8 +465,6 @@ }, "node_modules/@isaacs/balanced-match": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, "license": "MIT", "engines": { @@ -550,8 +473,6 @@ }, "node_modules/@isaacs/brace-expansion": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -563,8 +484,6 @@ }, "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": { @@ -581,15 +500,11 @@ }, "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", "dependencies": { @@ -606,8 +521,6 @@ }, "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": { @@ -616,8 +529,6 @@ }, "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": { @@ -626,15 +537,11 @@ }, "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.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -644,8 +551,6 @@ }, "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": { @@ -658,8 +563,6 @@ }, "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": { @@ -668,8 +571,6 @@ }, "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": { @@ -682,8 +583,6 @@ }, "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, @@ -693,8 +592,6 @@ }, "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": { @@ -706,8 +603,6 @@ }, "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": "MIT", "dependencies": { @@ -724,8 +619,6 @@ }, "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": { @@ -740,8 +633,6 @@ }, "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": { @@ -763,8 +654,6 @@ }, "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", "engines": { @@ -776,8 +665,6 @@ }, "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": { @@ -796,22 +683,16 @@ }, "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" }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -820,8 +701,6 @@ }, "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": { @@ -833,8 +712,6 @@ }, "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": { @@ -843,8 +720,6 @@ }, "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": { @@ -857,8 +732,6 @@ }, "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": { @@ -867,8 +740,6 @@ }, "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", "engines": { @@ -880,15 +751,11 @@ }, "node_modules/@textlint/ast-node-types": { "version": "15.5.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.5.0.tgz", - "integrity": "sha512-K0LEuuTo4rza8yDrlYkRdXLao8Iz/QBMsQdIxRrOOrLYb4HAtZaypZ78c+J6rDA1UlGxadZVLmkkiv4KV5fMKQ==", "dev": true, "license": "MIT" }, "node_modules/@textlint/linter-formatter": { "version": "15.5.0", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.5.0.tgz", - "integrity": "sha512-DPTm2+VXKID41qKQWagg/4JynM6hEEpvbq0PlGsEoC4Xm7IqXIxFym3mSf5+ued0cuiIV1hR9kgXjqGdP035tw==", "dev": true, "license": "MIT", "dependencies": { @@ -910,8 +777,6 @@ }, "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", "engines": { @@ -920,15 +785,11 @@ }, "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": { @@ -940,22 +801,16 @@ }, "node_modules/@textlint/module-interop": { "version": "15.5.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.5.0.tgz", - "integrity": "sha512-rqfouEhBEgZlR9umswWXXRBcmmSM28Trpr9b0duzgehKYVc7wSQCuQMagr6YBJa2NRMfRNinupusbJXMg0ij2A==", "dev": true, "license": "MIT" }, "node_modules/@textlint/resolver": { "version": "15.5.0", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.5.0.tgz", - "integrity": "sha512-kK5nFbg5N3kVoZExQI/dnYjCInmTltvXDnuCRrBxHI01i6kO/o8R7Lc2aFkAZ6/NUZuRPalkyDdwZJke4/R2wg==", "dev": true, "license": "MIT" }, "node_modules/@textlint/types": { "version": "15.5.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.5.0.tgz", - "integrity": "sha512-EjAPbuA+3NyQ9WyFP7iUlddi35F3mGrf4tb4cZM0nWywbtEJ3+XAYqL+5RsF0qFeSguxGir09NdZOWrG9wVOUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -964,64 +819,46 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "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/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/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/node": { "version": "24.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", - "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", "dev": true, "license": "MIT", "dependencies": { @@ -1030,29 +867,21 @@ }, "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/vscode": { "version": "1.107.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.107.0.tgz", - "integrity": "sha512-XS8YE1jlyTIowP64+HoN30OlC1H9xqSlq1eoLZUgFEC8oUTO6euYZxti1xRiLSfZocs4qytTzR6xCBYtioQTCg==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.49.0.tgz", - "integrity": "sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==", "dev": true, "license": "MIT", "dependencies": { @@ -1080,8 +909,6 @@ }, "node_modules/@typescript-eslint/parser": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.49.0.tgz", - "integrity": "sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==", "dev": true, "license": "MIT", "dependencies": { @@ -1105,8 +932,6 @@ }, "node_modules/@typescript-eslint/project-service": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.49.0.tgz", - "integrity": "sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==", "dev": true, "license": "MIT", "dependencies": { @@ -1127,8 +952,6 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.49.0.tgz", - "integrity": "sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==", "dev": true, "license": "MIT", "dependencies": { @@ -1145,8 +968,6 @@ }, "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.49.0.tgz", - "integrity": "sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==", "dev": true, "license": "MIT", "engines": { @@ -1162,8 +983,6 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.49.0.tgz", - "integrity": "sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==", "dev": true, "license": "MIT", "dependencies": { @@ -1187,8 +1006,6 @@ }, "node_modules/@typescript-eslint/types": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.49.0.tgz", - "integrity": "sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==", "dev": true, "license": "MIT", "engines": { @@ -1201,8 +1018,6 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.49.0.tgz", - "integrity": "sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==", "dev": true, "license": "MIT", "dependencies": { @@ -1229,8 +1044,6 @@ }, "node_modules/@typescript-eslint/utils": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.49.0.tgz", - "integrity": "sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==", "dev": true, "license": "MIT", "dependencies": { @@ -1253,8 +1066,6 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.49.0.tgz", - "integrity": "sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==", "dev": true, "license": "MIT", "dependencies": { @@ -1271,8 +1082,6 @@ }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1284,8 +1093,6 @@ }, "node_modules/@typespec/ts-http-runtime": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.2.tgz", - "integrity": "sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==", "dev": true, "license": "MIT", "dependencies": { @@ -1299,8 +1106,6 @@ }, "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": { @@ -1316,8 +1121,6 @@ }, "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": { @@ -1363,8 +1166,6 @@ }, "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", @@ -1380,94 +1181,8 @@ "@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" ], @@ -1478,38 +1193,8 @@ "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/brace-expansion": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1519,8 +1204,6 @@ }, "node_modules/@vscode/vsce/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -1532,8 +1215,6 @@ }, "node_modules/acorn": { "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -1545,8 +1226,6 @@ }, "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": { @@ -1555,8 +1234,6 @@ }, "node_modules/acorn-walk": { "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { @@ -1568,8 +1245,6 @@ }, "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": { @@ -1578,8 +1253,6 @@ }, "node_modules/ajv": { "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { @@ -1595,8 +1268,6 @@ }, "node_modules/ansi-escapes": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", - "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1611,8 +1282,6 @@ }, "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": { @@ -1624,8 +1293,6 @@ }, "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": { @@ -1638,33 +1305,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/antlr4": { - "version": "4.13.2", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", - "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=16" - } - }, "node_modules/arg": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT" }, "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": { @@ -1673,15 +1325,11 @@ }, "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": { @@ -1691,14 +1339,10 @@ }, "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==", "license": "MIT" }, "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": [ { @@ -1719,8 +1363,6 @@ }, "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": { @@ -1735,8 +1377,6 @@ }, "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, @@ -1748,8 +1388,6 @@ }, "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, @@ -1764,22 +1402,16 @@ }, "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==", "dev": true, "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": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -1787,8 +1419,6 @@ }, "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": { @@ -1800,15 +1430,11 @@ }, "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/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -1833,8 +1459,6 @@ }, "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": { @@ -1843,15 +1467,11 @@ }, "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": { @@ -1866,8 +1486,6 @@ }, "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": { @@ -1900,8 +1518,6 @@ }, "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": { @@ -1914,8 +1530,6 @@ }, "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": { @@ -1931,8 +1545,6 @@ }, "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": { @@ -1941,8 +1553,6 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { @@ -1954,8 +1564,6 @@ }, "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": { @@ -1971,8 +1579,6 @@ }, "node_modules/cheerio": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", "dev": true, "license": "MIT", "dependencies": { @@ -1997,8 +1603,6 @@ }, "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==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2015,8 +1619,6 @@ }, "node_modules/chokidar": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { @@ -2031,16 +1633,12 @@ }, "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/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": { @@ -2055,8 +1653,6 @@ }, "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": { @@ -2068,8 +1664,6 @@ }, "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": { @@ -2083,8 +1677,6 @@ }, "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": { @@ -2093,8 +1685,6 @@ }, "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": { @@ -2106,8 +1696,6 @@ }, "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": { @@ -2124,8 +1712,6 @@ }, "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": { @@ -2134,8 +1720,6 @@ }, "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": { @@ -2147,15 +1731,11 @@ }, "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": { @@ -2167,8 +1747,6 @@ }, "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": { @@ -2177,36 +1755,26 @@ }, "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/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/create-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, "license": "MIT" }, "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": "MIT", "dependencies": { @@ -2220,8 +1788,6 @@ }, "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==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2237,8 +1803,6 @@ }, "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==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2250,8 +1814,6 @@ }, "node_modules/cytoscape": { "version": "3.33.1", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", - "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", "dev": true, "license": "MIT", "engines": { @@ -2260,8 +1822,6 @@ }, "node_modules/cytoscape-elk": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cytoscape-elk/-/cytoscape-elk-2.3.0.tgz", - "integrity": "sha512-1h2ZmPOy5HD2+mrfF3P2ICxfnDyPCWg/xLVs7fIjTOzdQu51ydrMtm6Sb7KnhFwLBzhGIVYI2Gbns0njggBarQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2273,15 +1833,11 @@ }, "node_modules/cytoscape-elk/node_modules/elkjs": { "version": "0.9.3", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.3.tgz", - "integrity": "sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==", "dev": true, "license": "EPL-2.0" }, "node_modules/cytoscape-svg": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cytoscape-svg/-/cytoscape-svg-0.4.0.tgz", - "integrity": "sha512-omqIzfPd1Vy9mk6lHTiR2wTbjxELxb9GXSQ2pE6W+GwAe/6/yvOUQ2h5ApFf2QhCBnpMwLkCTq5DZXxBCgUpDw==", "dev": true, "license": "GNU GPLv3", "peerDependencies": { @@ -2290,8 +1846,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2332,8 +1886,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2345,8 +1897,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2355,8 +1905,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2372,8 +1920,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2385,8 +1931,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2395,8 +1939,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2408,8 +1950,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2421,8 +1961,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2431,8 +1969,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2445,8 +1981,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2471,8 +2005,6 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -2481,8 +2013,6 @@ }, "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==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2491,8 +2021,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2504,8 +2032,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2519,8 +2045,6 @@ }, "node_modules/d3-format": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", "dev": true, "license": "ISC", "engines": { @@ -2529,8 +2053,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2542,8 +2064,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2552,8 +2072,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2565,8 +2083,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2575,8 +2091,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2585,8 +2099,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2595,8 +2107,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2605,8 +2115,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2622,8 +2130,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2636,8 +2142,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2646,8 +2150,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2659,8 +2161,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2672,8 +2172,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2685,8 +2183,6 @@ }, "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==", "dev": true, "license": "ISC", "engines": { @@ -2695,8 +2191,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2715,8 +2209,6 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -2732,8 +2224,6 @@ }, "node_modules/debug": { "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2750,8 +2240,6 @@ }, "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", "engines": { @@ -2763,8 +2251,6 @@ }, "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", "optional": true, @@ -2780,8 +2266,6 @@ }, "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", "optional": true, @@ -2791,15 +2275,11 @@ }, "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/default-browser": { "version": "5.4.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", - "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", "dev": true, "license": "MIT", "dependencies": { @@ -2815,8 +2295,6 @@ }, "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": "MIT", "engines": { @@ -2828,8 +2306,6 @@ }, "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", "engines": { @@ -2841,8 +2317,6 @@ }, "node_modules/delaunator": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", "dev": true, "license": "ISC", "dependencies": { @@ -2851,8 +2325,6 @@ }, "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", "engines": { @@ -2861,8 +2333,6 @@ }, "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", "optional": true, @@ -2872,8 +2342,6 @@ }, "node_modules/diff": { "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2882,8 +2350,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -2897,8 +2363,6 @@ }, "node_modules/domelementtype": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { @@ -2910,8 +2374,6 @@ }, "node_modules/domhandler": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2926,8 +2388,6 @@ }, "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==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2941,8 +2401,6 @@ }, "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": { @@ -2956,15 +2414,11 @@ }, "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" }, "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", "dependencies": { @@ -2973,8 +2427,6 @@ }, "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", "dependencies": { @@ -2990,21 +2442,15 @@ }, "node_modules/elkjs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.11.0.tgz", - "integrity": "sha512-u4J8h9mwEDaYMqo0RYJpqNMFDoMK7f+pu4GjcV+N8jIC7TRdORgzkfSjTJemhqONFfH6fBI3wpysgWbhgVWIXw==", "license": "EPL-2.0" }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -3017,8 +2463,6 @@ }, "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, @@ -3028,8 +2472,6 @@ }, "node_modules/entities": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -3041,8 +2483,6 @@ }, "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", "engines": { @@ -3054,8 +2494,6 @@ }, "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": { @@ -3064,8 +2502,6 @@ }, "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", "engines": { @@ -3074,8 +2510,6 @@ }, "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": { @@ -3087,8 +2521,6 @@ }, "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": { @@ -3103,8 +2535,6 @@ }, "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", "engines": { @@ -3113,8 +2543,6 @@ }, "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", "engines": { @@ -3126,8 +2554,6 @@ }, "node_modules/eslint": { "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "dependencies": { @@ -3186,8 +2612,6 @@ }, "node_modules/eslint-scope": { "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3203,8 +2627,6 @@ }, "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": { @@ -3216,8 +2638,6 @@ }, "node_modules/eslint/node_modules/ajv": { "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -3233,8 +2653,6 @@ }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -3244,8 +2662,6 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3257,8 +2673,6 @@ }, "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": { @@ -3267,15 +2681,11 @@ }, "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/eslint/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -3287,8 +2697,6 @@ }, "node_modules/espree": { "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3305,8 +2713,6 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3318,8 +2724,6 @@ }, "node_modules/esquery": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3331,8 +2735,6 @@ }, "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", "dependencies": { @@ -3344,8 +2746,6 @@ }, "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": { @@ -3354,8 +2754,6 @@ }, "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": { @@ -3364,8 +2762,6 @@ }, "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 OR WTFPL)", "optional": true, @@ -3375,15 +2771,11 @@ }, "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": { @@ -3399,8 +2791,6 @@ }, "node_modules/fast-glob/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": { @@ -3412,22 +2802,16 @@ }, "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": [ { @@ -3443,8 +2827,6 @@ }, "node_modules/fastq": { "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3453,8 +2835,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -3463,8 +2843,6 @@ }, "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": { @@ -3476,8 +2854,6 @@ }, "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": { @@ -3489,8 +2865,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==", "dev": true, "license": "MIT", "dependencies": { @@ -3506,8 +2880,6 @@ }, "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": { @@ -3516,8 +2888,6 @@ }, "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": "MIT", "dependencies": { @@ -3530,15 +2900,11 @@ }, "node_modules/flatted": { "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "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", "dependencies": { @@ -3554,8 +2920,6 @@ }, "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": { @@ -3571,16 +2935,12 @@ }, "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", "optional": true }, "node_modules/fs-extra": { "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", "dev": true, "license": "MIT", "dependencies": { @@ -3594,8 +2954,6 @@ }, "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": { @@ -3604,8 +2962,6 @@ }, "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": { @@ -3614,8 +2970,6 @@ }, "node_modules/get-east-asian-width": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "dev": true, "license": "MIT", "engines": { @@ -3627,8 +2981,6 @@ }, "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": { @@ -3652,8 +3004,6 @@ }, "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": { @@ -3666,16 +3016,12 @@ }, "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": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -3698,8 +3044,6 @@ }, "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": "ISC", "dependencies": { @@ -3711,8 +3055,6 @@ }, "node_modules/glob/node_modules/minimatch": { "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -3727,8 +3069,6 @@ }, "node_modules/globals": { "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { @@ -3740,8 +3080,6 @@ }, "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": { @@ -3761,8 +3099,6 @@ }, "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": "MIT", "engines": { @@ -3774,15 +3110,11 @@ }, "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/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", "engines": { @@ -3791,8 +3123,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==", "dev": true, "license": "MIT", "engines": { @@ -3804,8 +3134,6 @@ }, "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": { @@ -3820,8 +3148,6 @@ }, "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": "MIT", "dependencies": { @@ -3833,8 +3159,6 @@ }, "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": { @@ -3843,8 +3167,6 @@ }, "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": "ISC", "dependencies": { @@ -3856,15 +3178,11 @@ }, "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.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -3883,8 +3201,6 @@ }, "node_modules/htmlparser2/node_modules/entities": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -3896,8 +3212,6 @@ }, "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": { @@ -3910,8 +3224,6 @@ }, "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": { @@ -3924,8 +3236,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -3937,8 +3247,6 @@ }, "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, "funding": [ { @@ -3959,8 +3267,6 @@ }, "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", "engines": { @@ -3969,15 +3275,11 @@ }, "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-fresh": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3993,8 +3295,6 @@ }, "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", "engines": { @@ -4003,8 +3303,6 @@ }, "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", "engines": { @@ -4016,23 +3314,17 @@ }, "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": "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==", "dev": true, "license": "ISC", "engines": { @@ -4041,8 +3333,6 @@ }, "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": { @@ -4057,8 +3347,6 @@ }, "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", "engines": { @@ -4067,8 +3355,6 @@ }, "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", "engines": { @@ -4077,8 +3363,6 @@ }, "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": { @@ -4090,8 +3374,6 @@ }, "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": { @@ -4109,8 +3391,6 @@ }, "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": { @@ -4122,8 +3402,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==", "dev": true, "license": "MIT", "engines": { @@ -4132,8 +3410,6 @@ }, "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": { @@ -4142,8 +3418,6 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", "engines": { @@ -4152,8 +3426,6 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { @@ -4165,8 +3437,6 @@ }, "node_modules/is-wsl": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, "license": "MIT", "dependencies": { @@ -4181,22 +3451,16 @@ }, "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": { @@ -4205,8 +3469,6 @@ }, "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": { @@ -4220,8 +3482,6 @@ }, "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": { @@ -4234,8 +3494,6 @@ }, "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": "Artistic-2.0", "dependencies": { @@ -4252,8 +3510,6 @@ }, "node_modules/jackspeak": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4268,15 +3524,11 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -4288,29 +3540,21 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "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", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -4322,15 +3566,11 @@ }, "node_modules/jsonc-parser": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -4342,8 +3582,6 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "dev": true, "license": "MIT", "dependencies": { @@ -4365,8 +3603,6 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { @@ -4378,8 +3614,6 @@ }, "node_modules/jwa": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "dev": true, "license": "MIT", "dependencies": { @@ -4390,8 +3624,6 @@ }, "node_modules/jws": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "dev": true, "license": "MIT", "dependencies": { @@ -4401,8 +3633,6 @@ }, "node_modules/keytar": { "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4414,8 +3644,6 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -4424,8 +3652,6 @@ }, "node_modules/leven": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", "engines": { @@ -4434,8 +3660,6 @@ }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4448,8 +3672,6 @@ }, "node_modules/lie": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4458,8 +3680,6 @@ }, "node_modules/linkify-it": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4468,8 +3688,6 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -4484,78 +3702,56 @@ }, "node_modules/lodash": { "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true, "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "dev": true, "license": "MIT" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "dev": true, "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "dev": true, "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true, "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "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", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true, "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -4571,8 +3767,6 @@ }, "node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "license": "ISC", "dependencies": { @@ -4584,8 +3778,6 @@ }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { @@ -4600,15 +3792,11 @@ }, "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/markdown-it": { "version": "14.1.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", - "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", "dependencies": { @@ -4625,8 +3813,6 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { @@ -4635,15 +3821,11 @@ }, "node_modules/mdurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -4652,8 +3834,6 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -4666,8 +3846,6 @@ }, "node_modules/mime": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", "bin": { @@ -4679,8 +3857,6 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -4689,8 +3865,6 @@ }, "node_modules/mime-types": { "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -4702,8 +3876,6 @@ }, "node_modules/mimic-function": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "license": "MIT", "engines": { @@ -4715,8 +3887,6 @@ }, "node_modules/mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "license": "MIT", "optional": true, @@ -4729,8 +3899,6 @@ }, "node_modules/minimatch": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -4745,8 +3913,6 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "optional": true, @@ -4756,8 +3922,6 @@ }, "node_modules/minipass": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "license": "ISC", "engines": { @@ -4766,16 +3930,12 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true, "license": "MIT", "optional": true }, "node_modules/mocha": { "version": "11.7.5", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz", - "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", "dev": true, "license": "MIT", "dependencies": { @@ -4811,8 +3971,6 @@ }, "node_modules/mocha/node_modules/glob": { "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -4832,8 +3990,6 @@ }, "node_modules/mocha/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": "BlueOak-1.0.0", "dependencies": { @@ -4848,15 +4004,11 @@ }, "node_modules/mocha/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/mocha/node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4872,8 +4024,6 @@ }, "node_modules/mocha/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==", "dev": true, "license": "MIT", "dependencies": { @@ -4888,37 +4038,27 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true, "license": "ISC" }, "node_modules/napi-build-utils": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", "dev": true, "license": "MIT", "optional": true }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/node-abi": { "version": "3.85.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz", - "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==", "dev": true, "license": "MIT", "optional": true, @@ -4931,16 +4071,12 @@ }, "node_modules/node-addon-api": { "version": "4.3.0", - "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-sarif-builder": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.3.1.tgz", - "integrity": "sha512-8z5dAbhpxmk/WRQHXlv4V0h+9Y4Ugk+w08lyhV/7E/CQX9yDdBc3025/EG+RSMJU2aPFh/IQ7XDV7Ti5TLt/TA==", "dev": true, "license": "MIT", "dependencies": { @@ -4953,8 +4089,6 @@ }, "node_modules/normalize-package-data": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4968,8 +4102,6 @@ }, "node_modules/normalize-package-data/node_modules/hosted-git-info": { "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", "dependencies": { @@ -4981,15 +4113,11 @@ }, "node_modules/normalize-package-data/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5001,8 +4129,6 @@ }, "node_modules/object-inspect": { "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -5014,8 +4140,6 @@ }, "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, @@ -5025,8 +4149,6 @@ }, "node_modules/onetime": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5041,8 +4163,6 @@ }, "node_modules/open": { "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "license": "MIT", "dependencies": { @@ -5060,8 +4180,6 @@ }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -5078,8 +4196,6 @@ }, "node_modules/ora": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", - "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", "dev": true, "license": "MIT", "dependencies": { @@ -5102,8 +4218,6 @@ }, "node_modules/ora/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", "engines": { @@ -5115,15 +4229,11 @@ }, "node_modules/ora/node_modules/emoji-regex": { "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, "node_modules/ora/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", "engines": { @@ -5135,8 +4245,6 @@ }, "node_modules/ora/node_modules/log-symbols": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", "dev": true, "license": "MIT", "dependencies": { @@ -5152,8 +4260,6 @@ }, "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "dev": true, "license": "MIT", "engines": { @@ -5165,8 +4271,6 @@ }, "node_modules/ora/node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5183,8 +4287,6 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5199,8 +4301,6 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -5215,8 +4315,6 @@ }, "node_modules/p-map": { "version": "7.0.4", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", - "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", "dev": true, "license": "MIT", "engines": { @@ -5228,22 +4326,16 @@ }, "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", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/pako": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -5255,8 +4347,6 @@ }, "node_modules/parse-json": { "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5273,8 +4363,6 @@ }, "node_modules/parse-semver": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5283,8 +4371,6 @@ }, "node_modules/parse-semver/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "license": "ISC", "bin": { @@ -5293,8 +4379,6 @@ }, "node_modules/parse5": { "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, "license": "MIT", "dependencies": { @@ -5306,8 +4390,6 @@ }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "dev": true, "license": "MIT", "dependencies": { @@ -5320,8 +4402,6 @@ }, "node_modules/parse5-parser-stream": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "dev": true, "license": "MIT", "dependencies": { @@ -5333,8 +4413,6 @@ }, "node_modules/parse5/node_modules/entities": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -5346,8 +4424,6 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -5356,8 +4432,6 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -5366,8 +4440,6 @@ }, "node_modules/path-scurry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5383,8 +4455,6 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -5393,8 +4463,6 @@ }, "node_modules/path-type": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", "dev": true, "license": "MIT", "engines": { @@ -5406,22 +4474,16 @@ }, "node_modules/pend": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true, "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -5433,8 +4495,6 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", "engines": { @@ -5443,8 +4503,6 @@ }, "node_modules/prebuild-install": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "dev": true, "license": "MIT", "optional": true, @@ -5471,8 +4529,6 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { @@ -5481,15 +4537,11 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, "license": "MIT" }, "node_modules/pump": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", "dev": true, "license": "MIT", "optional": true, @@ -5500,8 +4552,6 @@ }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -5510,8 +4560,6 @@ }, "node_modules/punycode.js": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, "license": "MIT", "engines": { @@ -5520,8 +4568,6 @@ }, "node_modules/qs": { "version": "6.14.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", - "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5536,8 +4582,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -5557,8 +4601,6 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5567,8 +4609,6 @@ }, "node_modules/rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "optional": true, @@ -5584,8 +4624,6 @@ }, "node_modules/rc-config-loader": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", - "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, "license": "MIT", "dependencies": { @@ -5597,8 +4635,6 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", "optional": true, @@ -5608,8 +4644,6 @@ }, "node_modules/read": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "license": "ISC", "dependencies": { @@ -5621,8 +4655,6 @@ }, "node_modules/read-pkg": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", - "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, "license": "MIT", "dependencies": { @@ -5641,8 +4673,6 @@ }, "node_modules/read-pkg/node_modules/unicorn-magic": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, "license": "MIT", "engines": { @@ -5654,8 +4684,6 @@ }, "node_modules/readable-stream": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -5670,15 +4698,11 @@ }, "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/readdirp": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { @@ -5691,8 +4715,6 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -5701,8 +4723,6 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", "engines": { @@ -5711,8 +4731,6 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -5721,8 +4739,6 @@ }, "node_modules/restore-cursor": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "license": "MIT", "dependencies": { @@ -5738,8 +4754,6 @@ }, "node_modules/reusify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -5749,8 +4763,6 @@ }, "node_modules/rimraf": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz", - "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5769,8 +4781,6 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5787,8 +4797,6 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5803,15 +4811,11 @@ }, "node_modules/robust-predicates": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", "dev": true, "license": "Unlicense" }, "node_modules/run-applescript": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", "dev": true, "license": "MIT", "engines": { @@ -5823,8 +4827,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -5847,15 +4849,11 @@ }, "node_modules/rw": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -5875,22 +4873,16 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT" }, "node_modules/sax": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/secretlint": { "version": "10.2.2", - "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz", - "integrity": "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==", "dev": true, "license": "MIT", "dependencies": { @@ -5911,8 +4903,6 @@ }, "node_modules/semver": { "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -5923,8 +4913,6 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -5933,15 +4921,11 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true, "license": "MIT" }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -5953,8 +4937,6 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -5963,8 +4945,6 @@ }, "node_modules/side-channel": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { @@ -5983,8 +4963,6 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { @@ -6000,8 +4978,6 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { @@ -6019,8 +4995,6 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { @@ -6039,8 +5013,6 @@ }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { @@ -6052,8 +5024,6 @@ }, "node_modules/simple-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true, "funding": [ { @@ -6074,8 +5044,6 @@ }, "node_modules/simple-get": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "dev": true, "funding": [ { @@ -6101,8 +5069,6 @@ }, "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", "engines": { @@ -6114,8 +5080,6 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6132,8 +5096,6 @@ }, "node_modules/spdx-correct": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6143,15 +5105,11 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6161,15 +5119,11 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, "node_modules/stdin-discarder": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", "dev": true, "license": "MIT", "engines": { @@ -6181,8 +5135,6 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { @@ -6191,15 +5143,11 @@ }, "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6214,8 +5162,6 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { @@ -6229,8 +5175,6 @@ }, "node_modules/string-width-cjs/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": { @@ -6239,8 +5183,6 @@ }, "node_modules/string-width-cjs/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": { @@ -6252,8 +5194,6 @@ }, "node_modules/string-width/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": { @@ -6262,8 +5202,6 @@ }, "node_modules/string-width/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": { @@ -6275,8 +5213,6 @@ }, "node_modules/strip-ansi": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { @@ -6292,8 +5228,6 @@ "node_modules/strip-ansi-cjs": { "name": "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": { @@ -6305,8 +5239,6 @@ }, "node_modules/strip-ansi-cjs/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": { @@ -6315,8 +5247,6 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -6328,8 +5258,6 @@ }, "node_modules/structured-source": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", - "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6338,8 +5266,6 @@ }, "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": { @@ -6351,8 +5277,6 @@ }, "node_modules/supports-hyperlinks": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", - "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -6367,9 +5291,9 @@ } }, "node_modules/sysml-v2-lsp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/sysml-v2-lsp/-/sysml-v2-lsp-0.1.7.tgz", - "integrity": "sha512-QBjpixUmhJJmqaBu1oQ5qBx/Oj7MWW4zxO4CjuA9YBZC2O3AI4fx6SlrWL0FWFAUxs7pGGJU8Nf5zkQZU6zQlQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sysml-v2-lsp/-/sysml-v2-lsp-0.2.0.tgz", + "integrity": "sha512-zCPam51DaGZqqFq13r4BKmhaN5ZmzfNXLMmEVKoiPfqcSNOV6WO0zvwCeRSSOixg57l/5DabazWs9Cr5rxVDnw==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -6382,8 +5306,6 @@ }, "node_modules/table": { "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -6399,8 +5321,6 @@ }, "node_modules/table/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": { @@ -6409,8 +5329,6 @@ }, "node_modules/table/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": { @@ -6422,8 +5340,6 @@ }, "node_modules/tar-fs": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", "dev": true, "license": "MIT", "optional": true, @@ -6436,8 +5352,6 @@ }, "node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, "license": "MIT", "optional": true, @@ -6454,8 +5368,6 @@ }, "node_modules/tar-stream/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, @@ -6470,8 +5382,6 @@ }, "node_modules/terminal-link": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz", - "integrity": "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==", "dev": true, "license": "MIT", "dependencies": { @@ -6487,8 +5397,6 @@ }, "node_modules/test-exclude": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, "license": "ISC", "dependencies": { @@ -6502,8 +5410,6 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -6523,8 +5429,6 @@ }, "node_modules/test-exclude/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": "BlueOak-1.0.0", "dependencies": { @@ -6539,15 +5443,11 @@ }, "node_modules/test-exclude/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/test-exclude/node_modules/path-scurry": { "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6563,15 +5463,11 @@ }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "license": "MIT" }, "node_modules/textextensions": { "version": "6.11.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", - "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", "dev": true, "license": "Artistic-2.0", "dependencies": { @@ -6586,8 +5482,6 @@ }, "node_modules/tinyglobby": { "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6603,8 +5497,6 @@ }, "node_modules/tinyglobby/node_modules/fdir": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { @@ -6621,8 +5513,6 @@ }, "node_modules/tinyglobby/node_modules/picomatch": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -6634,8 +5524,6 @@ }, "node_modules/tmp": { "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, "license": "MIT", "engines": { @@ -6644,8 +5532,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6657,8 +5543,6 @@ }, "node_modules/ts-api-utils": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -6670,8 +5554,6 @@ }, "node_modules/ts-node": { "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6714,15 +5596,11 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, "node_modules/tunnel": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true, "license": "MIT", "engines": { @@ -6731,8 +5609,6 @@ }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -6745,8 +5621,6 @@ }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -6758,8 +5632,6 @@ }, "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": { @@ -6771,8 +5643,6 @@ }, "node_modules/typed-rest-client": { "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", "dev": true, "license": "MIT", "dependencies": { @@ -6783,8 +5653,6 @@ }, "node_modules/typescript": { "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6797,22 +5665,16 @@ }, "node_modules/uc.micro": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true, "license": "MIT" }, "node_modules/underscore": { "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "dev": true, "license": "MIT" }, "node_modules/undici": { "version": "7.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", - "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", "dev": true, "license": "MIT", "engines": { @@ -6821,15 +5683,11 @@ }, "node_modules/undici-types": { "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, "node_modules/unicorn-magic": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", "engines": { @@ -6841,8 +5699,6 @@ }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -6851,8 +5707,6 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6861,22 +5715,16 @@ }, "node_modules/url-join": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true, "license": "MIT" }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "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, "license": "MIT", "bin": { @@ -6885,15 +5733,11 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { @@ -6907,8 +5751,6 @@ }, "node_modules/v8-to-istanbul/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": { @@ -6918,8 +5760,6 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -6929,8 +5769,6 @@ }, "node_modules/version-range": { "version": "4.15.0", - "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz", - "integrity": "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==", "dev": true, "license": "Artistic-2.0", "engines": { @@ -6942,8 +5780,6 @@ }, "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==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -6951,8 +5787,6 @@ }, "node_modules/vscode-languageclient": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", - "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", "license": "MIT", "dependencies": { "minimatch": "^5.1.0", @@ -6965,8 +5799,6 @@ }, "node_modules/vscode-languageclient/node_modules/minimatch": { "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -6977,8 +5809,6 @@ }, "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==", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", @@ -6987,14 +5817,10 @@ }, "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/whatwg-encoding": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7006,8 +5832,6 @@ }, "node_modules/whatwg-mimetype": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "dev": true, "license": "MIT", "engines": { @@ -7016,8 +5840,6 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -7032,8 +5854,6 @@ }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -7042,15 +5862,11 @@ }, "node_modules/workerpool": { "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true, "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7068,8 +5884,6 @@ "node_modules/wrap-ansi-cjs": { "name": "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": { @@ -7086,8 +5900,6 @@ }, "node_modules/wrap-ansi-cjs/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": { @@ -7096,8 +5908,6 @@ }, "node_modules/wrap-ansi-cjs/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": { @@ -7109,8 +5919,6 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -7122,15 +5930,11 @@ }, "node_modules/wrap-ansi/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/wrap-ansi/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", "dependencies": { @@ -7147,16 +5951,12 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC", "optional": true }, "node_modules/wsl-utils": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", "dev": true, "license": "MIT", "dependencies": { @@ -7171,8 +5971,6 @@ }, "node_modules/xml2js": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dev": true, "license": "MIT", "dependencies": { @@ -7185,8 +5983,6 @@ }, "node_modules/xmlbuilder": { "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, "license": "MIT", "engines": { @@ -7195,8 +5991,6 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -7205,15 +5999,11 @@ }, "node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { @@ -7231,8 +6021,6 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { @@ -7241,8 +6029,6 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "license": "MIT", "dependencies": { @@ -7257,8 +6043,6 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -7268,8 +6052,6 @@ }, "node_modules/yazl": { "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", "dev": true, "license": "MIT", "dependencies": { @@ -7278,8 +6060,6 @@ }, "node_modules/yn": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "license": "MIT", "engines": { @@ -7288,8 +6068,6 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index ae093ed..eae4fbd 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ ], "activationEvents": [ "onLanguage:sysml", + "onMcpServerDefinitionProvider:sysml-v2-mcp", "onCommand:sysml.showVisualizer", "onCommand:sysml.showModelExplorer", "onCommand:sysml.formatDocument", @@ -37,7 +38,11 @@ "onCommand:sysml.exportVisualization", "onCommand:sysml.refreshModelTree", "onCommand:sysml.refreshVisualization", - "onCommand:sysml.jumpToDefinition" + "onCommand:sysml.jumpToDefinition", + "onCommand:sysml.showTypeHierarchy", + "onCommand:sysml.showCallHierarchy", + "onCommand:sysml.showFeatureInspector", + "onCommand:sysml.showModelDashboard" ], "main": "./out/extension.js", "contributes": { @@ -143,9 +148,40 @@ "title": "Refresh Visualization", "category": "SysML", "icon": "$(refresh)" + }, + { + "command": "sysml.showTypeHierarchy", + "title": "Show Type Hierarchy", + "category": "SysML", + "icon": "$(type-hierarchy)" + }, + { + "command": "sysml.showCallHierarchy", + "title": "Show Call Hierarchy", + "category": "SysML", + "icon": "$(call-hierarchy)" + }, + { + "command": "sysml.showFeatureInspector", + "title": "Show Feature Inspector", + "category": "SysML", + "icon": "$(inspect)" + }, + { + "command": "sysml.showModelDashboard", + "title": "Show Model Dashboard", + "category": "SysML", + "icon": "$(dashboard)" } ], "menus": { + "editor/context": [ + { + "command": "sysml.showFeatureInspector", + "when": "resourceLangId == sysml", + "group": "sysml@1" + } + ], "editor/title": [ { "command": "sysml.showVisualizer", @@ -177,6 +213,22 @@ }, { "command": "sysml.changeVisualizerView" + }, + { + "command": "sysml.showTypeHierarchy", + "when": "resourceLangId == sysml" + }, + { + "command": "sysml.showCallHierarchy", + "when": "resourceLangId == sysml" + }, + { + "command": "sysml.showFeatureInspector", + "when": "resourceLangId == sysml" + }, + { + "command": "sysml.showModelDashboard", + "when": "resourceLangId == sysml" } ], "explorer/context": [ @@ -199,6 +251,11 @@ "command": "sysml.visualizeFolderWithView", "when": "resourceExtname == .sysml", "group": "sysml@2" + }, + { + "command": "sysml.showModelDashboard", + "when": "resourceExtname == .sysml", + "group": "sysml@3" } ] }, @@ -281,7 +338,7 @@ "scope": "resource", "type": "string", "default": "", - "description": "Path to SysML v2 standard library directory." + "markdownDescription": "Absolute path to a SysML v2 standard library directory (e.g. from the [SysML-v2-Release](https://github.com/Systems-Modeling/SysML-v2-Release) repo). Leave empty to use the bundled library. The directory should contain `Kernel Libraries/`, `Systems Library/`, and optionally `Domain Libraries/`." }, "sysml.inlayHints.enabled": { "type": "boolean", @@ -298,23 +355,12 @@ ] }, "scripts": { - "vscode:prepublish": "npm run antlr:generate && npm run compile && npm run build:webview-assets", - "antlr:generate": "npm run antlr:lexer && npm run antlr:parser && npm run antlr:postprocess", - "antlr:lexer": "cd grammar && java -Xss16m -jar ../tools/antlr-4.13.2-complete.jar -Dlanguage=TypeScript -visitor -no-listener -o ../src/parser/generated/grammar SysMLv2Lexer.g4", - "antlr:parser": "cd grammar && java -Xss16m -jar ../tools/antlr-4.13.2-complete.jar -Dlanguage=TypeScript -visitor -no-listener -o ../src/parser/generated/grammar SysMLv2Parser.g4", - "antlr:postprocess": "node scripts/postprocess-antlr.js", - "antlr:clean": "rimraf src/parser/generated", - "grammar:download": "mkdir -p grammar && rm -rf /tmp/sysml-grammar-dl && mkdir -p /tmp/sysml-grammar-dl && gh release download --repo daltskin/sysml-v2-grammar --pattern '*.zip' --dir /tmp/sysml-grammar-dl --clobber && unzip -o -j /tmp/sysml-grammar-dl/*.zip '*.g4' -d grammar && rm -rf /tmp/sysml-grammar-dl", - "grammar:full": "npm run grammar:download && npm run antlr:generate", + "vscode:prepublish": "npm run compile && npm run build:webview-assets", "compile": "tsc -p ./", "watch": "tsc -watch -p ./", "pretest": "npm run compile", "test": "node ./out/test/runTest.js", - "test:unit": "npm run compile && mocha --require ts-node/register 'src/test/**/*.test.ts'", - "test:views": "node ./scripts/test-all-views.js", - "test:parser": "node ./scripts/test-parser-standalone.js", - "test:visual": "node ./scripts/generate-visual-test-guide.js", - "test:all": "node ./scripts/run-all-tests.js", + "test:unit": "npm run compile && mocha --ui tdd --require ts-node/register --require src/test/register-vscode-mock.ts src/test/exportScaleLogic.test.ts", "build:webview-assets": "node ./scripts/copy-webview-assets.js", "lint": "eslint src --ext ts", "lint:fix": "eslint src --ext ts --fix", @@ -351,9 +397,8 @@ "typescript": "^5.6.3" }, "dependencies": { - "antlr4": "^4.13.2", "elkjs": "^0.11.0", - "sysml-v2-lsp": "^0.1.7", + "sysml-v2-lsp": "^0.2.0", "vscode-languageclient": "^9.0.1" }, "overrides": { diff --git a/scripts/generate-visual-test-guide.js b/scripts/generate-visual-test-guide.js deleted file mode 100644 index 866775c..0000000 --- a/scripts/generate-visual-test-guide.js +++ /dev/null @@ -1,359 +0,0 @@ -#!/usr/bin/env node -/** - * Visual Testing Summary Generator - * Creates a comprehensive report of what each view should display for each sample file - */ - -const fs = require('fs'); -const path = require('path'); - -const colors = { - reset: '\x1b[0m', - red: '\x1b[31m', - green: '\x1b[32m', - yellow: '\x1b[33m', - blue: '\x1b[34m', - cyan: '\x1b[36m', - bold: '\x1b[1m', - dim: '\x1b[2m' -}; - -// View test expectations - what to look for in each view -const VIEW_CHECKS = { - 'General View': { - id: 'elk', - checks: [ - 'ELK algorithm loads successfully', - 'Nested elements shown inside parent containers', - 'Attributes displayed in nodes (up to 4)', - 'Relationship edges drawn between connected elements', - 'Doc tooltip appears on hover' - ] - }, - 'Interconnection View': { - id: 'ibd', - checks: [ - 'Parts displayed as rectangles', - 'Ports shown on part boundaries', - 'Connectors drawn between ports', - 'Part names visible and readable' - ] - }, - 'Activity View': { - id: 'activity', - checks: [ - 'Action nodes displayed', - 'Decision/merge nodes shown as diamonds', - 'Flow arrows connecting actions', - 'Swim lanes if defined' - ] - }, - 'State View': { - id: 'state', - checks: [ - 'State nodes displayed as rounded rectangles', - 'Transitions shown as arrows', - 'Initial state marked (filled circle)', - 'Guard conditions shown on transitions' - ] - }, - 'Use Case View': { - id: 'usecase', - checks: [ - 'Actors shown as stick figures or labeled shapes', - 'Use cases shown as ovals', - 'Association lines connecting actors to use cases', - 'Use case names readable' - ] - }, - 'Package View': { - id: 'package', - checks: [ - 'Package containers with tab styling', - 'Package name in header', - 'Child count visible', - 'Import/dependency arrows' - ] - }, - 'Tree View': { - id: 'tree', - checks: [ - 'Hierarchical tree layout', - 'Expandable/collapsible nodes', - 'Element type icons', - 'Lines connecting parents to children' - ] - }, - 'Hierarchy View': { - id: 'hierarchy', - checks: [ - 'Nested container layout', - 'Text wrapping in containers', - 'No overlapping elements', - 'Proper indentation for nesting levels' - ] - }, - 'Graph View': { - id: 'graph', - checks: [ - 'Force-directed layout', - 'Nodes for all elements', - 'Edges for relationships', - 'Interactive drag/zoom' - ] - } -}; - -// Sample files and what content they should have for each view -const SAMPLE_EXPECTATIONS = { - 'batmobile.sysml': { - description: 'Batmobile example - parts, actions, requirements', - expectedViews: { - 'General View': '✓ Should show Batmobile package with nested parts (Vehicle, Wheel, Engine)', - 'Interconnection View': '✓ Should show battery-engine connection with PowerInterface', - 'Activity View': '✓ Should show rocketBoost action', - 'State View': '⚠ No states defined - will show placeholder', - 'Use Case View': '✓ Should show driver actor', - 'Package View': '✓ Should show Batmobile package', - 'Hierarchy View': '✓ Should show part hierarchy' - } - }, - 'smart-home.sysml': { - description: 'Smart home IoT example - states, parts, use cases', - expectedViews: { - 'General View': '✓ Should show SmartHomeSystem with subsystems', - 'Interconnection View': '✓ Should show 71 parts (lighting, security, climate, etc)', - 'Activity View': '⚠ No actions - shows placeholder', - 'State View': '✓ Should show homeStates and securityStates (21 states, 15 transitions)', - 'Use Case View': '✓ Should show 6 actors and 3 use cases', - 'Package View': '✓ Should show SmartHomeSystem package', - 'Hierarchy View': '✓ Should show nested part definitions' - } - }, - 'Camera Example/camera-states.sysml': { - description: 'Camera state machine focused file', - expectedViews: { - 'General View': '✓ Should show state machine structure', - 'Interconnection View': '⚠ No parts - shows placeholder', - 'Activity View': '✓ Should show 10 action definitions', - 'State View': '✓ Should show cameraPowerStates with 10 states', - 'Use Case View': '⚠ No actors - shows placeholder', - 'Package View': '✓ Should show CameraStateMachine package', - 'Hierarchy View': '✓ Should show state hierarchy' - } - }, - 'Camera Example/camera-usecases.sysml': { - description: 'Camera use cases focused file', - expectedViews: { - 'General View': '✓ Should show use case structure', - 'Interconnection View': '⚠ No parts - shows placeholder', - 'Activity View': '⚠ No actions - shows placeholder', - 'State View': '⚠ No states - shows placeholder', - 'Use Case View': '✓ Should show Photographer, CameraSystem, StorageDevice + 9 use cases', - 'Package View': '✓ Should show CameraUseCases package', - 'Hierarchy View': '✓ Should show actor/use case hierarchy' - } - }, - 'toaster-system.sysml': { - description: 'Toaster system - parts, actions, requirements', - expectedViews: { - 'General View': '✓ Should show Toaster parts', - 'Interconnection View': '✓ Should show 16 parts', - 'Activity View': '✓ Should show 9 actions (ToastBread, CleanToaster)', - 'State View': '⚠ No states - shows placeholder', - 'Use Case View': '⚠ No actors - shows placeholder', - 'Package View': '✓ Should show ToasterSystem package', - 'Hierarchy View': '✓ Should show part hierarchy' - } - } -}; - -function generateTestReport() { - console.log(`${colors.bold}${colors.blue}╔════════════════════════════════════════════════════════════╗${colors.reset}`); - console.log(`${colors.bold}${colors.blue}║ SysML Visualizer - Visual Test Guide ║${colors.reset}`); - console.log(`${colors.bold}${colors.blue}╚════════════════════════════════════════════════════════════╝${colors.reset}`); - - console.log(`\n${colors.cyan}This guide helps you manually verify each view renders correctly.${colors.reset}`); - console.log(`${colors.dim}Run the Extension Development Host (F5) and test each sample file.${colors.reset}\n`); - - // Print test matrix - console.log(`${colors.bold}━━━ TEST MATRIX ━━━${colors.reset}\n`); - - Object.entries(SAMPLE_EXPECTATIONS).forEach(([file, info]) => { - console.log(`${colors.yellow}📄 ${file}${colors.reset}`); - console.log(` ${colors.dim}${info.description}${colors.reset}\n`); - - Object.entries(info.expectedViews).forEach(([view, expectation]) => { - const icon = expectation.startsWith('✓') ? colors.green : colors.yellow; - console.log(` ${icon}${expectation}${colors.reset}`); - }); - console.log(''); - }); - - // Print view-specific check lists - console.log(`\n${colors.bold}━━━ VIEW CHECK LISTS ━━━${colors.reset}\n`); - - Object.entries(VIEW_CHECKS).forEach(([viewName, info]) => { - console.log(`${colors.cyan}${viewName}${colors.reset} (${info.id})`); - info.checks.forEach(check => { - console.log(` ☐ ${check}`); - }); - console.log(''); - }); - - // Generate HTML version - const html = generateHtmlReport(); - const outputPath = path.join(__dirname, '..', 'test-output', 'visual-test-guide.html'); - fs.mkdirSync(path.dirname(outputPath), { recursive: true }); - fs.writeFileSync(outputPath, html); - - console.log(`${colors.green}✓ HTML test guide saved to: ${outputPath}${colors.reset}`); - console.log(`\n${colors.yellow}Next steps:${colors.reset}`); - console.log(` 1. Press F5 to launch Extension Development Host`); - console.log(` 2. Open each sample file listed above`); - console.log(` 3. Switch between views using the dropdown`); - console.log(` 4. Verify each checkbox item in the check lists`); - console.log(` 5. Note any issues in issues.md`); -} - -function generateHtmlReport() { - return ` - - - SysML Visualizer - Visual Test Guide - - - -

🔍 SysML Visualizer - Visual Test Guide

- -
-

Testing Instructions

-
    -
  1. Press F5 in VS Code to launch Extension Development Host
  2. -
  3. Open each sample file from samples/ directory
  4. -
  5. Click the Visualize button in the editor title bar
  6. -
  7. Use the dropdown to switch between different views
  8. -
  9. Check off each item as you verify it works correctly
  10. -
  11. Document any issues found in issues.md
  12. -
-
- -

📁 Test Files

- - ${Object.entries(SAMPLE_EXPECTATIONS).map(([file, info]) => ` -
-
📄 ${file}
-
${info.description}
- ${Object.entries(info.expectedViews).map(([view, exp]) => ` -
- ${view}: ${exp} -
- `).join('')} -
- `).join('')} - -

✅ View Checklists

- - ${Object.entries(VIEW_CHECKS).map(([viewName, info]) => ` -
-

${viewName} (${info.id})

- ${info.checks.map((check, i) => ` -
- - -
- `).join('')} -
- `).join('')} - -

📊 Quick Status

-
-
-

✓ Expected to Work

-

General, Package, Tree, Graph, Hierarchy views

-
-
-

⚠ Needs Testing

-

IBD, Activity, State, UseCase views

-
-
-

✗ Known Issues

-

Pillar view (attributes), Sequence view (syntax)

-
-
- - - -`; -} - -generateTestReport(); diff --git a/scripts/postprocess-antlr.js b/scripts/postprocess-antlr.js deleted file mode 100644 index 88a9935..0000000 --- a/scripts/postprocess-antlr.js +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env node -/** - * Post-processes ANTLR 4.13.2 TypeScript output for compatibility - * with our CommonJS-based TypeScript project. - * - * Transforms: - * 1. Strips .js extensions from relative imports - * 2. Converts `export default class X` to `export class X` (named exports) - * 3. Converts `import X from "./Y"` to `import { X } from "./Y"` for local files - */ - -const fs = require('fs'); -const path = require('path'); - -const generatedDir = path.join(__dirname, '..', 'src', 'parser', 'generated', 'grammar'); - -if (!fs.existsSync(generatedDir)) { - console.error('Generated directory not found:', generatedDir); - process.exit(1); -} - -const tsFiles = fs.readdirSync(generatedDir).filter(f => f.endsWith('.ts')); -let totalChanges = 0; - -for (const file of tsFiles) { - const filePath = path.join(generatedDir, file); - let content = fs.readFileSync(filePath, 'utf-8'); - let changes = 0; - - // 1. Strip .js extensions from relative imports - const jsExtPattern = /from\s+["'](\.[^"']+)\.js["']/g; - content = content.replace(jsExtPattern, (match, importPath) => { - changes++; - return `from "${importPath}"`; - }); - - // 2. Convert default exports to named exports - content = content.replace(/^export default class /gm, (match) => { - changes++; - return 'export class '; - }); - - // 3. Convert default imports of local files to named imports - // e.g., `import SysMLv2ParserVisitor from "./SysMLv2ParserVisitor"` → `import { SysMLv2ParserVisitor } from "./SysMLv2ParserVisitor"` - const defaultImportPattern = /^import\s+(\w+)\s+from\s+["'](\.\/[^"']+)["']\s*;/gm; - content = content.replace(defaultImportPattern, (match, name, importPath) => { - changes++; - return `import { ${name} } from "${importPath}";`; - }); - - // 4. In the Visitor file, remove all optional property declarations (visitXxx?:) - // and add an index signature so accept() methods in the parser can reference - // visitor methods dynamically. - if (file.includes('Visitor')) { - // Remove lines like: visitModel?: (ctx: ModelContext) => Result; - const beforeLines = content.split('\n').length; - content = content.replace(/^\s+visit\w+\?\s*:\s*\(ctx:.*?\)\s*=>\s*Result\s*;$/gm, ''); - // Also remove any jsdoc comments that precede now-removed lines - content = content.replace(/\/\*\*\n(\s+\*[^\n]*\n)+\s+\*\/\n\s*$/gm, ''); - // Clean up multiple blank lines - content = content.replace(/\n{3,}/g, '\n\n'); - - // Add index signature to allow dynamic property access in accept() methods - content = content.replace( - /export class (\w+) extends ParseTreeVisitor \{/, - 'export class $1 extends ParseTreeVisitor {\n' + - ' [key: string]: any;' - ); - - const afterLines = content.split('\n').length; - const removedLines = beforeLines - afterLines; - if (removedLines > 0) { - changes += removedLines; - console.log(` Removed ${removedLines} visitor property declarations`); - } - } - - if (changes > 0) { - fs.writeFileSync(filePath, content, 'utf-8'); - console.log(` ${file}: ${changes} changes`); - totalChanges += changes; - } -} - -console.log(`Post-processed ${tsFiles.length} files, ${totalChanges} total changes`); diff --git a/scripts/run-all-tests.js b/scripts/run-all-tests.js deleted file mode 100644 index a5f8db1..0000000 --- a/scripts/run-all-tests.js +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env node -/** - * Integrated Test Runner for SysML Visualizer - * Runs all automated tests and generates a comprehensive report - */ - -const { execSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); - -// Color codes for terminal output -const colors = { - reset: '\x1b[0m', - bold: '\x1b[1m', - red: '\x1b[31m', - green: '\x1b[32m', - yellow: '\x1b[33m', - blue: '\x1b[34m', - magenta: '\x1b[35m', - cyan: '\x1b[36m' -}; - -const log = (color, ...args) => console.log(color, ...args, colors.reset); -const header = (text) => { - console.log('\n' + colors.cyan + colors.bold + '╔' + '═'.repeat(60) + '╗' + colors.reset); - console.log(colors.cyan + colors.bold + '║ ' + text.padEnd(59) + '║' + colors.reset); - console.log(colors.cyan + colors.bold + '╚' + '═'.repeat(60) + '╝' + colors.reset + '\n'); -}; - -const subHeader = (text) => { - console.log(colors.yellow + '\n┌─ ' + text + ' ' + '─'.repeat(Math.max(0, 55 - text.length)) + '┐' + colors.reset); -}; - -// Results collection -const results = { - viewTests: null, - parserTests: null, - dataFlow: null, - timestamp: new Date().toISOString() -}; - -// Run a test script and capture output -function runTest(script, name) { - subHeader(name); - try { - const output = execSync(`node ${script}`, { - encoding: 'utf-8', - cwd: path.join(__dirname, '..') - }); - console.log(output); - return { success: true, output }; - } catch (error) { - log(colors.red, `Error running ${name}:`); - console.log(error.stdout || error.message); - return { success: false, error: error.message }; - } -} - -// Main execution -async function main() { - console.clear(); - header('SysML Visualizer - Integrated Test Suite'); - - log(colors.blue, `Running at: ${results.timestamp}`); - log(colors.blue, `Working directory: ${path.join(__dirname, '..')}`); - - // 1. Run view tests - results.viewTests = runTest('./scripts/test-all-views.js', 'View Tests'); - - // 2. Run parser tests - results.parserTests = runTest('./scripts/test-parser-standalone.js', 'Parser Analysis'); - - // 3. Run data flow debug - results.dataFlow = runTest('./scripts/debug-view-data.js', 'Data Flow Trace'); - - // 4. Generate visual test guide - subHeader('Visual Test Guide'); - try { - execSync(`node ${path.join(__dirname, 'generate-visual-test-guide.js')}`, { - encoding: 'utf-8', - cwd: path.join(__dirname, '..') - }); - log(colors.green, '✓ Visual test guide generated'); - } catch (error) { - log(colors.red, '✗ Failed to generate visual test guide'); - } - - // Summary - header('Test Summary'); - - const testStatus = [ - { name: 'View Tests', result: results.viewTests }, - { name: 'Parser Analysis', result: results.parserTests }, - { name: 'Data Flow Trace', result: results.dataFlow } - ]; - - testStatus.forEach(test => { - const status = test.result.success ? '✓' : '✗'; - const color = test.result.success ? colors.green : colors.red; - log(color, ` ${status} ${test.name}`); - }); - - // Output location - console.log(''); - log(colors.cyan, 'Test output files:'); - log(colors.blue, ' • test-output/view-test-report.html'); - log(colors.blue, ' • test-output/visual-test-guide.html'); - - // Next steps - console.log(''); - log(colors.yellow, 'Manual Testing Steps:'); - console.log(' 1. Press F5 to launch Extension Development Host'); - console.log(' 2. Open samples/batmobile.sysml'); - console.log(' 3. Click "Visualize" button in editor title bar'); - console.log(' 4. Try each view from the dropdown'); - console.log(' 5. Open DevTools (F12) to check for console errors'); - console.log(' 6. Review test-output/visual-test-guide.html for checklist'); - - // Return exit code based on test results - const allPassed = testStatus.every(t => t.result.success); - process.exit(allPassed ? 0 : 1); -} - -main().catch(error => { - log(colors.red, 'Fatal error:', error.message); - process.exit(1); -}); diff --git a/scripts/test-all-samples.js b/scripts/test-all-samples.js deleted file mode 100644 index 37a2893..0000000 --- a/scripts/test-all-samples.js +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env node -// Test ANTLR parsing of all sample .sysml files -const fs = require('fs'); -const path = require('path'); -const antlr4 = require('antlr4'); -const { SysMLv2Lexer } = require('../out/parser/generated/grammar/SysMLv2Lexer'); -const { SysMLv2Parser } = require('../out/parser/generated/grammar/SysMLv2Parser'); - -function findSysmlFiles(dir) { - let results = []; - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const full = path.join(dir, entry.name); - if (entry.isDirectory()) results.push(...findSysmlFiles(full)); - else if (entry.name.endsWith('.sysml')) results.push(full); - } - return results; -} - -const files = findSysmlFiles(path.join(__dirname, '..', 'samples')); -console.log(`Found ${files.length} sample files\n`); - -let totalPass = 0, totalFail = 0; - -for (const file of files) { - const relPath = path.relative(path.join(__dirname, '..'), file); - const content = fs.readFileSync(file, 'utf8'); - const chars = new antlr4.CharStream(content); - const lexer = new SysMLv2Lexer(chars); - - let lexerErrors = 0; - lexer.removeErrorListeners(); - lexer.addErrorListener({ - syntaxError: () => { lexerErrors++; } - }); - - const tokens = new antlr4.CommonTokenStream(lexer); - tokens.fill(); - - const parser = new SysMLv2Parser(tokens); - let parseErrors = []; - parser.removeErrorListeners(); - parser.addErrorListener({ - syntaxError: (r, sym, line, col, msg) => { - parseErrors.push({ line, col, msg: msg.substring(0, 80) }); - }, - reportAttemptingFullContext: () => {}, - reportAmbiguity: () => {}, - reportContextSensitivity: () => {} - }); - - // Use SLL prediction mode - parser._interp.predictionMode = antlr4.PredictionMode.SLL; - - const start = Date.now(); - const tree = parser.rootNamespace(); - const elapsed = Date.now() - start; - - const children = tree.children ? tree.children.length : 0; - const status = parseErrors.length === 0 ? '✓' : '✗'; - - if (parseErrors.length === 0) totalPass++; - else totalFail++; - - console.log(`${status} ${relPath} (${elapsed}ms, ${tokens.tokens.length} tokens, ${children} children, ${parseErrors.length} errors)`); - - if (parseErrors.length > 0) { - parseErrors.slice(0, 3).forEach(e => { - console.log(` L${e.line}:${e.col}: ${e.msg}`); - }); - } -} - -console.log(`\n${totalPass} passed, ${totalFail} failed out of ${files.length} files`); -process.exit(totalFail > 0 ? 1 : 0); diff --git a/scripts/test-all-views.js b/scripts/test-all-views.js deleted file mode 100644 index 542a81c..0000000 --- a/scripts/test-all-views.js +++ /dev/null @@ -1,582 +0,0 @@ -#!/usr/bin/env node -/** - * Automated Testing Script for SysML Visualizer Views - * - * Tests all views against sample files to verify: - * - Data is properly extracted and transformed - * - Rendering would produce valid output - * - No overlapping containers (layout validation) - * - Text fits within containers - * - All expected elements are present - */ - -const fs = require('fs'); -const path = require('path'); - -// ANSI color codes for output -const colors = { - reset: '\x1b[0m', - red: '\x1b[31m', - green: '\x1b[32m', - yellow: '\x1b[33m', - blue: '\x1b[34m', - cyan: '\x1b[36m', - bold: '\x1b[1m' -}; - -// Test results storage -const testResults = { - passed: 0, - failed: 0, - warnings: 0, - details: [] -}; - -// View types to test -const VIEW_TYPES = [ - 'pillar', // Pillar View - 'general', // General View (ELK) - 'elk', // ELK View (alias) - 'ibd', // Interconnection View - 'activity', // Action Flow View - 'state', // State Transition View - 'sequence', // Sequence View - 'usecase', // Case View - 'tree', // Tree View - 'package', // Package View - 'graph', // Graph View - 'hierarchy' // Hierarchy View -]; - -// Sample files to test -const SAMPLES_DIR = path.join(__dirname, '..', 'samples'); - -// Expected content for each view type per sample -const VIEW_EXPECTATIONS = { - 'batmobile.sysml': { - description: 'Batmobile example from the book', - expectedElements: { - packages: ['Batmobile'], - parts: ['Vehicle', 'Wheel', 'BatmobileEngine', 'Batmobile', 'BatmobileNG'], - interfaces: ['PowerInterface', 'PowerIP'], - attributes: ['actualSpeed', 'pressure', 'capacity'], - connections: ['bat2eng'] - }, - viewExpectations: { - pillar: { minElements: 10, types: ['part', 'interface', 'port'] }, - general: { minElements: 10, hasNesting: true }, - ibd: { minParts: 3, minConnections: 1 }, - activity: { minActions: 1 }, - state: { minStates: 0 }, - package: { minPackages: 1 }, - hierarchy: { minElements: 10 } - } - }, - 'smart-home.sysml': { - description: 'Smart home IoT example', - expectedElements: { - packages: ['SmartHomeSystem'], - parts: ['SmartHome', 'LightingSystem', 'SecuritySystem', 'ClimateControl'], - states: ['vacant', 'occupied', 'sleep', 'away', 'emergency', 'disarmed', 'armed_home', 'armed_away', 'alarm'], - transitions: ['vacant to occupied', 'occupied to sleep', 'disarmed to armed_home'] - }, - viewExpectations: { - pillar: { minElements: 15, types: ['part', 'attribute'] }, - general: { minElements: 15, hasNesting: true }, - state: { minStates: 5, minTransitions: 3 }, - package: { minPackages: 1 }, - hierarchy: { minElements: 20 } - } - }, - - 'toaster-system.sysml': { - description: 'Toaster system example', - expectedElements: { - packages: ['ToasterSystem'], - parts: ['Toaster', 'HeatingElement', 'Timer', 'BreadSlot'], - actions: ['heatBread', 'ejectToast'], - states: ['idle', 'toasting', 'done'] - }, - viewExpectations: { - pillar: { minElements: 5, types: ['part'] }, - general: { minElements: 5, hasNesting: true }, - activity: { minActions: 1 }, - state: { minStates: 2 } - } - }, - 'space-mission.sysml': { - description: 'Space mission example', - expectedElements: { - packages: ['SpaceMission'], - parts: ['Spacecraft', 'Payload', 'GroundStation'], - useCases: [], - actors: [] - }, - viewExpectations: { - pillar: { minElements: 5, types: ['part'] }, - general: { minElements: 5, hasNesting: true }, - package: { minPackages: 1 } - } - } -}; - -// Simple SysML parser for testing (extracts key elements) -function parseSysMLFile(filePath) { - const content = fs.readFileSync(filePath, 'utf-8'); - const elements = []; - - // Regular expressions for different element types - const patterns = { - package: /package\s+(\w+)\s*\{/g, - partDef: /part\s+def\s+(\w+)/g, - part: /part\s+(\w+)\s*(?::|;|\[|\{)/g, - attribute: /attribute\s+(\w+)/g, - interface: /interface\s+(?:def\s+)?(\w+)/g, - port: /port\s+(?:def\s+)?(\w+)/g, - action: /action\s+(?:def\s+)?(\w+)/g, - state: /state\s+(\w+)/g, - transition: /transition\s+(\w+)\s+to\s+(\w+)/g, - actor: /actor\s+(?:def\s+)?(\w+)/g, - useCase: /use\s*case\s+(?:def\s+)?(\w+)/g, - connection: /connection\s+(\w+)\s*\{/g, - requirement: /requirement\s+(?:def\s+)?(\w+)/g, - constraint: /constraint\s+(\w+)/g, - item: /item\s+(?:def\s+)?(\w+)/g, - flow: /flow\s+(?:def\s+)?(\w+)/g, - doc: /doc\s*\/\*[\s\S]*?\*\//g - }; - - // Extract elements - for (const [type, pattern] of Object.entries(patterns)) { - let match; - const regex = new RegExp(pattern.source, 'g'); - while ((match = regex.exec(content)) !== null) { - const name = match[1] || (type === 'transition' ? `${match[1]} to ${match[2]}` : 'unnamed'); - elements.push({ - type, - name, - line: content.substring(0, match.index).split('\n').length, - hasDoc: type === 'doc' - }); - } - } - - // Count nesting levels - let maxNesting = 0; - let currentNesting = 0; - for (const char of content) { - if (char === '{') currentNesting++; - if (char === '}') currentNesting--; - maxNesting = Math.max(maxNesting, currentNesting); - } - - return { - filePath, - fileName: path.basename(filePath), - elements, - stats: { - totalElements: elements.length, - byType: elements.reduce((acc, el) => { - acc[el.type] = (acc[el.type] || 0) + 1; - return acc; - }, {}), - maxNesting, - hasDocumentation: elements.some(e => e.type === 'doc'), - lineCount: content.split('\n').length - } - }; -} - -// Simulate data transformation for each view type -function transformDataForView(parsedData, viewType) { - const { elements, stats } = parsedData; - - switch (viewType) { - case 'pillar': - case 'general': - case 'elk': - return { - success: elements.length > 0, - data: elements, - nodeCount: elements.length, - hasHierarchy: stats.maxNesting > 1 - }; - - case 'ibd': - const parts = elements.filter(e => e.type === 'part' || e.type === 'partDef'); - const connections = elements.filter(e => e.type === 'connection' || e.type === 'interface'); - const ports = elements.filter(e => e.type === 'port'); - return { - success: parts.length > 0, - data: { parts, connections, ports }, - partCount: parts.length, - connectionCount: connections.length, - portCount: ports.length - }; - - case 'activity': - const actions = elements.filter(e => e.type === 'action'); - const flows = elements.filter(e => e.type === 'flow'); - return { - success: actions.length > 0 || stats.byType.action > 0, - data: { actions, flows }, - actionCount: actions.length, - flowCount: flows.length - }; - - case 'state': - const states = elements.filter(e => e.type === 'state'); - const transitions = elements.filter(e => e.type === 'transition'); - return { - success: states.length > 0, - data: { states, transitions }, - stateCount: states.length, - transitionCount: transitions.length - }; - - case 'sequence': - // Sequence diagrams need specific message/interaction patterns - return { - success: true, - data: elements, - nodeCount: elements.length - }; - - case 'usecase': - const actors = elements.filter(e => e.type === 'actor'); - const useCases = elements.filter(e => e.type === 'useCase'); - return { - success: actors.length > 0 || useCases.length > 0 || elements.length > 0, - data: { actors, useCases }, - actorCount: actors.length, - useCaseCount: useCases.length - }; - - case 'tree': - return { - success: elements.length > 0, - data: elements, - nodeCount: elements.length - }; - - case 'package': - const packages = elements.filter(e => e.type === 'package'); - return { - success: packages.length > 0, - data: packages, - packageCount: packages.length - }; - - case 'graph': - return { - success: elements.length > 0, - data: elements, - nodeCount: elements.length, - edgeCount: elements.filter(e => - e.type === 'connection' || e.type === 'flow' || e.type === 'transition' - ).length - }; - - case 'hierarchy': - return { - success: elements.length > 0, - data: elements, - nodeCount: elements.length, - depth: stats.maxNesting - }; - - default: - return { success: false, error: `Unknown view type: ${viewType}` }; - } -} - -// Validate layout constraints (simulated) -function validateLayoutConstraints(viewData, viewType) { - const issues = []; - - // Check for minimum content - if (viewData.nodeCount !== undefined && viewData.nodeCount === 0) { - issues.push({ type: 'error', message: 'No nodes to render - view will be empty' }); - } - - // Check for reasonable node counts (too many could cause overlap) - if (viewData.nodeCount > 100) { - issues.push({ type: 'warning', message: `High node count (${viewData.nodeCount}) may cause layout issues` }); - } - - // View-specific validations - switch (viewType) { - case 'ibd': - if (viewData.partCount === 0) { - issues.push({ type: 'warning', message: 'No parts found for IBD view' }); - } - break; - case 'activity': - if (viewData.actionCount === 0) { - issues.push({ type: 'warning', message: 'No actions found for Activity view' }); - } - break; - case 'state': - if (viewData.stateCount === 0) { - issues.push({ type: 'warning', message: 'No states found for State view' }); - } - break; - case 'package': - if (viewData.packageCount === 0) { - issues.push({ type: 'warning', message: 'No packages found for Package view' }); - } - break; - } - - return issues; -} - -// Run tests for a single file -function testFile(filePath) { - const fileName = path.basename(filePath); - const results = { - file: fileName, - views: {}, - overallStatus: 'passed' - }; - - console.log(`\n${colors.cyan}━━━ Testing: ${fileName} ━━━${colors.reset}`); - - try { - const parsedData = parseSysMLFile(filePath); - console.log(` ${colors.blue}Parsed:${colors.reset} ${parsedData.stats.totalElements} elements, ${parsedData.stats.lineCount} lines`); - console.log(` ${colors.blue}Types:${colors.reset} ${JSON.stringify(parsedData.stats.byType)}`); - - const expectations = VIEW_EXPECTATIONS[fileName] || {}; - - for (const viewType of VIEW_TYPES) { - const viewData = transformDataForView(parsedData, viewType); - const layoutIssues = validateLayoutConstraints(viewData, viewType); - const viewExpect = expectations.viewExpectations?.[viewType] || {}; - - let status = 'passed'; - const issues = [...layoutIssues]; - - // Check against expectations - if (viewExpect.minElements && viewData.nodeCount < viewExpect.minElements) { - issues.push({ - type: 'warning', - message: `Expected at least ${viewExpect.minElements} elements, got ${viewData.nodeCount}` - }); - } - - if (viewExpect.minStates && viewData.stateCount < viewExpect.minStates) { - issues.push({ - type: 'warning', - message: `Expected at least ${viewExpect.minStates} states, got ${viewData.stateCount}` - }); - } - - if (viewExpect.minParts && viewData.partCount < viewExpect.minParts) { - issues.push({ - type: 'warning', - message: `Expected at least ${viewExpect.minParts} parts, got ${viewData.partCount}` - }); - } - - if (viewExpect.minActions && viewData.actionCount < viewExpect.minActions) { - issues.push({ - type: 'warning', - message: `Expected at least ${viewExpect.minActions} actions, got ${viewData.actionCount}` - }); - } - - // Determine overall status for this view - if (issues.some(i => i.type === 'error')) { - status = 'failed'; - testResults.failed++; - } else if (issues.some(i => i.type === 'warning')) { - status = 'warning'; - testResults.warnings++; - } else { - testResults.passed++; - } - - if (!viewData.success && status === 'passed') { - status = 'warning'; - issues.push({ type: 'warning', message: 'View may not render content' }); - testResults.warnings++; - testResults.passed--; - } - - results.views[viewType] = { - status, - data: viewData, - issues - }; - - // Output status - const statusIcon = status === 'passed' ? `${colors.green}✓` : - status === 'warning' ? `${colors.yellow}⚠` : - `${colors.red}✗`; - - let statsStr = ''; - if (viewData.nodeCount !== undefined) statsStr += `nodes:${viewData.nodeCount}`; - if (viewData.partCount !== undefined) statsStr += ` parts:${viewData.partCount}`; - if (viewData.stateCount !== undefined) statsStr += ` states:${viewData.stateCount}`; - if (viewData.actionCount !== undefined) statsStr += ` actions:${viewData.actionCount}`; - if (viewData.packageCount !== undefined) statsStr += ` packages:${viewData.packageCount}`; - - console.log(` ${statusIcon} ${viewType.padEnd(12)}${colors.reset} ${statsStr}`); - - if (issues.length > 0) { - issues.forEach(issue => { - const issueColor = issue.type === 'error' ? colors.red : colors.yellow; - console.log(` ${issueColor}└─ ${issue.message}${colors.reset}`); - }); - } - - if (status === 'failed') { - results.overallStatus = 'failed'; - } else if (status === 'warning' && results.overallStatus === 'passed') { - results.overallStatus = 'warning'; - } - } - - } catch (error) { - console.log(` ${colors.red}✗ Error: ${error.message}${colors.reset}`); - results.overallStatus = 'failed'; - testResults.failed++; - } - - return results; -} - -// Find all sample files recursively -function findSampleFiles(dir) { - const files = []; - const entries = fs.readdirSync(dir, { withFileTypes: true }); - - for (const entry of entries) { - const fullPath = path.join(dir, entry.name); - if (entry.isDirectory()) { - files.push(...findSampleFiles(fullPath)); - } else if (entry.name.endsWith('.sysml')) { - files.push(fullPath); - } - } - - return files; -} - -// Generate HTML report -function generateHtmlReport(allResults) { - const html = ` - - - SysML Visualizer Test Report - - - -

🔍 SysML Visualizer Test Report

-
- Generated: ${new Date().toISOString()}
- Files Tested: ${allResults.length}
- Views Tested: ${VIEW_TYPES.length}
- Results: - ✓ ${testResults.passed} passed | - ⚠ ${testResults.warnings} warnings | - ✗ ${testResults.failed} failed -
- - ${allResults.map(result => ` -

${result.file}

- - - - - - - - ${Object.entries(result.views).map(([view, data]) => ` - - - - - - - `).join('')} -
ViewStatusStatsIssues
${view} - ${data.status === 'passed' ? '✓' : data.status === 'warning' ? '⚠' : '✗'} - ${data.status} - ${formatStats(data.data)}${data.issues.map(i => `
• ${i.message}
`).join('')}
- `).join('')} - -`; - - return html; -} - -function formatStats(data) { - const parts = []; - if (data.nodeCount !== undefined) parts.push(`nodes: ${data.nodeCount}`); - if (data.partCount !== undefined) parts.push(`parts: ${data.partCount}`); - if (data.connectionCount !== undefined) parts.push(`connections: ${data.connectionCount}`); - if (data.stateCount !== undefined) parts.push(`states: ${data.stateCount}`); - if (data.transitionCount !== undefined) parts.push(`transitions: ${data.transitionCount}`); - if (data.actionCount !== undefined) parts.push(`actions: ${data.actionCount}`); - if (data.packageCount !== undefined) parts.push(`packages: ${data.packageCount}`); - return parts.join(', ') || '-'; -} - -// Main execution -function main() { - console.log(`${colors.bold}${colors.blue}╔══════════════════════════════════════════════╗${colors.reset}`); - console.log(`${colors.bold}${colors.blue}║ SysML Visualizer - Automated View Testing ║${colors.reset}`); - console.log(`${colors.bold}${colors.blue}╚══════════════════════════════════════════════╝${colors.reset}`); - - // Find all sample files - const sampleFiles = findSampleFiles(SAMPLES_DIR); - console.log(`\n${colors.cyan}Found ${sampleFiles.length} sample files${colors.reset}`); - - // Test each file - const allResults = []; - for (const filePath of sampleFiles) { - const result = testFile(filePath); - allResults.push(result); - } - - // Summary - console.log(`\n${colors.bold}${colors.blue}═══════════════════════════════════════════════${colors.reset}`); - console.log(`${colors.bold} SUMMARY${colors.reset}`); - console.log(`${colors.bold}${colors.blue}═══════════════════════════════════════════════${colors.reset}`); - console.log(` ${colors.green}Passed:${colors.reset} ${testResults.passed}`); - console.log(` ${colors.yellow}Warnings:${colors.reset} ${testResults.warnings}`); - console.log(` ${colors.red}Failed:${colors.reset} ${testResults.failed}`); - console.log(` Total: ${testResults.passed + testResults.warnings + testResults.failed}`); - - // Generate HTML report - const reportPath = path.join(__dirname, '..', 'test-output', 'view-test-report.html'); - fs.mkdirSync(path.dirname(reportPath), { recursive: true }); - fs.writeFileSync(reportPath, generateHtmlReport(allResults)); - console.log(`\n${colors.cyan}📄 HTML report saved to: ${reportPath}${colors.reset}`); - - // Exit code based on results - const exitCode = testResults.failed > 0 ? 1 : 0; - console.log(`\n${exitCode === 0 ? colors.green + '✓ All tests acceptable' : colors.red + '✗ Some tests failed'}${colors.reset}`); - - return exitCode; -} - -// Run -process.exit(main()); diff --git a/scripts/test-parser-standalone.js b/scripts/test-parser-standalone.js deleted file mode 100644 index 397c494..0000000 --- a/scripts/test-parser-standalone.js +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/env node -/** - * Standalone SysML Parser for Testing - * Parses SysML files without VS Code dependencies - */ - -const fs = require('fs'); -const path = require('path'); - -// ANSI colors -const colors = { - reset: '\x1b[0m', - red: '\x1b[31m', - green: '\x1b[32m', - yellow: '\x1b[33m', - blue: '\x1b[34m', - cyan: '\x1b[36m', - bold: '\x1b[1m' -}; - -/** - * Simple SysML parser for extracting elements - */ -function parseSysML(content, fileName = '') { - const elements = []; - const relationships = []; - const lines = content.split('\n'); - - // Track nesting - const elementStack = []; - let currentElement = null; - let braceDepth = 0; - - // Regex patterns for different element types - const patterns = { - package: /^\s*package\s+(\w+)\s*\{?/, - partDef: /^\s*part\s+def\s+(\w+)(?:\s*:>?\s*(\w+(?:,\s*\w+)*))?\s*\{?/, - part: /^\s*part\s+(\w+)\s*(?::\s*(\w+(?:\s*\[\s*[\d*]+\s*\])?))?/, - attributeDef: /^\s*attribute\s+def\s+(\w+)/, - attribute: /^\s*attribute\s+(\w+)\s*(?::\s*(\w+))?/, - portDef: /^\s*port\s+def\s+(\w+)/, - port: /^\s*port\s+(\w+)\s*(?::\s*~?(\w+))?/, - interfaceDef: /^\s*interface\s+def\s+(\w+)/, - interface: /^\s*interface\s+(\w+)\s*:/, - actionDef: /^\s*action\s+def\s+(\w+)/, - action: /^\s*(?:perform\s+)?action\s+(\w+)/, - stateDef: /^\s*state\s+def\s+(\w+)/, - state: /^\s*state\s+(\w+)\s*\{?/, - transition: /^\s*transition\s+(\w+)\s+to\s+(\w+)(?:\s+when\s+(\w+))?/, - actor: /^\s*actor\s+(?:def\s+)?(\w+)/, - useCase: /^\s*use\s*case\s+(?:def\s+)?(\w+)/, - itemDef: /^\s*item\s+def\s+(\w+)/, - item: /^\s*(?:in\s+|out\s+)?item\s+(\w+)/, - requirement: /^\s*requirement\s+(?:def\s+)?(\w+)/, - constraint: /^\s*constraint\s+(\w+)/, - connection: /^\s*(?:connect|interface)\s+(\w+)\s*:/, - flow: /^\s*flow\s+(?:of\s+)?(\w+)/, - behavior: /^\s*behavior\s+(\w+)/, - doc: /^\s*doc\s*$/ - }; - - for (let lineNum = 0; lineNum < lines.length; lineNum++) { - const line = lines[lineNum]; - const trimmed = line.trim(); - - // Skip comments and empty lines - if (trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed === '') { - continue; - } - - // Count braces - const openBraces = (line.match(/\{/g) || []).length; - const closeBraces = (line.match(/\}/g) || []).length; - - // Check each pattern - for (const [type, pattern] of Object.entries(patterns)) { - const match = trimmed.match(pattern); - if (match) { - const name = match[1]; - const superType = match[2] || null; - - const element = { - name: name, - type: type, - superType: superType, - line: lineNum + 1, - children: [], - attributes: new Map() - }; - - // Handle transitions specially - if (type === 'transition') { - relationships.push({ - type: 'transition', - source: match[1], - target: match[2], - guard: match[3] || null - }); - continue; - } - - // Add to parent or root - if (currentElement && braceDepth > 0) { - currentElement.children.push(element); - element.parent = currentElement.name; - } else { - elements.push(element); - } - - // If this element opens a block, track it - if (trimmed.includes('{')) { - elementStack.push(currentElement); - currentElement = element; - } - - break; // Only match first pattern - } - } - - // Update brace depth - braceDepth += openBraces - closeBraces; - - // Pop element stack on close braces - let closeCount = closeBraces; - while (closeCount > 0 && elementStack.length > 0) { - currentElement = elementStack.pop(); - closeCount--; - } - - if (braceDepth <= 0) { - currentElement = null; - elementStack.length = 0; - } - } - - return { elements, relationships, fileName }; -} - -/** - * Recursively collect all elements - */ -function collectAllElements(elements, depth = 0, collected = []) { - elements.forEach(el => { - collected.push({ ...el, depth }); - if (el.children && el.children.length > 0) { - collectAllElements(el.children, depth + 1, collected); - } - }); - return collected; -} - -/** - * Simulate prepareDataForView transformations - */ -function simulateViewTransformations(parsedData) { - const { elements, relationships } = parsedData; - const allElements = collectAllElements(elements); - - const viewData = { - ibd: { - parts: allElements.filter(el => el.type && ( - el.type.includes('part') || el.type === 'partDef' - )), - ports: allElements.filter(el => el.type && el.type.includes('port')), - connectors: relationships.filter(r => r.type === 'connection' || r.type === 'flow') - }, - activity: { - actions: allElements.filter(el => el.type && el.type.includes('action')), - flows: relationships.filter(r => r.type === 'succession') - }, - state: { - states: allElements.filter(el => el.type && el.type.includes('state')), - transitions: relationships.filter(r => r.type === 'transition') - }, - usecase: { - actors: allElements.filter(el => el.type === 'actor'), - useCases: allElements.filter(el => el.type === 'useCase') - }, - package: { - packages: allElements.filter(el => el.type === 'package') - } - }; - - return viewData; -} - -/** - * Parse and analyze a file - */ -function analyzeFile(filePath) { - console.log(`\n${colors.cyan}━━━ Analyzing: ${path.basename(filePath)} ━━━${colors.reset}`); - - const content = fs.readFileSync(filePath, 'utf-8'); - const parsed = parseSysML(content, path.basename(filePath)); - const allElements = collectAllElements(parsed.elements); - const viewData = simulateViewTransformations(parsed); - - console.log(`${colors.green}✓ Parsed ${parsed.elements.length} top-level elements${colors.reset}`); - console.log(`${colors.blue}Total elements (including nested): ${allElements.length}${colors.reset}`); - console.log(`${colors.blue}Relationships found: ${parsed.relationships.length}${colors.reset}`); - - // Group by type - const byType = {}; - allElements.forEach(el => { - const type = el.type || 'unknown'; - if (!byType[type]) byType[type] = []; - byType[type].push(el.name); - }); - - console.log(`\n${colors.yellow}Elements by type:${colors.reset}`); - Object.entries(byType).sort((a, b) => b[1].length - a[1].length).forEach(([type, names]) => { - console.log(` ${colors.cyan}${type}${colors.reset} (${names.length}): ${names.slice(0, 5).join(', ')}${names.length > 5 ? '...' : ''}`); - }); - - // Show view simulation results - console.log(`\n${colors.yellow}View Data Simulation:${colors.reset}`); - - // IBD View - const ibdStatus = viewData.ibd.parts.length > 0 ? colors.green + '✓' : colors.red + '✗'; - console.log(` ${ibdStatus} IBD View:${colors.reset} ${viewData.ibd.parts.length} parts, ${viewData.ibd.ports.length} ports, ${viewData.ibd.connectors.length} connectors`); - - // Activity View - const actStatus = viewData.activity.actions.length > 0 ? colors.green + '✓' : colors.red + '✗'; - console.log(` ${actStatus} Activity View:${colors.reset} ${viewData.activity.actions.length} actions`); - - // State View - const stateStatus = viewData.state.states.length > 0 ? colors.green + '✓' : colors.red + '✗'; - console.log(` ${stateStatus} State View:${colors.reset} ${viewData.state.states.length} states, ${viewData.state.transitions.length} transitions`); - if (viewData.state.states.length > 0) { - console.log(` States: ${viewData.state.states.map(s => s.name).slice(0, 10).join(', ')}`); - } - if (viewData.state.transitions.length > 0) { - console.log(` Transitions: ${viewData.state.transitions.slice(0, 5).map(t => `${t.source}→${t.target}`).join(', ')}`); - } - - // UseCase View - const ucStatus = (viewData.usecase.actors.length > 0 || viewData.usecase.useCases.length > 0) ? colors.green + '✓' : colors.red + '✗'; - console.log(` ${ucStatus} UseCase View:${colors.reset} ${viewData.usecase.actors.length} actors, ${viewData.usecase.useCases.length} use cases`); - - // Package View - const pkgStatus = viewData.package.packages.length > 0 ? colors.green + '✓' : colors.red + '✗'; - console.log(` ${pkgStatus} Package View:${colors.reset} ${viewData.package.packages.length} packages`); - - return { parsed, allElements, viewData }; -} - -/** - * Main function - */ -function main() { - console.log(`${colors.bold}${colors.blue}╔══════════════════════════════════════════════╗${colors.reset}`); - console.log(`${colors.bold}${colors.blue}║ Standalone SysML Parser & View Tester ║${colors.reset}`); - console.log(`${colors.bold}${colors.blue}╚══════════════════════════════════════════════╝${colors.reset}`); - - const samplesDir = path.join(__dirname, '..', 'samples'); - - // Key test files - const testFiles = [ - 'smart-home.sysml', - 'batmobile.sysml', - 'toaster-system.sysml', - 'Camera Example/camera-states.sysml', - 'Camera Example/camera-usecases.sysml', - 'Camera Example/camera-activity.sysml' - ]; - - const results = []; - - for (const file of testFiles) { - const filePath = path.join(samplesDir, file); - if (fs.existsSync(filePath)) { - const result = analyzeFile(filePath); - results.push({ file, ...result }); - } else { - console.log(`${colors.yellow}File not found: ${file}${colors.reset}`); - } - } - - // Summary - console.log(`\n${colors.bold}${colors.blue}═══════════════════════════════════════════════${colors.reset}`); - console.log(`${colors.bold} SUMMARY${colors.reset}`); - console.log(`${colors.bold}${colors.blue}═══════════════════════════════════════════════${colors.reset}`); - - const viewIssues = { - ibd: [], - activity: [], - state: [], - usecase: [], - package: [] - }; - - results.forEach(r => { - if (r.viewData.ibd.parts.length === 0) viewIssues.ibd.push(r.file); - if (r.viewData.activity.actions.length === 0) viewIssues.activity.push(r.file); - if (r.viewData.state.states.length === 0) viewIssues.state.push(r.file); - if (r.viewData.usecase.actors.length === 0 && r.viewData.usecase.useCases.length === 0) viewIssues.usecase.push(r.file); - if (r.viewData.package.packages.length === 0) viewIssues.package.push(r.file); - }); - - console.log(`\n${colors.yellow}Files with empty views:${colors.reset}`); - Object.entries(viewIssues).forEach(([view, files]) => { - if (files.length > 0) { - console.log(` ${colors.red}${view}:${colors.reset} ${files.join(', ')}`); - } - }); -} - -main(); diff --git a/src/explorer/modelExplorerProvider.ts b/src/explorer/modelExplorerProvider.ts index b8426f7..724c46f 100644 --- a/src/explorer/modelExplorerProvider.ts +++ b/src/explorer/modelExplorerProvider.ts @@ -1,5 +1,35 @@ import * as vscode from 'vscode'; -import { Relationship, SysMLElement, SysMLParser } from '../parser/sysmlParser'; +import { LspModelProvider, toVscodeRange } from '../providers/lspModelProvider'; +import type { SysMLElementDTO } from '../providers/sysmlModelTypes'; +import type { Relationship, SysMLElement } from '../types/sysmlTypes'; + +/** + * Convert an `SysMLElementDTO` (plain objects, Record attributes) into a + * `SysMLElement` (vscode.Range, Map attributes) so the tree-item code + * can work identically regardless of source. + */ +function dtoToSysMLElement(dto: SysMLElementDTO): SysMLElement { + const attrs = new Map(); + if (dto.attributes) { + for (const [k, v] of Object.entries(dto.attributes)) { + attrs.set(k, v); + } + } + return { + type: dto.type, + name: dto.name, + range: toVscodeRange(dto.range), + children: (dto.children ?? []).map(dtoToSysMLElement), + attributes: attrs, + relationships: (dto.relationships ?? []).map(r => ({ + type: r.type, + source: r.source, + target: r.target, + name: r.name, + })), + errors: dto.errors, + }; +} export class ModelExplorerProvider implements vscode.TreeDataProvider { private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter(); @@ -10,8 +40,15 @@ export class ModelExplorerProvider implements vscode.TreeDataProvider | undefined; let activeParseCancel: vscode.CancellationTokenSource | undefined; +let modelMetricsItem: vscode.StatusBarItem | undefined; +let parseProgressItem: vscode.StatusBarItem | undefined; /** Available visualization views — matches the webview's dropdown options */ const visualizationViews = [ @@ -30,16 +31,12 @@ const visualizationViews = [ { id: 'hierarchy', label: '■ Hierarchy', description: 'Hierarchical block diagram' }, ]; -/** - * Centralized parse entry point. Shows a progress notification - * **immediately** (before any ANTLR work), gates language providers so they - * don't trigger their own parse, and supports cancellation when the user - * navigates away or the document is closed. - */ /** * Parse a SysML document for the **Model Explorer** and **Visualization** * panels only. Language features (diagnostics, completions, hover, * go-to-def, formatting, etc.) are handled by the LSP server. + * + * All parsing is performed by the LSP server via `sysml/model` requests. */ function parseSysMLDocument(document: vscode.TextDocument): void { // Cancel any in-flight parse for a previous file @@ -52,56 +49,70 @@ function parseSysMLDocument(document: vscode.TextDocument): void { activeParseCancel = undefined; } - const fileName = document.fileName.split('/').pop() || 'file'; const cancelSource = new vscode.CancellationTokenSource(); activeParseCancel = cancelSource; // Debounce (300 ms) — wait for the user to pause typing before - // kicking off the expensive ANTLR parse. + // kicking off the model request. parseDebounceTimer = setTimeout(async () => { if (cancelSource.token.isCancellationRequested || document.isClosed) { return; } - // Cancel in-flight worker requests when the token fires so the - // progress indicator doesn't linger from a stale parse. - const cancelSub = cancelSource.token.onCancellationRequested(() => { - parser.cancelPendingParses(); - }); - try { - await vscode.window.withProgress( - { - location: vscode.ProgressLocation.Window, - title: `Parsing ${fileName}…` - }, - async (_progress) => { - if (cancelSource.token.isCancellationRequested || document.isClosed) { - return; - } + if (cancelSource.token.isCancellationRequested || document.isClosed) { + return; + } - // --- Model explorer update (ANTLR parse + semantic resolution) --- - outputChannel?.appendLine(`parseSysMLDocument: loading ${fileName}`); - await modelExplorerProvider.loadDocument(document, cancelSource.token); + // --- Model explorer update --- + const fileName = document.fileName.split('/').pop() || 'file'; + outputChannel?.appendLine(`parseSysMLDocument: loading ${fileName} (LSP)`); + try { + await modelExplorerProvider.loadDocument(document, cancelSource.token); + } catch { + // Model explorer failure is non-critical — continue to + // update the visualizer so it always gets a chance to + // fetch fresh data from the LSP server. + } - // --- Publish resolver diagnostics (enum keyword, import checks) --- - try { - const resolutionResult = await parser.parseWithSemanticResolution(document); - semanticDiagnosticFormatter.publish(document.uri, resolutionResult.diagnostics); - } catch (err) { - outputChannel?.appendLine(`Semantic diagnostics failed: ${err instanceof Error ? err.message : err}`); - } + // Bail out if cancelled or closed during model explorer parse + if (cancelSource.token.isCancellationRequested || document.isClosed) { + outputChannel?.appendLine(`parseSysMLDocument: cancelled after model explorer update`); + return; + } - // --- Visualization panel update (cache-warm, no re-parse) --- - // The ANTLR cache is now warm from the model explorer parse above, - // so the visualization just does JSON serialization + postMessage. - if (VisualizationPanel.currentPanel) { - VisualizationPanel.currentPanel.notifyFileChanged(document.uri); + // --- Status-bar model metrics --- + const stats = modelExplorerProvider.getLastStats(); + if (stats) { + updateModelMetrics(stats, document.uri); + } + + // Push resolved types to Feature Inspector if it's open + if (FeatureInspectorPanel.currentPanel && lspModelProvider) { + try { + const typeResult = await lspModelProvider.getModel( + document.uri.toString(), ['resolvedTypes'], cancelSource.token, + ); + if (typeResult.resolvedTypes) { + FeatureInspectorPanel.currentPanel.updateResolvedTypes( + typeResult.resolvedTypes, document.uri.toString(), + ); } + } catch { + // Non-critical — inspector will fetch on next cursor move } - ); + } + + // Bail out if cancelled or closed + if (cancelSource.token.isCancellationRequested || document.isClosed) { + return; + } + + // --- Visualization panel update --- + if (VisualizationPanel.currentPanel) { + VisualizationPanel.currentPanel.notifyFileChanged(document.uri); + } } finally { - cancelSub.dispose(); if (activeParseCancel === cancelSource) { activeParseCancel = undefined; } @@ -110,6 +121,131 @@ function parseSysMLDocument(document: vscode.TextDocument): void { }, 300); } +/** + * Update the status-bar model-metrics item with element counts and + * parse time from the latest `sysml/model` response. + * + * "Resolved" here means elements that have an explicit type annotation + * (e.g. `part engine : Engine`). Elements without a type — like + * packages, top-level definitions, and un-typed usages — are simply + * "un-typed", **not** errors. We show the actual diagnostic count + * from the Problems panel instead. + */ +export function updateModelMetrics(stats: { + totalElements: number; + resolvedElements: number; + unresolvedElements: number; + parseTimeMs: number; + modelBuildTimeMs: number; +}, documentUri?: vscode.Uri): void { + if (!modelMetricsItem) { + modelMetricsItem = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Right, 100 + ); + modelMetricsItem.name = 'SysML Model Metrics'; + // Click opens the Problems panel so users can see actionable issues + modelMetricsItem.command = 'workbench.actions.view.problems'; + } + + // Count real diagnostics (errors/warnings) for the current file + const diagnostics = documentUri + ? vscode.languages.getDiagnostics(documentUri) + : []; + const errorCount = diagnostics.filter(d => d.severity === vscode.DiagnosticSeverity.Error).length; + const warnCount = diagnostics.filter(d => d.severity === vscode.DiagnosticSeverity.Warning).length; + const issueCount = errorCount + warnCount; + + // Icon reflects actual problems, not type-resolution status + const icon = errorCount > 0 ? '$(error)' : warnCount > 0 ? '$(warning)' : '$(check)'; + const issuesSuffix = issueCount > 0 ? ` | $(alert) ${issueCount}` : ''; + modelMetricsItem.text = `${icon} SysML: ${stats.totalElements} elements${issuesSuffix} | ${stats.parseTimeMs}ms`; + + const tooltipLines = [ + `Total elements: ${stats.totalElements}`, + `Typed: ${stats.resolvedElements}`, + `Un-typed: ${stats.unresolvedElements} (packages, definitions — normal)`, + `Parse time: ${stats.parseTimeMs}ms`, + ]; + if (issueCount > 0) { + tooltipLines.push(''); + tooltipLines.push(`${errorCount} error(s), ${warnCount} warning(s)`); + tooltipLines.push('Click to open Problems panel'); + } + modelMetricsItem.tooltip = tooltipLines.join('\n'); + + modelMetricsItem.backgroundColor = errorCount > 0 + ? new vscode.ThemeColor('statusBarItem.errorBackground') + : warnCount > 0 + ? new vscode.ThemeColor('statusBarItem.warningBackground') + : undefined; + + modelMetricsItem.show(); +} + +/** Hide the model-metrics status bar item (e.g. when no SysML file is open). */ +export function hideModelMetrics(): void { + modelMetricsItem?.hide(); +} + +/** + * Show a "Parsing …" indicator in the status bar while the LSP + * server is processing a file. Called from `client.ts` when the + * server sends `sysml/status` `begin` / `progress` notifications. + */ +export function showParseProgress(label: string): void { + if (!parseProgressItem) { + parseProgressItem = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Left, 50, + ); + parseProgressItem.name = 'SysML Parse Progress'; + } + parseProgressItem.text = `$(sync~spin) Parsing ${label}…`; + parseProgressItem.show(); +} + +/** + * Hide the parse-progress status bar item. Called from `client.ts` + * when the server sends `sysml/status` `end`. + */ +export function hideParseProgress(): void { + parseProgressItem?.hide(); +} + +/** + * Called when the LSP server signals that it has finished parsing a + * file (`sysml/status` → `end`). Re-triggers `parseSysMLDocument` + * so the Model Explorer and Visualization panels pick up the newly + * available model data — prevents the "0 elements" problem on cold + * start when the DFA warm-up delays initial parsing. + */ +export function notifyServerParseDone(uri?: string): void { + // Find a matching open editor to re-parse + const editors = vscode.window.visibleTextEditors.filter( + e => e.document.languageId === 'sysml' && !e.document.isClosed, + ); + let target: vscode.TextDocument | undefined; + if (uri) { + target = editors.find(e => e.document.uri.toString() === uri)?.document; + } + // Fallback: re-parse whichever SysML editor is active + if (!target && editors.length > 0) { + target = vscode.window.activeTextEditor?.document.languageId === 'sysml' + ? vscode.window.activeTextEditor.document + : editors[0].document; + } + if (target) { + outputChannel?.appendLine(`notifyServerParseDone: re-parsing ${target.fileName.split('/').pop()}`); + parseSysMLDocument(target); + + // Also notify the visualizer directly — the server has finished + // parsing so sysml/model will return fresh data. This avoids + // waiting for the 300 ms debounce inside parseSysMLDocument. + if (VisualizationPanel.currentPanel) { + VisualizationPanel.currentPanel.notifyFileChanged(target.uri); + } + } +} + export function activate(context: vscode.ExtensionContext) { // Create dedicated output channel for logging outputChannel = vscode.window.createOutputChannel('SysML'); @@ -123,7 +259,14 @@ export function activate(context: vscode.ExtensionContext) { // features: diagnostics, completions, hover, go-to-definition, // references, rename, formatting, code actions, semantic tokens, // CodeLens, inlay hints, document symbols, folding ranges, etc. - startLanguageClient(context, outputChannel); + const client = startLanguageClient(context, outputChannel); + + // ─── LSP Model Provider ─────────────────────────────────────── + // The model explorer and visualization panels query the LSP + // server's `sysml/model` custom request. All parsing is handled + // by the language server — no extension-side parser. + lspModelProvider = new LspModelProvider(client); + outputChannel.appendLine('LSP model provider initialised'); // ─── MCP Server ──────────────────────────────────────────────── // Register the sysml-v2-lsp MCP server so Copilot / agent mode @@ -155,23 +298,8 @@ export function activate(context: vscode.ExtensionContext) { outputChannel.appendLine(`Warning: MCP server not found at ${mcpServerPath}`); } - // ─── Standard Library ────────────────────────────────────────── - const libraryService = LibraryService.getInstance(context.extensionPath); - libraryService.initialize().catch(err => { - outputChannel.appendLine(`Warning: Library initialization failed: ${err instanceof Error ? err.message : err}`); - }); - - // ─── Parser (visualization & model explorer only) ────────────── - parser = new SysMLParser(); - - // ─── Semantic Diagnostics (enum keyword, import checks) ──────── - semanticDiagnosticFormatter = new DiagnosticFormatter('SysML Semantic'); - context.subscriptions.push( - { dispose: () => semanticDiagnosticFormatter.dispose() } - ); - // ─── Model Explorer ──────────────────────────────────────────── - modelExplorerProvider = new ModelExplorerProvider(parser); + modelExplorerProvider = new ModelExplorerProvider(lspModelProvider); vscode.window.registerTreeDataProvider('sysmlModelExplorer', modelExplorerProvider); // ─── Commands ────────────────────────────────────────────────── @@ -189,14 +317,7 @@ export function activate(context: vscode.ExtensionContext) { vscode.commands.registerCommand('sysml.validateModel', async () => { const editor = vscode.window.activeTextEditor; if (editor && editor.document.languageId === 'sysml') { - // Run semantic resolution to get enum/import diagnostics - try { - const resolutionResult = await parser.parseWithSemanticResolution(editor.document); - semanticDiagnosticFormatter.publish(editor.document.uri, resolutionResult.diagnostics); - } catch { - // Fallback — semantic diagnostics unavailable - } - // Show combined diagnostic count (LSP + semantic) + // Diagnostics are provided by the LSP server. const diagnostics = vscode.languages.getDiagnostics(editor.document.uri); vscode.window.showInformationMessage( `Validation: ${diagnostics.length} issue(s) found` @@ -209,19 +330,7 @@ export function activate(context: vscode.ExtensionContext) { vscode.commands.registerCommand('sysml.showVisualizer', async () => { const editor = vscode.window.activeTextEditor; if (editor && editor.document.languageId === 'sysml') { - const fileName = editor.document.fileName.split('/').pop() || 'file'; - await vscode.window.withProgress( - { - location: vscode.ProgressLocation.Notification, - title: `Parsing ${fileName}...`, - cancellable: false - }, - async () => { - // Yield so the progress notification renders before the sync parse blocks - await new Promise(resolve => setTimeout(resolve, 0)); - VisualizationPanel.createOrShow(context.extensionUri, parser, editor.document); - } - ); + VisualizationPanel.createOrShow(context.extensionUri, editor.document, undefined, lspModelProvider); } }) ); @@ -235,12 +344,8 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.commands.registerCommand('sysml.clearCache', () => { - const { parseEntries, resolutionEntries } = parser.clearCache(); - const total = parseEntries + resolutionEntries; - vscode.window.showInformationMessage( - `SysML cache cleared (${total} ${total === 1 ? 'entry' : 'entries'} removed)` - ); - outputChannel.appendLine(`[Cache] Cleared ${parseEntries} parse + ${resolutionEntries} resolution entries`); + vscode.window.showInformationMessage('SysML cache cleared'); + outputChannel.appendLine('[Cache] Cleared'); }) ); @@ -267,7 +372,7 @@ export function activate(context: vscode.ExtensionContext) { if (currentDocument && currentDocument.languageId === 'sysml') { VisualizationPanel.currentPanel.dispose(); - VisualizationPanel.createOrShow(context.extensionUri, parser, currentDocument); + VisualizationPanel.createOrShow(context.extensionUri, currentDocument, undefined, lspModelProvider); } } }) @@ -330,32 +435,34 @@ export function activate(context: vscode.ExtensionContext) { return; } - // Read and combine all SysML files + // Open ALL files via openTextDocument so the LSP server + // receives textDocument/didOpen for each and can parse them. + const openDocs: vscode.TextDocument[] = []; let combinedContent = ''; const fileNames: string[] = []; for (const fileUri of uniqueFiles) { try { - const content = await vscode.workspace.fs.readFile(fileUri); + const doc = await vscode.workspace.openTextDocument(fileUri); + openDocs.push(doc); const fileName = fileUri.fsPath.substring(fileUri.fsPath.lastIndexOf('/') + 1); fileNames.push(fileName); combinedContent += `// === ${fileName} ===\n`; - combinedContent += Buffer.from(content).toString('utf8'); + combinedContent += doc.getText(); combinedContent += '\n\n'; } catch (error) { - outputChannel?.appendLine(`[warn] Failed to read SysML file ${fileUri.fsPath}: ${error}`); + outputChannel?.appendLine(`[warn] Failed to open SysML file ${fileUri.fsPath}: ${error}`); } } - if (combinedContent.trim() === '') { + if (openDocs.length === 0) { vscode.window.showErrorMessage('Failed to read any SysML files'); return; } - // Create a virtual document for the combined content - // Use the first actual file as the base document to avoid untitled files - const firstFileDocument = await vscode.workspace.openTextDocument(uniqueFiles[0]); + // Use the first opened document as the base document + const firstFileDocument = openDocs[0]; // Create a wrapper that provides combined content but uses the real file URI // This avoids creating an untitled document @@ -389,7 +496,7 @@ export function activate(context: vscode.ExtensionContext) { } // Show ONLY the visualization panel, not the text document - VisualizationPanel.createOrShow(context.extensionUri, parser, combinedDocumentProxy, title); + VisualizationPanel.createOrShow(context.extensionUri, combinedDocumentProxy, title, lspModelProvider, uniqueFiles); // Update the Model Explorer with the combined document await modelExplorerProvider.loadDocument(combinedDocumentProxy); @@ -506,6 +613,46 @@ export function activate(context: vscode.ExtensionContext) { }) ); + // ─── Type Hierarchy / Call Hierarchy ─────────────────────── + // The LSP server implements typeHierarchy & callHierarchy. These + // commands surface VS Code's built-in hierarchy views from the + // command palette for SysML files. + context.subscriptions.push( + vscode.commands.registerCommand('sysml.showTypeHierarchy', () => { + const editor = vscode.window.activeTextEditor; + if (editor && editor.document.languageId === 'sysml') { + vscode.commands.executeCommand('editor.showTypeHierarchy'); + } + }) + ); + + context.subscriptions.push( + vscode.commands.registerCommand('sysml.showCallHierarchy', () => { + const editor = vscode.window.activeTextEditor; + if (editor && editor.document.languageId === 'sysml') { + vscode.commands.executeCommand('editor.showCallHierarchy'); + } + }) + ); + + // ─── Feature Inspector ────────────────────────────────────────── + context.subscriptions.push( + vscode.commands.registerCommand('sysml.showFeatureInspector', () => { + FeatureInspectorPanel.createOrShow(context.extensionUri, lspModelProvider); + }) + ); + + // ─── Model Dashboard ──────────────────────────────────────────── + context.subscriptions.push( + vscode.commands.registerCommand('sysml.showModelDashboard', async (fileUri?: vscode.Uri) => { + // When invoked from the file explorer, open the file first + if (fileUri) { + await vscode.window.showTextDocument(fileUri, { preview: false }); + } + ModelDashboardPanel.createOrShow(context.extensionUri, lspModelProvider); + }) + ); + context.subscriptions.push( vscode.commands.registerCommand('sysml.jumpToDefinition', (uri: vscode.Uri, range: vscode.Range) => { if (!uri || !range) { @@ -589,6 +736,13 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.workspace.onDidCloseTextDocument(document => { if (document.languageId === 'sysml') { + // Clear debounce timer so a pending parse doesn't start + // after the document is already gone + if (parseDebounceTimer) { + globalThis.clearTimeout(parseDebounceTimer); + parseDebounceTimer = undefined; + } + if (activeParseCancel) { outputChannel.appendLine(`onDidCloseTextDocument: cancelling parse for ${document.fileName.split('/').pop()}`); activeParseCancel.cancel(); @@ -604,6 +758,7 @@ export function activate(context: vscode.ExtensionContext) { outputChannel.appendLine('onDidCloseTextDocument: no SysML files open, clearing Model Explorer'); vscode.commands.executeCommand('setContext', 'sysml.modelLoaded', false); modelExplorerProvider.clear(); + hideModelMetrics(); } } }) @@ -619,9 +774,21 @@ export function activate(context: vscode.ExtensionContext) { }) ); - // Visualization updates are handled as part of the centralized parse flow - // in parseSysMLDocument() — no need for a separate onDidSaveTextDocument - // handler. The file system watcher below covers external changes. + // Trigger a visualization refresh on save — the LSP server may + // need a moment to re-parse, so we add a short delay. This + // complements the onDidChangeTextDocument handler above which + // covers typing, and the file system watcher below which covers + // external changes. + context.subscriptions.push( + vscode.workspace.onDidSaveTextDocument(document => { + if (document.languageId === 'sysml' && VisualizationPanel.currentPanel) { + // Short delay gives the LSP server time to process the save + setTimeout(() => { + VisualizationPanel.currentPanel?.notifyFileChanged(document.uri); + }, 500); + } + }) + ); // Watch for file system changes to SysML files const fileSystemWatcher = vscode.workspace.createFileSystemWatcher('**/*.sysml'); @@ -664,10 +831,19 @@ export function deactivate(): PromiseLike | undefined { outputChannel?.appendLine('SysML v2.0 extension is now deactivated'); // Clean up resources - parser?.dispose(); + modelMetricsItem?.dispose(); + modelMetricsItem = undefined; + parseProgressItem?.dispose(); + parseProgressItem = undefined; if (VisualizationPanel.currentPanel) { VisualizationPanel.currentPanel.dispose(); } + if (FeatureInspectorPanel.currentPanel) { + FeatureInspectorPanel.currentPanel.dispose(); + } + if (ModelDashboardPanel.currentPanel) { + ModelDashboardPanel.currentPanel.dispose(); + } // Stop the language server return stopLanguageClient(); diff --git a/src/library/cacheManager.ts b/src/library/cacheManager.ts deleted file mode 100644 index 9de9b90..0000000 --- a/src/library/cacheManager.ts +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Library Cache Manager - Handles caching of compiled library to disk - */ - -import * as fs from 'fs'; -import * as path from 'path'; -import { LibraryCompiler } from './compiler'; -import { CompiledLibrary, SerializedLibrary } from './types'; - -export class LibraryCacheManager { - private cacheDir: string; - private cacheFile: string; - - constructor(extensionPath: string) { - this.cacheDir = path.join(extensionPath, '.sysml-cache'); - this.cacheFile = path.join(this.cacheDir, 'library.json'); - } - - /** - * Load compiled library from cache or compile fresh - */ - public async getCompiledLibrary(libraryPath: string, forceRecompile: boolean = false): Promise { - // Check if cache exists and is valid - if (!forceRecompile && this.isCacheValid()) { - try { - const cached = this.loadFromCache(); - if (cached) { - return cached; - } - } catch { - // Cache load failed, will recompile - } - } - - // Compile fresh - const compiler = new LibraryCompiler(); - const compiled = await compiler.compileLibrary(libraryPath); - - // Save to cache - await this.saveToCache(compiled); - - return compiled; - } - - /** - * Check if cache file exists and is valid - */ - private isCacheValid(): boolean { - if (!fs.existsSync(this.cacheFile)) { - return false; - } - - try { - const stats = fs.statSync(this.cacheFile); - // Cache is valid for 7 days - const age = Date.now() - stats.mtime.getTime(); - const maxAge = 7 * 24 * 60 * 60 * 1000; - return age < maxAge; - } catch { - return false; - } - } - - /** - * Load library from cache file - */ - private loadFromCache(): CompiledLibrary | null { - try { - const content = fs.readFileSync(this.cacheFile, 'utf-8'); - const serialized: SerializedLibrary = JSON.parse(content); - return LibraryCompiler.deserialize(serialized); - } catch (error) { - // eslint-disable-next-line no-console - console.error('[LibraryCache] Failed to parse cache:', error); - return null; - } - } - - /** - * Save compiled library to cache - */ - private async saveToCache(library: CompiledLibrary): Promise { - try { - // Ensure cache directory exists - if (!fs.existsSync(this.cacheDir)) { - fs.mkdirSync(this.cacheDir, { recursive: true }); - } - - const serialized = LibraryCompiler.serialize(library); - const content = JSON.stringify(serialized, null, 2); - fs.writeFileSync(this.cacheFile, content, 'utf-8'); - } catch { - // Silently ignore cache save failures - } - } - - /** - * Invalidate cache (force recompilation on next load) - */ - public invalidateCache(): void { - if (fs.existsSync(this.cacheFile)) { - fs.unlinkSync(this.cacheFile); - } - } - - /** - * Get cache statistics - */ - public getCacheStats(): { exists: boolean; size?: number; age?: number } { - if (!fs.existsSync(this.cacheFile)) { - return { exists: false }; - } - - try { - const stats = fs.statSync(this.cacheFile); - return { - exists: true, - size: stats.size, - age: Date.now() - stats.mtime.getTime() - }; - } catch { - return { exists: false }; - } - } -} diff --git a/src/library/compiler.ts b/src/library/compiler.ts deleted file mode 100644 index 2bb2ecf..0000000 --- a/src/library/compiler.ts +++ /dev/null @@ -1,362 +0,0 @@ -/** - * Library Compiler - Parses SysML v2 standard library using ANTLR - * and produces a semantic symbol table with qualified names, relationships, - * and type information. - */ - -import * as crypto from 'crypto'; -import * as fs from 'fs'; -import * as path from 'path'; -import { ANTLRSysMLParser } from '../parser/antlrSysMLParser'; -import type { Relationship, SysMLElement } from '../parser/sysmlParser'; -import { - CompiledLibrary, - LibraryFeature, - LibraryRelationship, - LibrarySymbol, - SerializedLibrary -} from './types'; - -export class LibraryCompiler { - private antlrParser: ANTLRSysMLParser; - private symbols: Map = new Map(); - private simpleNameIndex: Map = new Map(); - private packages: Map = new Map(); - private specializationGraph: Map> = new Map(); - private currentPackagePath: string[] = []; - private stats = { - totalSymbols: 0, - byKind: {} as Record, - totalFiles: 0, - totalPackages: 0 - }; - - constructor() { - this.antlrParser = new ANTLRSysMLParser(); - } - - /** - * Compile the entire library from a directory - */ - public async compileLibrary(libraryPath: string): Promise { - const startTime = Date.now(); - - this.reset(); - await this.compileDirectory(libraryPath, libraryPath); - - const _duration = Date.now() - startTime; - - return { - version: this.generateVersion(libraryPath), - timestamp: Date.now(), - symbols: this.symbols, - simpleNameIndex: this.simpleNameIndex, - packages: this.packages, - specializationGraph: this.specializationGraph, - stats: this.stats - }; - } - - /** - * Recursively compile all .sysml files in a directory - */ - private async compileDirectory(dirPath: string, rootPath: string): Promise { - const entries = fs.readdirSync(dirPath, { withFileTypes: true }); - - for (const entry of entries) { - const fullPath = path.join(dirPath, entry.name); - - if (entry.isDirectory() && !entry.name.startsWith('.')) { - await this.compileDirectory(fullPath, rootPath); - } else if (entry.isFile() && entry.name.endsWith('.sysml')) { - await this.compileFile(fullPath, rootPath); - } - } - } - - /** - * Compile a single library file - */ - private async compileFile(filePath: string, rootPath: string): Promise { - try { - const content = fs.readFileSync(filePath, 'utf-8'); - const relativePath = path.relative(rootPath, filePath); - - // Create mock VS Code document - const mockDoc = this.createMockDocument(content, filePath); - - // Parse with ANTLR - const elements = this.antlrParser.parseDocument(mockDoc, false); - const relationships = this.antlrParser.getRelationships(); - - // Extract symbols - this.extractSymbols(elements, relativePath, relationships); - - this.stats.totalFiles++; - } catch (error) { - // eslint-disable-next-line no-console - console.error(`[LibraryCompiler] Error compiling ${filePath}:`, error); - } - } - - /** - * Extract symbols from parsed elements - */ - private extractSymbols( - elements: SysMLElement[], - sourceFile: string, - relationships: Relationship[], - parentPackage: string = '' - ): void { - for (const element of elements) { - // Build qualified name - const qualifiedName = parentPackage - ? `${parentPackage}::${element.name}` - : element.name; - - // Extract specializations from relationships - const specializes = relationships - .filter(r => r.source === element.name && - (r.type === 'specialization' || r.type === 'specializes')) - .map(r => r.target); - - // Create library symbol - const symbol: LibrarySymbol = { - qualifiedName, - name: element.name, - packagePath: parentPackage, - kind: this.normalizeKind(element.type), - sourceFile, - line: element.range.start.line, - documentation: element.attributes.get('documentation') as string, - specializes, - features: this.extractFeatures(element), - relationships: this.extractRelationships(element, relationships), - constraints: [], - stereotypes: [], - isAbstract: element.attributes.get('modifier') === 'abstract', - visibility: this.extractVisibility(element) - }; - - // Add optional properties - if (element.attributes.has('direction')) { - symbol.direction = element.attributes.get('direction') as 'in' | 'out' | 'inout'; - } - if (element.attributes.has('dataType') || element.attributes.has('partType')) { - symbol.type = (element.attributes.get('dataType') || element.attributes.get('partType')) as string; - } - if (element.attributes.has('defaultValue')) { - symbol.defaultValue = element.attributes.get('defaultValue') as string; - } - - // Store symbol - this.symbols.set(qualifiedName, symbol); - - // Update simple name index - if (!this.simpleNameIndex.has(element.name)) { - this.simpleNameIndex.set(element.name, []); - } - this.simpleNameIndex.get(element.name)?.push(qualifiedName); - - // Update package index - if (element.type === 'package') { - this.packages.set(qualifiedName, []); - this.stats.totalPackages++; - } - if (parentPackage && this.packages.has(parentPackage)) { - this.packages.get(parentPackage)?.push(qualifiedName); - } - - // Update specialization graph - for (const parent of specializes) { - if (!this.specializationGraph.has(parent)) { - this.specializationGraph.set(parent, new Set()); - } - this.specializationGraph.get(parent)?.add(qualifiedName); - } - - // Update stats - this.stats.totalSymbols++; - this.stats.byKind[symbol.kind] = (this.stats.byKind[symbol.kind] || 0) + 1; - - // Recursively process children - if (element.children.length > 0) { - const childPackage = element.type === 'package' ? qualifiedName : parentPackage; - this.extractSymbols(element.children, sourceFile, relationships, childPackage); - } - } - } - - /** - * Extract features from element - */ - private extractFeatures(element: SysMLElement): LibraryFeature[] { - const features: LibraryFeature[] = []; - - for (const child of element.children) { - if (['attribute', 'port', 'reference', 'action', 'state'].includes(child.type)) { - features.push({ - name: child.name, - kind: child.type as LibraryFeature['kind'], - type: (child.attributes.get('dataType') || child.attributes.get('partType')) as string, - multiplicity: child.attributes.get('multiplicity') as string, - direction: child.attributes.get('direction') as 'in' | 'out' | 'inout', - defaultValue: child.attributes.get('defaultValue') as string, - isComposite: child.type !== 'reference' - }); - } - } - - return features; - } - - /** - * Extract relationships for an element - */ - private extractRelationships( - element: SysMLElement, - allRelationships: Relationship[] - ): LibraryRelationship[] { - return allRelationships - .filter(r => r.source === element.name) - .map(r => ({ - type: r.type as LibraryRelationship['type'], - source: r.source, - target: r.target - })); - } - - /** - * Normalize element kind to standard values - */ - private normalizeKind(type: string): LibrarySymbol['kind'] { - const kindMap: Record = { - 'package': 'package', - 'part': 'part', - 'part def': 'part def', - 'action': 'action', - 'action def': 'action def', - 'state': 'state', - 'state def': 'state def', - 'requirement': 'requirement', - 'requirement def': 'requirement def', - 'constraint': 'constraint', - 'constraint def': 'constraint def', - 'attribute': 'attribute', - 'port': 'port', - 'interface': 'interface', - 'connection': 'connection', - 'allocation': 'allocation', - 'item': 'item', - 'item def': 'item def', - 'occurrence': 'occurrence', - 'enumeration': 'enumeration', - 'metadata': 'metadata', - 'comment': 'comment', - 'doc': 'doc' - }; - - return kindMap[type.toLowerCase()] || 'part' as LibrarySymbol['kind']; - } - - /** - * Extract visibility from element - */ - private extractVisibility(element: SysMLElement): 'public' | 'private' | 'protected' { - const mod = element.attributes.get('modifier') || element.attributes.get('visibility'); - if (mod === 'private') return 'private'; - if (mod === 'protected') return 'protected'; - return 'public'; - } - - /** - * Create mock VS Code document for parsing - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private createMockDocument(content: string, filePath: string): any { - const lines = content.split('\n'); - return { - getText: () => content, - uri: { path: filePath, fsPath: filePath }, - lineCount: lines.length, - lineAt: (line: number) => ({ - text: lines[line] || '', - range: { - start: { line, character: 0 }, - end: { line, character: (lines[line] || '').length } - } - }), - positionAt: (offset: number) => { - const before = content.slice(0, offset); - const linesBefore = before.split('\n'); - return { - line: linesBefore.length - 1, - character: linesBefore[linesBefore.length - 1].length - }; - } - }; - } - - /** - * Generate version identifier from directory - */ - private generateVersion(dirPath: string): string { - // Use directory modification time and content hash - const stats = fs.statSync(dirPath); - const hash = crypto.createHash('md5') - .update(dirPath) - .update(stats.mtime.toISOString()) - .digest('hex') - .substring(0, 8); - return `lib-${hash}`; - } - - /** - * Serialize library for caching - */ - public static serialize(library: CompiledLibrary): SerializedLibrary { - return { - version: library.version, - timestamp: library.timestamp, - symbols: Array.from(library.symbols.entries()), - simpleNameIndex: Array.from(library.simpleNameIndex.entries()), - packages: Array.from(library.packages.entries()), - specializationGraph: Array.from(library.specializationGraph.entries()) - .map(([k, v]) => [k, Array.from(v)]), - stats: library.stats - }; - } - - /** - * Deserialize library from cache - */ - public static deserialize(data: SerializedLibrary): CompiledLibrary { - return { - version: data.version, - timestamp: data.timestamp, - symbols: new Map(data.symbols), - simpleNameIndex: new Map(data.simpleNameIndex), - packages: new Map(data.packages), - specializationGraph: new Map( - data.specializationGraph.map(([k, v]) => [k, new Set(v)]) - ), - stats: data.stats - }; - } - - /** - * Reset internal state - */ - private reset(): void { - this.symbols.clear(); - this.simpleNameIndex.clear(); - this.packages.clear(); - this.specializationGraph.clear(); - this.stats = { - totalSymbols: 0, - byKind: {}, - totalFiles: 0, - totalPackages: 0 - }; - } -} diff --git a/src/library/index.ts b/src/library/index.ts deleted file mode 100644 index 30ef156..0000000 --- a/src/library/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * SysML v2 Standard Library Compilation and Management - * - * This module provides a complete replacement for the regex-based libraryIndexer. - * It uses ANTLR to parse the standard library and produces a semantic symbol table - * with qualified names, relationships, and type information. - */ - -export { LibraryCacheManager } from './cacheManager'; -export { LibraryCompiler } from './compiler'; -export { LibraryService } from './service'; -export * from './types'; - diff --git a/src/library/service.ts b/src/library/service.ts deleted file mode 100644 index 005ac6e..0000000 --- a/src/library/service.ts +++ /dev/null @@ -1,217 +0,0 @@ -/** - * Library Service - Main interface for accessing compiled standard library - */ - -import * as path from 'path'; -import { LibraryCacheManager } from './cacheManager'; -import { CompiledLibrary, LibrarySymbol } from './types'; - -export class LibraryService { - private static instance: LibraryService; - private library: CompiledLibrary | null = null; - private cacheManager: LibraryCacheManager; - private libraryPath: string; - private initialized: boolean = false; - - private constructor(extensionPath: string) { - this.libraryPath = path.join(extensionPath, 'sysml.library'); - this.cacheManager = new LibraryCacheManager(extensionPath); - } - - public static getInstance(extensionPath?: string): LibraryService { - if (!LibraryService.instance && extensionPath) { - LibraryService.instance = new LibraryService(extensionPath); - } - if (!LibraryService.instance) { - throw new Error('LibraryService not initialized with extension path'); - } - return LibraryService.instance; - } - - /** - * Initialize the library (async, called at extension startup) - */ - public async initialize(forceRecompile: boolean = false): Promise { - if (this.initialized && !forceRecompile) { - return; - } - - this.library = await this.cacheManager.getCompiledLibrary( - this.libraryPath, - forceRecompile - ); - this.initialized = true; - } - - /** - * Returns the compiled library, throwing if not initialized. - */ - private get lib(): CompiledLibrary { - this.ensureInitialized(); - if (!this.library) { - throw new Error('Library not available after initialization'); - } - return this.library; - } - - /** - * Lookup symbol by qualified name - */ - public getSymbol(qualifiedName: string): LibrarySymbol | undefined { - return this.lib.symbols.get(qualifiedName); - } - - /** - * Lookup symbols by simple name (may return multiple) - */ - public getSymbolsByName(name: string): LibrarySymbol[] { - const qualifiedNames = this.lib.simpleNameIndex.get(name) || []; - return qualifiedNames - .map(qn => this.lib.symbols.get(qn)) - .filter(s => s !== undefined) as LibrarySymbol[]; - } - - /** - * Check if a symbol exists - */ - public hasSymbol(qualifiedName: string): boolean { - return this.lib.symbols.has(qualifiedName); - } - - /** - * Get all symbols in a package - */ - public getPackageSymbols(packageName: string): LibrarySymbol[] { - const childNames = this.lib.packages.get(packageName) || []; - return childNames - .map(name => this.lib.symbols.get(name)) - .filter(s => s !== undefined) as LibrarySymbol[]; - } - - /** - * Get specialization chain for a type - */ - public getSpecializationChain(typeName: string): string[] { - this.ensureInitialized(); - const chain: string[] = [typeName]; - let current = this.getSymbol(typeName); - - while (current && current.specializes.length > 0) { - // Follow first parent (primary specialization) - const parent = current.specializes[0]; - chain.push(parent); - current = this.getSymbol(parent); - - // Prevent infinite loops - if (chain.length > 100) { - // eslint-disable-next-line no-console - console.warn('[LibraryService] Specialization chain too deep for', typeName); - break; - } - } - - return chain; - } - - /** - * Get all subtypes of a type - */ - public getSubtypes(typeName: string): string[] { - this.ensureInitialized(); - const subtypes = this.lib.specializationGraph.get(typeName); - return subtypes ? Array.from(subtypes) : []; - } - - /** - * Check if type A specializes type B - */ - public isSpecializationOf(typeA: string, typeB: string): boolean { - const chain = this.getSpecializationChain(typeA); - return chain.includes(typeB); - } - - /** - * Search symbols by partial name - */ - public searchSymbols(query: string, limit: number = 50): LibrarySymbol[] { - this.ensureInitialized(); - const lowerQuery = query.toLowerCase(); - const results: LibrarySymbol[] = []; - - for (const symbol of this.lib.symbols.values()) { - if (symbol.name.toLowerCase().includes(lowerQuery) || - symbol.qualifiedName.toLowerCase().includes(lowerQuery)) { - results.push(symbol); - if (results.length >= limit) { - break; - } - } - } - - return results; - } - - /** - * Get all symbols of a specific kind - */ - public getSymbolsByKind(kind: LibrarySymbol['kind']): LibrarySymbol[] { - this.ensureInitialized(); - const results: LibrarySymbol[] = []; - - for (const symbol of this.lib.symbols.values()) { - if (symbol.kind === kind) { - results.push(symbol); - } - } - - return results; - } - - /** - * Get library statistics - */ - public getStats() { - this.ensureInitialized(); - return { ...this.lib.stats }; - } - - /** - * Get library version - */ - public getVersion(): string { - this.ensureInitialized(); - return this.lib.version; - } - - /** - * Invalidate cache and force recompilation - */ - public async recompile(): Promise { - this.cacheManager.invalidateCache(); - this.initialized = false; - await this.initialize(true); - } - - /** - * Check if library is initialized - */ - public isInitialized(): boolean { - return this.initialized && this.library !== null; - } - - /** - * Ensure library is initialized - */ - private ensureInitialized(): void { - if (!this.initialized || !this.library) { - throw new Error('LibraryService not initialized. Call initialize() first.'); - } - } - - /** - * Get cache statistics - */ - public getCacheStats() { - return this.cacheManager.getCacheStats(); - } -} diff --git a/src/library/types.ts b/src/library/types.ts deleted file mode 100644 index a8816b5..0000000 --- a/src/library/types.ts +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Type definitions for the compiled SysML v2 standard library - */ - -/** - * Represents a compiled library symbol with full semantic information - */ -export interface LibrarySymbol { - /** Fully qualified name (e.g., "Base::Anything") */ - qualifiedName: string; - - /** Simple name */ - name: string; - - /** Package path */ - packagePath: string; - - /** Element kind */ - kind: 'package' | 'part' | 'part def' | 'action' | 'action def' | 'state' | 'state def' | - 'requirement' | 'requirement def' | 'constraint' | 'constraint def' | 'attribute' | - 'port' | 'interface' | 'connection' | 'allocation' | 'item' | 'item def' | - 'occurrence' | 'enumeration' | 'metadata' | 'comment' | 'doc'; - - /** Source file path relative to library root */ - sourceFile: string; - - /** Line number in source file */ - line: number; - - /** Documentation string */ - documentation?: string; - - /** Specialization chain (parent types) */ - specializes: string[]; - - /** Features (attributes, ports, etc.) */ - features: LibraryFeature[]; - - /** Relationships */ - relationships: LibraryRelationship[]; - - /** Constraints */ - constraints: string[]; - - /** Stereotypes */ - stereotypes: string[]; - - /** Multiplicity bounds */ - multiplicity?: { - lower: number; - upper: number | 'many'; - }; - - /** For ports: direction */ - direction?: 'in' | 'out' | 'inout'; - - /** For attributes: type */ - type?: string; - - /** For attributes: default value */ - defaultValue?: string; - - /** Is this abstract? */ - isAbstract: boolean; - - /** Visibility */ - visibility: 'public' | 'private' | 'protected'; -} - -/** - * Feature within a library symbol - */ -export interface LibraryFeature { - name: string; - kind: 'attribute' | 'port' | 'reference' | 'action' | 'state'; - type?: string; - multiplicity?: string; - direction?: 'in' | 'out' | 'inout'; - defaultValue?: string; - isComposite: boolean; -} - -/** - * Relationship between library symbols - */ -export interface LibraryRelationship { - type: 'specialization' | 'composition' | 'aggregation' | 'dependency' | - 'satisfy' | 'verify' | 'allocation' | 'binding'; - source: string; - target: string; -} - -/** - * Compiled library index - */ -export interface CompiledLibrary { - /** Version identifier (git commit hash or timestamp) */ - version: string; - - /** Compilation timestamp */ - timestamp: number; - - /** All symbols by qualified name */ - symbols: Map; - - /** Quick lookup by simple name (may have collisions) */ - simpleNameIndex: Map; - - /** Package hierarchy */ - packages: Map; // package name -> child qualified names - - /** Specialization graph */ - specializationGraph: Map>; // type -> all subtypes - - /** Statistics */ - stats: { - totalSymbols: number; - byKind: Record; - totalFiles: number; - totalPackages: number; - }; -} - -/** - * Serializable version of compiled library - */ -export interface SerializedLibrary { - version: string; - timestamp: number; - symbols: [string, LibrarySymbol][]; - simpleNameIndex: [string, string[]][]; - packages: [string, string[]][]; - specializationGraph: [string, string[]][]; - stats: { - totalSymbols: number; - byKind: Record; - totalFiles: number; - totalPackages: number; - }; -} diff --git a/src/lsp/client.ts b/src/lsp/client.ts index 9a3029c..d39b078 100644 --- a/src/lsp/client.ts +++ b/src/lsp/client.ts @@ -11,12 +11,26 @@ import * as vscode from 'vscode'; import { LanguageClient, LanguageClientOptions, + ProgressToken, ServerOptions, TransportKind, + WorkDoneProgressBegin, + WorkDoneProgressEnd, } from 'vscode-languageclient/node'; +import type { SysMLStatusParams } from '../providers/sysmlModelTypes'; let client: LanguageClient | undefined; +// ── WorkDoneProgress timeout protection ────────────────────────── +// The LSP server creates a WorkDoneProgress token (begin → … → end) +// for each parse. When a parse is cancelled mid-flight the promise +// never resolves, so progress.done() is never called and the +// "Parsing …" spinner gets stuck. We track active "Parsing" tokens +// here and force-end them after a safety timeout. +const PROGRESS_TIMEOUT_MS = 30_000; +let activeParsingToken: ProgressToken | undefined; +let parsingTimeoutHandle: ReturnType | undefined; + /** * Resolve the absolute path to the sysml-v2-lsp server module. * Uses the package's exported `serverPath` which points to @@ -75,6 +89,44 @@ export function startLanguageClient( } return next(document, range, token); }, + + // Guard against stuck "Parsing …" progress indicators. + // When a new "Parsing" begin arrives while one is already + // active, force-end the old one first. Also set a safety + // timeout to auto-end any token that lingers too long. + handleWorkDoneProgress: (token, params, next) => { + if ('kind' in params && params.kind === 'begin') { + const beginParams = params as WorkDoneProgressBegin; + if (beginParams.title === 'Parsing') { + // End any previously stuck "Parsing" progress + if (activeParsingToken !== undefined) { + const endMsg: WorkDoneProgressEnd = { kind: 'end' }; + next(activeParsingToken, endMsg); + } + if (parsingTimeoutHandle) { + clearTimeout(parsingTimeoutHandle); + } + activeParsingToken = token; + parsingTimeoutHandle = setTimeout(() => { + if (activeParsingToken !== undefined) { + const endMsg: WorkDoneProgressEnd = { kind: 'end' }; + next(activeParsingToken, endMsg); + activeParsingToken = undefined; + } + parsingTimeoutHandle = undefined; + }, PROGRESS_TIMEOUT_MS); + } + } else if ('kind' in params && params.kind === 'end') { + if (token === activeParsingToken) { + activeParsingToken = undefined; + if (parsingTimeoutHandle) { + clearTimeout(parsingTimeoutHandle); + parsingTimeoutHandle = undefined; + } + } + } + next(token, params); + }, }, }; @@ -86,7 +138,26 @@ export function startLanguageClient( ); client.start().then( - () => outputChannel.appendLine('SysML v2 language server started successfully'), + () => { + outputChannel.appendLine('SysML v2 language server started successfully'); + + // Listen for sysml/status notifications to drive the + // "Parsing …" status-bar indicator and re-fetch model + // data once parsing completes (cold-start fix). + if (client) { + client.onNotification('sysml/status', (params: SysMLStatusParams) => { + const ext = require('../extension'); + if (params.state === 'begin' || params.state === 'progress') { + ext.showParseProgress(params.fileName ?? params.message ?? 'Working'); + } else if (params.state === 'end') { + ext.hideParseProgress(); + // Re-trigger model fetch now that the server + // has finished parsing this file. + ext.notifyServerParseDone(params.uri); + } + }); + } + }, (err) => { const msg = `Failed to start SysML language server: ${err}`; outputChannel.appendLine(msg); diff --git a/src/panels/featureInspectorPanel.ts b/src/panels/featureInspectorPanel.ts new file mode 100644 index 0000000..d1411d9 --- /dev/null +++ b/src/panels/featureInspectorPanel.ts @@ -0,0 +1,661 @@ +/** + * Feature Inspector Panel — an interactive sidebar webview that shows + * the resolved type information for the SysML element nearest to the cursor. + * + * Displays: + * - Specialization breadcrumbs (clickable — drill into parents) + * - Feature table with direction arrows, multiplicity badges, + * derived/readonly markers, and visibility icons + * - Clickable type names — drill into any referenced type + * - Navigation history with back button + * - Type index when no match at cursor — browse all known types + * + * Data source: `ResolvedTypeDTO` from `sysml/model` with + * `scope: ['resolvedTypes']`. + */ + +import * as vscode from 'vscode'; +import { LspModelProvider } from '../providers/lspModelProvider'; +import type { ResolvedFeatureDTO, ResolvedTypeDTO } from '../providers/sysmlModelTypes'; + +export class FeatureInspectorPanel { + public static currentPanel: FeatureInspectorPanel | undefined; + + private readonly _panel: vscode.WebviewPanel; + private readonly _disposables: vscode.Disposable[] = []; + private _lspModelProvider: LspModelProvider | undefined; + private _resolvedTypes: Record = {}; + private _lastDocUri: string | undefined; + + /** Navigation history stack for drill-down / back. */ + private _navStack: ResolvedTypeDTO[] = []; + /** The currently displayed type (if any). */ + private _currentType: ResolvedTypeDTO | undefined; + + private constructor( + panel: vscode.WebviewPanel, + lspModelProvider: LspModelProvider | undefined, + ) { + this._panel = panel; + this._lspModelProvider = lspModelProvider; + + this._panel.onDidDispose(() => this.dispose(), null, this._disposables); + + // Handle messages from the webview (navigation clicks) + this._panel.webview.onDidReceiveMessage( + msg => this._onMessage(msg), + null, + this._disposables, + ); + + // Listen for cursor position changes + this._disposables.push( + vscode.window.onDidChangeTextEditorSelection(e => { + if (e.textEditor.document.languageId === 'sysml') { + this._onCursorMove(e.textEditor); + } + }), + ); + + // Listen for active editor changes + this._disposables.push( + vscode.window.onDidChangeActiveTextEditor(editor => { + if (editor && editor.document.languageId === 'sysml') { + this._onCursorMove(editor); + } else if (!editor || editor.document.languageId !== 'sysml') { + this._showTypeIndex(); + } + }), + ); + + this._showEmpty('Place cursor on a SysML element to inspect it'); + } + + /** Create or reveal the Feature Inspector panel. */ + static createOrShow( + extensionUri: vscode.Uri, + lspModelProvider: LspModelProvider | undefined, + ): FeatureInspectorPanel { + if (FeatureInspectorPanel.currentPanel) { + FeatureInspectorPanel.currentPanel._panel.reveal(vscode.ViewColumn.Beside); + FeatureInspectorPanel.currentPanel._lspModelProvider = lspModelProvider; + return FeatureInspectorPanel.currentPanel; + } + + const panel = vscode.window.createWebviewPanel( + 'sysmlFeatureInspector', + 'SysML Feature Inspector', + { viewColumn: vscode.ViewColumn.Beside, preserveFocus: true }, + { enableScripts: true, localResourceRoots: [] }, + ); + + FeatureInspectorPanel.currentPanel = new FeatureInspectorPanel(panel, lspModelProvider); + + // Kick off initial inspection if editor is already open + const editor = vscode.window.activeTextEditor; + if (editor && editor.document.languageId === 'sysml') { + FeatureInspectorPanel.currentPanel._onCursorMove(editor); + } + + return FeatureInspectorPanel.currentPanel; + } + + /** Update the LSP model provider. */ + setLspModelProvider(provider: LspModelProvider | undefined): void { + this._lspModelProvider = provider; + if (!provider) { + this._showEmpty('Feature Inspector requires an LSP model provider'); + } + } + + /** Notify that resolved types have been refreshed externally. */ + updateResolvedTypes(types: Record, docUri: string): void { + this._resolvedTypes = types; + this._lastDocUri = docUri; + // Re-render for current cursor position + const editor = vscode.window.activeTextEditor; + if (editor && editor.document.languageId === 'sysml') { + this._renderForPosition(editor); + } + } + + dispose(): void { + FeatureInspectorPanel.currentPanel = undefined; + this._panel.dispose(); + for (const d of this._disposables) { + d.dispose(); + } + } + + // ─── Private ─────────────────────────────────────────────────── + + /** Handle messages from the webview. */ + private _onMessage(msg: { command: string; qualifiedName?: string }): void { + switch (msg.command) { + case 'navigate': { + if (!msg.qualifiedName) return; + this._navigateTo(msg.qualifiedName); + break; + } + case 'back': { + this._navigateBack(); + break; + } + case 'showIndex': { + this._navStack = []; + this._currentType = undefined; + this._showTypeIndex(); + break; + } + } + } + + /** Navigate to a type by qualified or simple name. */ + private _navigateTo(name: string): void { + const target = this._findTypeByName(name); + if (!target) { + vscode.window.showInformationMessage(`Type "${name}" not found in resolved types`); + return; + } + + // Push current type onto the stack before navigating + if (this._currentType) { + this._navStack.push(this._currentType); + } + this._currentType = target; + this._panel.webview.html = this._buildHtml(target); + } + + /** Go back to the previous type in history. */ + private _navigateBack(): void { + const prev = this._navStack.pop(); + if (prev) { + this._currentType = prev; + this._panel.webview.html = this._buildHtml(prev); + } else { + this._currentType = undefined; + this._showTypeIndex(); + } + } + + /** Look up a type by qualified name, simple name, or partial match. */ + private _findTypeByName(name: string): ResolvedTypeDTO | undefined { + // Exact qualified name + if (this._resolvedTypes[name]) return this._resolvedTypes[name]; + + // Search by qualified name or simple name + return Object.values(this._resolvedTypes).find( + t => t.qualifiedName === name + || t.simpleName === name + || t.qualifiedName.endsWith(`::${name}`), + ); + } + + private async _onCursorMove(editor: vscode.TextEditor): Promise { + const uri = editor.document.uri.toString(); + + // Fetch resolved types if we don't have them for this document + if (this._lastDocUri !== uri && this._lspModelProvider) { + try { + const result = await this._lspModelProvider.getModel(uri, ['resolvedTypes']); + this._resolvedTypes = result.resolvedTypes ?? {}; + this._lastDocUri = uri; + } catch { + this._showEmpty('Failed to fetch resolved types from LSP server'); + return; + } + } + + this._renderForPosition(editor); + } + + private _renderForPosition(editor: vscode.TextEditor): void { + const pos = editor.selection.active; + const match = this._findElementAtCursor(editor.document, pos); + + if (!match) { + this._showTypeIndex(); + return; + } + + // Reset navigation stack when cursor moves to a new element + this._navStack = []; + this._currentType = match; + this._panel.webview.html = this._buildHtml(match); + } + + /** + * Extract the word (identifier) under the cursor position. + */ + private _getWordAtPosition( + document: vscode.TextDocument, + position: vscode.Position, + ): string | undefined { + const range = document.getWordRangeAtPosition(position, /\w+/); + return range ? document.getText(range) : undefined; + } + + /** + * Find the best matching ResolvedTypeDTO for the cursor position. + * + * Priority: + * 1. The exact word under the cursor (click target) + * 2. Type annotation on the same line (after `:`) + * 3. Declaration name on the same line + * 4. Walk upward to find the enclosing element + */ + private _findElementAtCursor( + document: vscode.TextDocument, + position: vscode.Position, + ): ResolvedTypeDTO | undefined { + // 1. Try the exact word under the cursor first + const cursorWord = this._getWordAtPosition(document, position); + if (cursorWord) { + const exact = Object.values(this._resolvedTypes).find( + t => t.simpleName === cursorWord || t.qualifiedName.endsWith(`::${cursorWord}`), + ); + if (exact) return exact; + } + + const lineText = document.lineAt(position.line).text; + + // 2. Try type annotation on the line (word after `:`) + const typeAnnotation = /:\s*(\w+)/.exec(lineText); + if (typeAnnotation?.[1]) { + const found = Object.values(this._resolvedTypes).find( + t => t.simpleName === typeAnnotation[1], + ); + if (found) return found; + } + + // 3. Try declaration name on the line + const declPattern = /\b(?:part\s+def|part|port\s+def|port|action\s+def|action|state\s+def|state|item\s+def|item|package|attribute\s+def|attribute|connection\s+def|connection|interface\s+def|interface|allocation\s+def|allocation|requirement\s+def|requirement|constraint\s+def|constraint|concern\s+def|concern|case\s+def|case|analysis\s+def|analysis|verification\s+def|verification|use\s+case\s+def|use\s+case|view\s+def|view|viewpoint\s+def|viewpoint|rendering\s+def|rendering|calc\s+def|calc|ref\s+part|ref\s+attribute|enum\s+def|occurrence\s+def|occurrence|flow)\s+(?:(?:'[^']*')|(\w+))/; + const declMatch = declPattern.exec(lineText); + if (declMatch?.[1]) { + const found = Object.values(this._resolvedTypes).find( + t => t.simpleName === declMatch[1], + ); + if (found) return found; + } + + // 4. Walk upward to find enclosing element + for (let l = position.line - 1; l >= Math.max(0, position.line - 50); l--) { + const prevLine = document.lineAt(l).text; + const prevMatch = declPattern.exec(prevLine); + if (prevMatch?.[1]) { + const found = Object.values(this._resolvedTypes).find( + t => t.simpleName === prevMatch[1], + ); + if (found) return found; + } + } + + return undefined; + } + + /** Show a browseable index of all known resolved types, grouped by kind. */ + private _showTypeIndex(): void { + const types = Object.values(this._resolvedTypes); + + if (!types.length) { + this._showEmpty('Place cursor on a SysML element to inspect it'); + return; + } + + // Group types by kind + const byKind = new Map(); + for (const t of types) { + const list = byKind.get(t.kind) ?? []; + list.push(t); + byKind.set(t.kind, list); + } + + // Sort kinds alphabetically, then entries within each kind + const sortedKinds = [...byKind.keys()].sort(); + + let sections = ''; + for (const kind of sortedKinds) { + const entries = byKind.get(kind) ?? []; + entries.sort((a, b) => a.simpleName.localeCompare(b.simpleName)); + + const items = entries.map(t => { + const featureCount = t.features.length; + const badge = featureCount > 0 + ? `${featureCount}` : ''; + const libBadge = t.isLibraryType + ? 'LIB' : ''; + return `
` + + `${this._escapeHtml(t.simpleName)}` + + `${badge}${libBadge}` + + `
`; + }).join('\n'); + + sections += ` +
+
${this._escapeHtml(kind)} (${entries.length})
+ ${items} +
`; + } + + this._panel.webview.html = ` + + + +
Model Types
+
Click any type to inspect it. ${types.length} types available.
+${sections} + +`; + } + + private _showEmpty(message: string): void { + this._panel.webview.html = ` +

${message}

`; + } + + private _buildHtml(type: ResolvedTypeDTO): string { + const breadcrumbs = this._renderBreadcrumbs(type); + const featuresTable = this._renderFeaturesTable(type.features); + const meta = this._renderMeta(type); + const hasHistory = this._navStack.length > 0; + + return ` + + + + + + + + + +
+ ${this._escapeHtml(type.kind)} + ${type.isLibraryType ? 'LIBRARY' : ''} +
${this._escapeHtml(type.simpleName)}
+
${this._escapeHtml(type.qualifiedName)}
+
+ +${breadcrumbs} +${meta} + +
Features (${type.features.length})
+${featuresTable} + + + + +`; + } + + /** Shared CSS used by both the detail view and the index view. */ + private _getBaseStyles(): string { + return `:root { + --bg: var(--vscode-editor-background); + --fg: var(--vscode-foreground); + --border: var(--vscode-panel-border, #444); + --badge-bg: var(--vscode-badge-background, #007acc); + --badge-fg: var(--vscode-badge-foreground, #fff); + --subtle: var(--vscode-descriptionForeground, #888); + --header-bg: var(--vscode-sideBarSectionHeader-background, #252526); + --hover-bg: var(--vscode-list-hoverBackground, #2a2d2e); + --accent: var(--vscode-textLink-foreground, #3794ff); +} +* { box-sizing: border-box; margin: 0; padding: 0; } +body { font-family: var(--vscode-font-family, 'Segoe UI', sans-serif); + font-size: var(--vscode-font-size, 13px); color: var(--fg); + background: var(--bg); padding: 12px; line-height: 1.5; } + +/* ── Header ── */ +.header { margin-bottom: 16px; } +.kind-badge { display: inline-block; font-size: 10px; text-transform: uppercase; + letter-spacing: 0.5px; padding: 2px 8px; border-radius: 10px; + background: var(--badge-bg); color: var(--badge-fg); margin-bottom: 6px; } +.element-name { font-size: 18px; font-weight: 600; margin-bottom: 4px; } +.qualified-name { font-size: 11px; color: var(--subtle); word-break: break-all; } + +/* ── Breadcrumbs ── */ +.breadcrumbs { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; + margin: 12px 0; padding: 8px; background: var(--header-bg); + border-radius: 4px; font-size: 12px; } +.breadcrumbs .crumb { color: var(--accent); } +.breadcrumbs .crumb-link { color: var(--accent); cursor: pointer; text-decoration: none; + border-bottom: 1px dotted var(--accent); } +.breadcrumbs .crumb-link:hover { text-decoration: underline; } +.breadcrumbs .sep { color: var(--subtle); margin: 0 2px; } + +/* ── Meta ── */ +.meta { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; } +.meta-item { font-size: 11px; color: var(--subtle); } +.meta-item strong { color: var(--fg); } +.meta-link { color: var(--accent); cursor: pointer; border-bottom: 1px dotted var(--accent); } +.meta-link:hover { text-decoration: underline; } + +/* ── Features table ── */ +.section-title { font-size: 12px; text-transform: uppercase; letter-spacing: 0.8px; + color: var(--subtle); margin-bottom: 8px; border-bottom: 1px solid var(--border); + padding-bottom: 4px; } +table { width: 100%; border-collapse: collapse; } +th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; + color: var(--subtle); padding: 4px 8px; border-bottom: 1px solid var(--border); + cursor: help; } +td { padding: 5px 8px; border-bottom: 1px solid var(--border); font-size: 12px; + vertical-align: top; } +tr:hover { background: var(--hover-bg); } + +/* Clickable type in table */ +.type-link { color: var(--accent); cursor: pointer; border-bottom: 1px dotted var(--accent); } +.type-link:hover { text-decoration: underline; } + +/* Markers */ +.dir { font-weight: 700; font-size: 14px; } +.dir-in { color: #4ec9b0; } +.dir-out { color: #ce9178; } +.dir-inout { color: #dcdcaa; } +.mult { display: inline-block; padding: 1px 6px; border-radius: 8px; font-size: 10px; + background: var(--badge-bg); color: var(--badge-fg); font-family: monospace; } +.marker { display: inline-block; padding: 1px 5px; border-radius: 3px; font-size: 10px; + margin-right: 2px; } +.marker-derived { background: #4a3a17; color: #dcdcaa; } +.marker-readonly { background: #1a3a4a; color: #9cdcfe; } +.marker-private { background: #3a1a1a; color: #f48771; } +.marker-protected { background: #3a2a1a; color: #dca06e; } + +.no-features { padding: 20px; text-align: center; color: var(--subtle); font-style: italic; } +.library-badge { display: inline-block; font-size: 9px; padding: 1px 5px; border-radius: 3px; + background: #2d4a2d; color: #89d185; margin-left: 6px; vertical-align: middle; }`; + } + + private _renderBreadcrumbs(type: ResolvedTypeDTO): string { + if (!type.specializationChain.length && !type.specializes.length) { + return ''; + } + + const chain = type.specializationChain.length > 0 + ? type.specializationChain + : type.specializes; + + const crumbs = chain + .map(name => { + const simple = name.includes('::') ? (name.split('::').pop() ?? name) : name; + const isClickable = !!this._findTypeByName(name); + if (isClickable) { + return `${this._escapeHtml(simple)}`; + } + return `${this._escapeHtml(simple)}`; + }) + .join(''); + + return ``; + } + + private _renderMeta(type: ResolvedTypeDTO): string { + const items: string[] = []; + if (type.specializes.length) { + const specLinks = type.specializes.map(s => { + const simple = s.includes('::') ? (s.split('::').pop() ?? s) : s; + const isClickable = !!this._findTypeByName(s); + if (isClickable) { + return `${this._escapeHtml(simple)}`; + } + return this._escapeHtml(simple); + }).join(', '); + items.push(`Specialises: ${specLinks}`); + } + if (type.features.length) { + const dirs = type.features.filter(f => f.direction); + if (dirs.length) { + const inCount = dirs.filter(f => f.direction === 'in').length; + const outCount = dirs.filter(f => f.direction === 'out').length; + const inoutCount = dirs.filter(f => f.direction === 'inout').length; + const parts: string[] = []; + if (inCount) parts.push(`${inCount} in`); + if (outCount) parts.push(`${outCount} out`); + if (inoutCount) parts.push(`${inoutCount} inout`); + items.push(`Directed: ${parts.join(', ')}`); + } + } + return items.length ? `
${items.join('')}
` : ''; + } + + private _renderFeaturesTable(features: ResolvedFeatureDTO[]): string { + if (!features.length) { + return '
No features declared
'; + } + + // Check which optional columns have any data (used for subtle styling) + const hasDir = features.some(f => f.direction); + + const rows = features.map(f => { + // Direction arrow + let dirCell = ''; + if (f.direction === 'in') dirCell = ''; + else if (f.direction === 'out') dirCell = ''; + else if (f.direction === 'inout') dirCell = ''; + + // Multiplicity badge + const multCell = f.multiplicity + ? `${this._escapeHtml(f.multiplicity)}` + : ''; + + // Markers + const markers: string[] = []; + if (f.isDerived) markers.push('/'); + if (f.isReadonly) markers.push('R'); + if (f.visibility === 'private') markers.push(''); + else if (f.visibility === 'protected') markers.push('#'); + + // Type cell — clickable if the type exists in resolved types + let typeCell: string; + if (f.type) { + const isClickable = !!this._findTypeByName(f.type); + if (isClickable) { + typeCell = `${this._escapeHtml(f.type)}`; + } else { + typeCell = `${this._escapeHtml(f.type)}`; + } + } else { + typeCell = ''; + } + + return ` + ${hasDir ? `${dirCell}` : ''} + ${this._escapeHtml(f.name)} + ${typeCell} + ${multCell} + ${markers.join(' ')} + ${this._escapeHtml(f.kind)} +`; + }).join('\n'); + + // Build header row — Dir is hidden when no features have direction data; + // Mult and Flags are always shown so their tooltips remain accessible. + const headers = [ + ...(hasDir ? ['Dir'] : []), + 'Name', + 'Type', + 'Mult', + 'Flags', + 'Kind', + ]; + + return ` +${headers.join('')} + +${rows} + +
`; + } + + private _escapeHtml(text: string): string { + return text + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + } +} diff --git a/src/panels/modelDashboardPanel.ts b/src/panels/modelDashboardPanel.ts new file mode 100644 index 0000000..837a83a --- /dev/null +++ b/src/panels/modelDashboardPanel.ts @@ -0,0 +1,377 @@ +/** + * Model Dashboard Panel — a webview showing model-wide metrics and + * a breakdown of the current SysML document. + * + * Displays: + * - Resolution coverage (typed vs un-typed elements) + * - Elements-by-kind bar chart (pure CSS, no external deps) + * - Specialization depth overview + * - Parse performance + * + * Data source: `stats` + `resolvedTypes` from `sysml/model`. + */ + +import * as vscode from 'vscode'; +import { LspModelProvider } from '../providers/lspModelProvider'; +import type { ResolvedTypeDTO } from '../providers/sysmlModelTypes'; + +interface DashboardData { + stats: { + totalElements: number; + resolvedElements: number; + unresolvedElements: number; + parseTimeMs: number; + modelBuildTimeMs: number; + }; + resolvedTypes: Record; + fileName: string; + diagnosticErrors: number; + diagnosticWarnings: number; +} + +export class ModelDashboardPanel { + public static currentPanel: ModelDashboardPanel | undefined; + + private readonly _panel: vscode.WebviewPanel; + private readonly _disposables: vscode.Disposable[] = []; + private _lspModelProvider: LspModelProvider | undefined; + + private constructor( + panel: vscode.WebviewPanel, + lspModelProvider: LspModelProvider | undefined, + ) { + this._panel = panel; + this._lspModelProvider = lspModelProvider; + this._panel.onDidDispose(() => this.dispose(), null, this._disposables); + } + + /** Create or reveal the Model Dashboard panel. */ + static async createOrShow( + extensionUri: vscode.Uri, + lspModelProvider: LspModelProvider | undefined, + ): Promise { + if (ModelDashboardPanel.currentPanel) { + ModelDashboardPanel.currentPanel._panel.reveal(vscode.ViewColumn.Active); + ModelDashboardPanel.currentPanel._lspModelProvider = lspModelProvider; + await ModelDashboardPanel.currentPanel._refresh(); + return ModelDashboardPanel.currentPanel; + } + + const panel = vscode.window.createWebviewPanel( + 'sysmlModelDashboard', + 'SysML Model Dashboard', + vscode.ViewColumn.Active, + { enableScripts: false, localResourceRoots: [] }, + ); + + const dashboard = new ModelDashboardPanel(panel, lspModelProvider); + ModelDashboardPanel.currentPanel = dashboard; + await dashboard._refresh(); + return dashboard; + } + + /** Update the LSP model provider. */ + setLspModelProvider(provider: LspModelProvider | undefined): void { + this._lspModelProvider = provider; + } + + /** Refresh dashboard with latest data. */ + async refresh(): Promise { + await this._refresh(); + } + + dispose(): void { + ModelDashboardPanel.currentPanel = undefined; + this._panel.dispose(); + for (const d of this._disposables) { + d.dispose(); + } + } + + // ─── Private ─────────────────────────────────────────────────── + + private async _refresh(): Promise { + if (!this._lspModelProvider) { + this._panel.webview.html = this._emptyHtml( + 'Model Dashboard requires an LSP model provider', + ); + return; + } + + const editor = vscode.window.activeTextEditor; + if (!editor || editor.document.languageId !== 'sysml') { + this._panel.webview.html = this._emptyHtml('Open a SysML file to see the dashboard'); + return; + } + + const uri = editor.document.uri.toString(); + const fileName = editor.document.fileName.split('/').pop() ?? 'unknown'; + + try { + const result = await this._lspModelProvider.getModel(uri, ['resolvedTypes']); + const stats = result.stats ?? { + totalElements: 0, + resolvedElements: 0, + unresolvedElements: 0, + parseTimeMs: 0, + modelBuildTimeMs: 0, + }; + + const diagnostics = vscode.languages.getDiagnostics(editor.document.uri); + const diagnosticErrors = diagnostics.filter( + d => d.severity === vscode.DiagnosticSeverity.Error, + ).length; + const diagnosticWarnings = diagnostics.filter( + d => d.severity === vscode.DiagnosticSeverity.Warning, + ).length; + + const data: DashboardData = { + stats, + resolvedTypes: result.resolvedTypes ?? {}, + fileName, + diagnosticErrors, + diagnosticWarnings, + }; + + this._panel.webview.html = this._buildHtml(data); + } catch { + this._panel.webview.html = this._emptyHtml('Failed to fetch model data from LSP server'); + } + } + + private _emptyHtml(message: string): string { + return ` +

${this._esc(message)}

`; + } + + private _buildHtml(data: DashboardData): string { + const { stats, resolvedTypes, fileName, diagnosticErrors, diagnosticWarnings } = data; + const types = Object.values(resolvedTypes); + + // ── Elements by kind ── + const kindCounts = new Map(); + for (const t of types) { + const kind = t.kind || 'unknown'; + kindCounts.set(kind, (kindCounts.get(kind) ?? 0) + 1); + } + const sortedKinds = [...kindCounts.entries()].sort((a, b) => b[1] - a[1]); + const maxKindCount = sortedKinds.length > 0 ? sortedKinds[0][1] : 1; + + // ── Specialization depth ── + const depthCounts = new Map(); + let maxDepth = 0; + for (const t of types) { + const depth = t.specializationChain.length; + if (depth > maxDepth) maxDepth = depth; + depthCounts.set(depth, (depthCounts.get(depth) ?? 0) + 1); + } + + // ── Library vs user types ── + const libraryTypes = types.filter(t => t.isLibraryType).length; + const userTypes = types.length - libraryTypes; + + // ── Feature stats ── + let totalFeatures = 0; + let derivedCount = 0; + let readonlyCount = 0; + let directedCount = 0; + for (const t of types) { + totalFeatures += t.features.length; + for (const f of t.features) { + if (f.isDerived) derivedCount++; + if (f.isReadonly) readonlyCount++; + if (f.direction) directedCount++; + } + } + + // ── Resolution coverage percentage ── + const coveragePct = stats.totalElements > 0 + ? Math.round((stats.resolvedElements / stats.totalElements) * 100) + : 0; + + // ── Health indicator ── + const healthIcon = diagnosticErrors > 0 ? '🔴' : diagnosticWarnings > 0 ? '🟡' : '🟢'; + const healthText = diagnosticErrors > 0 + ? `${diagnosticErrors} error(s), ${diagnosticWarnings} warning(s)` + : diagnosticWarnings > 0 + ? `${diagnosticWarnings} warning(s)` + : 'No issues'; + + return ` + + + + + + + +

Model Dashboard

+
${this._esc(fileName)}  |  ${healthIcon} ${this._esc(healthText)}
+ + +
+
+
Total Elements
+
${stats.totalElements}
+
${userTypes} user / ${libraryTypes} library types
+
+
+
Type Coverage
+
${coveragePct}%
+
${stats.resolvedElements} typed / ${stats.unresolvedElements} un-typed
+
+
+
+
+
+
Parse Time
+
${stats.parseTimeMs}ms
+
${stats.parseTimeMs < 100 ? 'Fast' : stats.parseTimeMs < 500 ? 'Normal' : 'Slow'}
+
+
+
Resolved Types
+
${types.length}
+
Max depth: ${maxDepth}
+
+
+ + +
+
Elements by Kind
+ ${sortedKinds.length > 0 ? sortedKinds.map(([kind, count], i) => ` +
+
${this._esc(kind)}
+
+
+
+
${count}
+
`).join('') : '
No resolved types
'} +
+ + +${maxDepth > 0 ? ` +
+
Specialization Depth
+ ${[...depthCounts.entries()].sort((a, b) => a[0] - b[0]).map(([depth, count]) => { + const maxCount = Math.max(...depthCounts.values()); + return ` +
+
depth ${depth}
+
+
+
+
${count}
+
`; + }).join('')} +
` : ''} + + +${totalFeatures > 0 ? ` +
+
Feature Summary
+
+
${totalFeatures}
Total
+
${directedCount}
Directed
+
${derivedCount}
Derived
+
${readonlyCount}
Readonly
+
+
` : ''} + + +`; + } + + private _esc(text: string): string { + return text + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + } +} diff --git a/src/parser/antlrSysMLParser.ts b/src/parser/antlrSysMLParser.ts deleted file mode 100644 index 0cf3d02..0000000 --- a/src/parser/antlrSysMLParser.ts +++ /dev/null @@ -1,3504 +0,0 @@ -import { CharStream, CommonTokenStream, ErrorListener, PredictionMode } from 'antlr4'; -import * as vscode from 'vscode'; -import { SysMLv2Lexer } from './generated/grammar/SysMLv2Lexer'; -import { SysMLv2Parser } from './generated/grammar/SysMLv2Parser'; -import { SysMLv2ParserVisitor } from './generated/grammar/SysMLv2ParserVisitor'; -import { LibraryIndexer } from './libraryIndexer'; -import { ActivityAction, ActivityDiagram, ActivityState, ControlFlow, DecisionNode, Message, Participant, Relationship, SequenceDiagram, SysMLElement } from './sysmlParser'; - -/** - * ANTLR4-based implementation of SysML v2.0 parser. - * Provides robust parsing with proper error handling and syntax validation. - */ -export class ANTLRSysMLParser { - private elements: Map = new Map(); - private relationships: Relationship[] = []; - private libraryIndexer: LibraryIndexer; - // Reuse lexer/parser instances to preserve the DFA prediction cache across parses - private cachedLexer: SysMLv2Lexer; - private cachedParser: SysMLv2Parser; - - constructor() { - this.libraryIndexer = LibraryIndexer.getInstance(); - // Pre-construct lexer/parser so the ATN is deserialized once and the DFA cache persists - this.cachedLexer = new SysMLv2Lexer(new CharStream('')); - const tokenStream = new CommonTokenStream(this.cachedLexer); - this.cachedParser = new SysMLv2Parser(tokenStream); - (this.cachedParser as any)._interp.predictionMode = PredictionMode.SLL; - } - - /** - * Post-processing step to extract values from redefinition elements by parsing source text. - * This works around ANTLR parse errors that prevent visitRedefinitionUsage from being called. - */ - private extractRedefinitionValues(elements: SysMLElement[], content: string): void { - const lines = content.split('\n'); - - const processElement = (element: SysMLElement) => { - if (element.type === 'redefinition' && element.range) { - // Get the source line for this redefinition - const lineNum = element.range.start.line; - if (lineNum < lines.length) { - const line = lines[lineNum]; - // Match pattern: :>> name = value; or :>> name = value - const match = line.match(/:>>\s+(\w+)\s*=\s*([^;]+)/); - if (match) { - const value = match[2].trim(); - element.attributes.set('value', value); - } - } - } - - // Recursively process children - element.children.forEach(child => processElement(child)); - }; - - elements.forEach(element => processElement(element)); - } - - /** - * Parses a SysML document using ANTLR4 grammar and extracts all elements. - * @param document The VS Code text document to parse - * @param includeErrors Whether to include error elements in the results (default: false) - * @returns Array of top-level SysML elements with hierarchical children - */ - public parseDocument(document: vscode.TextDocument, includeErrors: boolean = true): SysMLElement[] { - try { - // Reset state - this.elements.clear(); - this.relationships = []; - - const content = document.getText(); - const inputStream = new CharStream(content); - - // Reuse cached lexer/parser to preserve DFA prediction cache - const lexer = new SysMLv2Lexer(inputStream); - const tokenStream = new CommonTokenStream(lexer); - const parser = this.cachedParser; - (parser as any).setTokenStream(tokenStream); - parser.reset(); - - // SLL prediction mode is set once in constructor - - // Add custom error handling - const errorListener = new SysMLErrorListener(document, this.elements); - lexer.removeErrorListeners(); - parser.removeErrorListeners(); - lexer.addErrorListener(errorListener); - parser.addErrorListener(errorListener); - - // Parse the entire document starting from the model rule - const modelContext = parser.rootNamespace(); - - // Use visitor pattern to extract elements - const visitor = new SysMLElementVisitor(document, this.elements, this.relationships); - visitor.visit(modelContext); - - // Log summary of suppressed errors - errorListener.logSummary(); - - // Build hierarchical structure and optionally filter out error elements - const allElements = this.buildHierarchy(); - - // Post-process to extract redefinition values from source text - this.extractRedefinitionValues(allElements, content); - - // Count non-error elements - const countNonErrorElements = (elements: SysMLElement[]): number => { - let count = 0; - for (const el of elements) { - if (el.type !== 'error') { - count++; - count += countNonErrorElements(el.children); - } - } - return count; - }; - - const _nonErrorCount = countNonErrorElements(allElements); - - // If no elements found or content contains action but no action elements found, try basic regex fallback - const _hasActionInContent = content.includes('action def') || content.includes('action '); - const _hasActionElements = allElements.some(el => el.type === 'action'); - const _actionLines = content.split('\n').filter(line => { - const trimmed = line.trim(); - return (trimmed.startsWith('action def') || - (trimmed.startsWith('action ') && !trimmed.startsWith('action def'))) - && !trimmed.startsWith('//'); - }); - const _actionElementsFound = allElements.filter(el => el.type === 'action').length; - - // Enhanced fallback logic for ANTLR parsing gaps - // Phase 2: REMOVED REGEX FALLBACK - // No longer falling back to regex parsing - ANTLR should handle all structures - // If elements are missing, it indicates grammar issues that should be surfaced as diagnostics - - // Filter out error elements and generic 'entry' elements when we have better alternatives - let filteredElements = includeErrors ? allElements : allElements.filter(element => element.type !== 'error'); - - // If we have both 'entry' and specific typed elements, prefer the specific ones - const entryElements = filteredElements.filter(el => el.type === 'entry' && el.name === 'unnamed'); - const specificElements = filteredElements.filter(el => el.type !== 'entry' || el.name !== 'unnamed'); - - if (entryElements.length > 0 && specificElements.length > 0) { - // We have both generic entries and specific elements, prefer the specific ones - filteredElements = specificElements; - } - - return filteredElements; - - } catch (error) { - // eslint-disable-next-line no-console - console.error('[ANTLR Parser] Fatal error during parsing:', error); - return [{ - type: 'error', - name: 'Parse Error', - range: new vscode.Range(0, 0, 0, 0), - children: [], - attributes: new Map([ - ['error', error?.toString() || 'Unknown parsing error'], - ['errorMessage', error instanceof Error ? error.message : 'Unknown'], - ['errorStack', error instanceof Error ? (error.stack || 'No stack trace') : 'No stack trace'] - ]), - relationships: [], - errors: [error?.toString() || 'Unknown parsing error'] - }]; - } - } - - /** - * Extracts sequence diagrams from the parsed elements using ANTLR's superior parsing. - * Handles both explicit interaction definitions and implicit action sequences. - */ - public extractSequenceDiagrams(document: vscode.TextDocument): SequenceDiagram[] { - const elements = this.parseDocument(document); - const sequenceDiagrams: SequenceDiagram[] = []; - - const extractFromElements = (elems: SysMLElement[]) => { - for (const element of elems) { - if (element.type === 'interaction') { - const participants: Participant[] = []; - const messages: Message[] = []; - - // Extract participants and messages from interaction children - this.extractInteractionElements(element, participants, messages); - - sequenceDiagrams.push({ - name: element.name, - participants, - messages: messages.sort((a, b) => a.occurrence - b.occurrence), - range: element.range - }); - } else if (element.type === 'action' && this.hasSequentialFlow(element)) { - // Also extract action sequences that represent sequential workflows - const participants: Participant[] = []; - const messages: Message[] = []; - - this.extractActionSequence(element, participants, messages); - - if (participants.length > 1 && messages.length > 0) { - sequenceDiagrams.push({ - name: `${element.name } (Action Sequence)`, - participants, - messages: messages.sort((a, b) => a.occurrence - b.occurrence), - range: element.range - }); - } - } - - // Recursively check children - extractFromElements(element.children); - } - }; - - extractFromElements(elements); - return sequenceDiagrams; - } - - /** - * Extracts activity diagrams from the SysML model using ANTLR parsing. - * @param document The VS Code text document to extract from - * @returns Array of activity diagrams found in the model - */ - public extractActivityDiagrams(document: vscode.TextDocument): ActivityDiagram[] { - const elements = this.parseDocument(document); - const activityDiagrams: ActivityDiagram[] = []; - - const extractFromElements = (elems: SysMLElement[]) => { - for (const element of elems) { - if (element.type === 'action' && this.hasActivityFlow(element)) { - const actions: ActivityAction[] = []; - const flows: ControlFlow[] = []; - const decisions: DecisionNode[] = []; - const states: ActivityState[] = []; - - // Extract activity elements from action children - this.extractActivityElements(element, actions, flows, decisions, states); - - if (actions.length > 0 || decisions.length > 0 || states.length > 0) { - activityDiagrams.push({ - name: element.name, - actions, - flows, - decisions, - states, - range: element.range - }); - } - } - - // Recursively check children - extractFromElements(element.children); - } - }; - - extractFromElements(elements); - return activityDiagrams; - } - - /** - * Checks if an action element has activity flow characteristics. - */ - private hasActivityFlow(element: SysMLElement): boolean { - // Check for sequential steps, control flow, or decision logic - const hasSequentialSteps = element.children.some(child => { - return child.name.match(/^\d+\./) || child.attributes.has('step') || child.attributes.has('sequence'); - }); - - const hasControlFlow = element.children.some(child => { - return child.type === 'if' || child.type === 'while' || child.type === 'for' || - child.name.toLowerCase().includes('then') || child.name.toLowerCase().includes('next') || - child.name.toLowerCase().includes('first') || child.name.toLowerCase().includes('done'); - }); - - const hasNestedActions = element.children.some(child => child.type === 'action'); - - // Check for SysML v2 activity keywords in element body - const hasActivityKeywords = element.children.some(child => { - return child.name.match(/\b(first|then|done|while|if|else|perform|action)\b/i); - }); - - return hasSequentialSteps || hasControlFlow || hasNestedActions || hasActivityKeywords || element.children.length > 2; - } - - /** - * Extracts activity elements from an action element and its children. - */ - private extractActivityElements( - action: SysMLElement, - actions: ActivityAction[], - flows: ControlFlow[], - decisions: DecisionNode[], - states: ActivityState[] - ): void { - const processElements = (elems: SysMLElement[], depth: number = 0) => { - for (let i = 0; i < elems.length; i++) { - const element = elems[i]; - - // Identify private actions within action definitions - if (element.type === 'action' || element.name.match(/^\d+\./) || element.attributes.has('step')) { - // Check if this is a decision action (inherits from DecisionAction) - const isDecisionAction = element.attributes.get('specialization')?.toString()?.includes('DecisionAction') || - element.attributes.get('type')?.toString()?.includes('DecisionAction') || - element.name.toLowerCase().includes('decision') || - element.name.toLowerCase().includes('check') || - element.name.toLowerCase().includes('gate'); - - if (isDecisionAction) { - const condition = element.attributes.get('condition')?.toString() || - element.attributes.get('doc')?.toString() || - 'decision condition'; - decisions.push({ - name: element.name || `Decision${decisions.length + 1}`, - condition, - branches: [], // Will be populated by flow processing - range: element.range - }); - } else { - // Regular action - const isComposite = element.children.some(child => child.type === 'action'); - - actions.push({ - name: element.name || `Action${actions.length + 1}`, - type: 'action', - condition: element.attributes.get('description')?.toString() || - element.attributes.get('doc')?.toString() || - element.name, - range: element.range, - isDefinition: element.attributes.get('isDefinition') === 'true', - inputs: this.extractParameters(element, 'in'), - outputs: this.extractParameters(element, 'out'), - subActions: isComposite ? this.extractSubActions(element) : undefined - }); - } - } - - // Identify explicit control flows (first...then patterns) - const flowPatterns = this.extractFlowPatterns(element); - flows.push(...flowPatterns); - - // Legacy decision handling for backward compatibility - if (element.type === 'if' || - (element.name.toLowerCase().includes('if') && !element.name.toLowerCase().includes('decision'))) { - const condition = element.attributes.get('condition')?.toString() || - element.attributes.get('doc')?.toString() || - 'condition'; - decisions.push({ - name: element.name || `Decision${decisions.length + 1}`, - condition, - branches: [ - { condition: 'true', target: 'continue' }, - { condition: 'false', target: 'alternate' } - ], - range: element.range - }); - } - - // Identify states - loops, waits, or state-like elements - if (element.type === 'while' || element.type === 'for' || element.type === 'state' || - element.name.toLowerCase().includes('loop') || - element.name.toLowerCase().includes('while') || - element.name.toLowerCase().includes('state')) { - states.push({ - name: element.name || `State${states.length + 1}`, - type: 'intermediate', - doActivity: element.attributes.get('activity')?.toString() || - element.attributes.get('doc')?.toString() || - element.name, - range: element.range - }); - } - - // Identify control flows - then/first/done keywords - if (element.name.toLowerCase().includes('then') || - element.name.toLowerCase().includes('first') || - element.name.toLowerCase().includes('done') || - element.name.includes('->')) { - const fromAction = actions[actions.length - 1]; - if (fromAction) { - flows.push({ - from: fromAction.name, - to: element.attributes.get('target')?.toString() || 'next', - condition: element.attributes.get('guard')?.toString(), - range: element.range - }); - } - } - - // Recursively process children - if (element.children.length > 0) { - processElements(element.children, depth + 1); - } - } - }; - - processElements(action.children); - } - - /** - * Extracts input or output parameters from an action element. - */ - private extractParameters(element: SysMLElement, direction: 'in' | 'out'): string[] { - const parameters: string[] = []; - - element.children.forEach(child => { - // Look for parameter declarations or attribute that match direction - const paramDirection = child.attributes.get('direction')?.toString(); - const paramName = child.attributes.get('parameterName')?.toString() || child.name; - const paramType = child.attributes.get('parameterType')?.toString() || - child.attributes.get('type')?.toString(); - - if (paramDirection === direction && paramName && paramType) { - parameters.push(`${paramName}: ${paramType}`); - } else if (child.type === direction && paramName) { - // Fallback: look for child elements typed as 'in' or 'out' - parameters.push(paramType ? `${paramName}: ${paramType}` : paramName); - } - }); - - return parameters; - } - - /** - * Extracts sub-actions from a composite action element. - */ - private extractSubActions(element: SysMLElement): ActivityAction[] { - const subActions: ActivityAction[] = []; - - element.children.forEach(child => { - if (child.type === 'action' && child.name) { - subActions.push({ - name: child.name, - type: 'action', - condition: child.attributes.get('doc')?.toString() || child.name, - range: child.range, - isDefinition: child.attributes.get('isDefinition') === 'true', - inputs: this.extractParameters(child, 'in'), - outputs: this.extractParameters(child, 'out') - }); - } - }); - - return subActions; - } - - /** - * Extracts explicit flow patterns (first...then relationships) from an element. - */ - private extractFlowPatterns(element: SysMLElement): ControlFlow[] { - const flows: ControlFlow[] = []; - - // Check if element represents a flow relationship - const flowKeywords = ['first', 'then', 'done']; - const elementName = element.name.toLowerCase(); - - // Look for flow attributes or relationships - const fromAction = element.attributes.get('fromAction')?.toString(); - const toAction = element.attributes.get('toAction')?.toString(); - const flowCondition = element.attributes.get('condition')?.toString(); - - if (fromAction && toAction) { - flows.push({ - from: fromAction, - to: toAction, - condition: flowCondition, - range: element.range - }); - } - - // Check for flow keywords in element structure - if (flowKeywords.some(keyword => elementName.includes(keyword))) { - // Extract flow information from element relationships or attributes - const target = element.attributes.get('target')?.toString() || - element.attributes.get('next')?.toString(); - const source = element.attributes.get('source')?.toString() || - element.attributes.get('previous')?.toString(); - - if (source && target) { - flows.push({ - from: source, - to: target, - condition: flowCondition, - range: element.range - }); - } - } - - return flows; - } - - /** - * Extracts participants and messages from an interaction element and its children. - */ - private extractInteractionElements(interaction: SysMLElement, participants: Participant[], messages: Message[]): void { - // Process direct children - for (const child of interaction.children) { - if (child.type === 'participant') { - participants.push({ - name: child.name, - type: child.attributes.get('participantType')?.toString() || 'participant', - range: child.range - }); - } else if (child.type === 'message') { - messages.push({ - name: child.name, - from: child.attributes.get('from')?.toString() || '', - to: child.attributes.get('to')?.toString() || '', - payload: child.attributes.get('payload')?.toString() || child.name, - occurrence: Number(child.attributes.get('occurrence') || messages.length + 1), - range: child.range - }); - } - - // Recursively process nested elements - this.extractInteractionElements(child, participants, messages); - } - } - - /** - * Checks if an action element represents a sequential workflow suitable for sequence diagrams. - */ - private hasSequentialFlow(element: SysMLElement): boolean { - // Check if action contains sequential keywords or patterns - const elementText = element.name.toLowerCase(); - const hasSequentialKeywords = elementText.includes('sequence') || - elementText.includes('workflow') || - elementText.includes('process'); - - // Check if it has multiple child actions that could represent steps - const childActions = element.children.filter(child => child.type === 'action'); - const hasMultipleSteps = childActions.length >= 2; - - // Check for part definitions that could be participants - const potentialParticipants = element.children.filter(child => - child.type === 'part' || child.type === 'participant' - ); - const hasParticipants = potentialParticipants.length >= 1; - - return hasSequentialKeywords || (hasMultipleSteps && hasParticipants); - } - - /** - * Extracts sequence diagram data from action elements that represent workflows. - */ - private extractActionSequence(action: SysMLElement, participants: Participant[], messages: Message[]): void { - // Find potential participants (parts, actors, subjects) - this.findParticipantsInAction(action, participants); - - // Extract sequential steps as messages - const occurrence = 1; - this.extractSequentialMessages(action, messages, occurrence, participants); - } - - /** - * Finds participants (actors, parts, subjects) in an action element. - */ - private findParticipantsInAction(element: SysMLElement, participants: Participant[]): void { - for (const child of element.children) { - if (child.type === 'part' || child.type === 'participant') { - participants.push({ - name: child.name, - type: child.type, - range: child.range - }); - } - - // Recursively search for participants in nested elements - this.findParticipantsInAction(child, participants); - } - - // If no explicit participants found, infer from action structure - if (participants.length === 0) { - // Add a default "System" participant - participants.push({ - name: 'System', - type: 'system', - range: element.range - }); - } - } - - /** - * Extracts messages from sequential action steps. - */ - private extractSequentialMessages(element: SysMLElement, messages: Message[], occurrence: number, participants: Participant[]): number { - for (const child of element.children) { - if (child.type === 'action') { - // Create message for this action step - const fromParticipant = this.inferFromParticipant(child, participants); - const toParticipant = this.inferToParticipant(child, participants); - - messages.push({ - name: child.name, - from: fromParticipant, - to: toParticipant, - payload: this.extractActionDescription(child), - occurrence: occurrence++, - range: child.range - }); - } - - // Recurse into nested elements - occurrence = this.extractSequentialMessages(child, messages, occurrence, participants); - } - return occurrence; - } - - /** - * Infers the "from" participant for an action message. - */ - private inferFromParticipant(action: SysMLElement, participants: Participant[]): string { - // Try to infer from action name or context - const actionName = action.name.toLowerCase(); - - for (const participant of participants) { - if (actionName.includes(participant.name.toLowerCase())) { - return participant.name; - } - } - - // Default to first participant or "System" - return participants.length > 0 ? participants[0].name : 'System'; - } - - /** - * Infers the "to" participant for an action message. - */ - private inferToParticipant(action: SysMLElement, participants: Participant[]): string { - // If only one participant, messages are self-directed - if (participants.length <= 1) { - return participants.length > 0 ? participants[0].name : 'System'; - } - - // Try to infer target from action name - const actionName = action.name.toLowerCase(); - const fromParticipant = this.inferFromParticipant(action, participants); - - for (const participant of participants) { - if (participant.name !== fromParticipant && - actionName.includes(participant.name.toLowerCase())) { - return participant.name; - } - } - - // Default to next participant in the list - const fromIndex = participants.findIndex(p => p.name === fromParticipant); - const nextIndex = (fromIndex + 1) % participants.length; - return participants[nextIndex].name; - } - - /** - * Extracts a meaningful description from an action element. - */ - private extractActionDescription(action: SysMLElement): string { - // Look for documentation or comments first - for (const [key, value] of action.attributes) { - if (key === 'doc' && typeof value === 'string') { - return value; - } - } - - // Clean up the action name - return action.name.replace(/^action\s+/i, '').trim(); - } - - /** - * Builds hierarchical structure from parsed elements. - */ - private buildHierarchy(): SysMLElement[] { - // Elements are already organized hierarchically by the visitor - // Just return the root-level elements (those without a parent) - const roots: SysMLElement[] = []; - - for (const [, element] of this.elements) { - roots.push(element); - } - - return roots; - } - - /** - * Gets all parsed relationships between elements. - */ - public getRelationships(): Relationship[] { - return [...this.relationships]; - } -} - -/** - * ANTLR visitor implementation for extracting SysML elements. - */ -class SysMLElementVisitor extends SysMLv2ParserVisitor { - private currentNamespace: string[] = []; - private parentStack: SysMLElement[] = []; - private currentElement: SysMLElement | null = null; - private libraryIndexer: LibraryIndexer; - - constructor( - private _document: vscode.TextDocument, - private elements: Map, - private relationships: Relationship[] - ) { - super(); - this.libraryIndexer = LibraryIndexer.getInstance(); - } - - public visit(tree: any): void { - super.visit(tree); - } - - // Note: visitElement removed - the new grammar dispatches directly to specific rules - // (e.g., visitPackage, visitPartDefinition, etc.) without a generic 'element' intermediary. - - /** - * Converts ANTLR position to VS Code Range. - * Note: antlr4 v4.13.2 uses `column` instead of `charPositionInLine`. - */ - private getRange(ctx: any): vscode.Range { - if (ctx.start && ctx.stop) { - const startCol = ctx.start.column ?? ctx.start.charPositionInLine ?? 0; - const stopCol = ctx.stop.column ?? ctx.stop.charPositionInLine ?? 0; - const stopTextLen = (ctx.stop.text?.length) || 1; - const startPos = new vscode.Position( - ctx.start.line - 1, - startCol - ); - const endPos = new vscode.Position( - ctx.stop.line - 1, - stopCol + stopTextLen - ); - return new vscode.Range(startPos, endPos); - } - return new vscode.Range(0, 0, 0, 0); - } - - /** - * Extracts element name from context. - * The new auto-generated grammar uses `identification` (a parser rule) nested - * inside declaration sub-rules (e.g., packageDeclaration, definitionDeclaration, - * usageDeclaration). This method searches for the IdentificationContext recursively. - */ - private getElementName(ctx: any): string { - // SysML keywords that should NOT be used as element names - const KEYWORDS = new Set([ - 'action', 'def', 'part', 'package', 'state', 'transition', 'entry', 'exit', 'do', - 'attribute', 'port', 'item', 'connection', 'interface', 'requirement', 'use', 'case', - 'exhibit', 'perform', 'accept', 'send', 'flow', 'bind', 'succession', 'first', 'then', - 'if', 'else', 'while', 'for', 'return', 'abstract', 'variation', 'enum', 'ref', 'in', - 'out', 'inout', 'private', 'protected', 'public', 'readonly', 'derived', 'end', - 'doc', 'comment', 'language', 'import', 'from', 'as', 'namespace', 'member', 'alias', - 'specializes', 'subsets', 'references', 'redefines', 'typing', 'feature', 'step', - 'objective', 'subject', 'actor', 'stakeholder', 'concern', 'frame', 'rendering' - ]); - - // Helper to strip quotes from quoted strings - const stripQuotes = (text: string | undefined | null): string => { - if (!text) return ''; - if ((text.startsWith("'") && text.endsWith("'")) || - (text.startsWith('"') && text.endsWith('"'))) { - return text.slice(1, -1); - } - return text; - }; - - // Helper: recursively search for IdentificationContext in parse subtree - const findIdentification = (node: any, depth: number): any => { - if (depth > 6) return null; - if (node?.constructor?.name === 'IdentificationContext') return node; - if (node?.children) { - for (const child of node.children) { - if (child?.constructor) { - const result = findIdentification(child, depth + 1); - if (result) return result; - } - } - } - return null; - }; - - // Helper: extract name text from an IdentificationContext - // The identification rule is: ( LT name GT )? ( name )? - // The name rule is: IDENTIFIER | STRING - const extractFromIdentification = (idCtx: any): string | null => { - if (!idCtx?.children) return null; - for (const child of idCtx.children) { - // Check for NameContext (new grammar: identification → name) - if (child?.constructor?.name === 'NameContext') { - if (child.children) { - for (const nameChild of child.children) { - if (nameChild?.symbol?.type === SysMLv2Lexer.STRING) { - const stripped = stripQuotes(nameChild.text); - if (stripped) return stripped; - } - if (nameChild?.symbol?.type === SysMLv2Lexer.IDENTIFIER) { - const text = nameChild.text; - if (text && !KEYWORDS.has(text.toLowerCase())) { - return text; - } - } - } - } - // Fallback: try NameContext.getText() directly - const nameText = child.getText?.(); - if (nameText) { - const stripped = stripQuotes(nameText); - if (stripped && !KEYWORDS.has(stripped.toLowerCase())) { - return stripped; - } - } - } - // Check for direct STRING token (backward compat) - if (child?.symbol?.type === SysMLv2Lexer.STRING) { - const stripped = stripQuotes(child.text); - if (stripped) return stripped; - } - // Check for direct IDENTIFIER token (backward compat) - if (child?.symbol?.type === SysMLv2Lexer.IDENTIFIER) { - const text = child.text; - if (text && !KEYWORDS.has(text.toLowerCase())) { - return text; - } - } - } - // Fallback: get text and check if it's a valid name - const text = idCtx.getText?.() || ''; - if (text) { - const stripped = stripQuotes(text); - // Quoted names (e.g., 'first') are always valid even if they match keywords - const isQuoted = text.startsWith("'") || text.startsWith('"'); - if (stripped && (isQuoted || (!KEYWORDS.has(stripped.toLowerCase()) && /^[a-zA-Z_]/.test(stripped)))) { - return stripped; - } - } - return null; - }; - - // Strategy 1: Search for IdentificationContext in the subtree (handles new grammar) - const idCtx = findIdentification(ctx, 0); - if (idCtx) { - const name = extractFromIdentification(idCtx); - if (name) return name; - } - - // Strategy 2: Try old grammar accessors (ctx.identifier) for backward compatibility - if (ctx.identifier && typeof ctx.identifier === 'function') { - try { - const identifierCtx = ctx.identifier(); - if (identifierCtx) { - if (identifierCtx.STRING && typeof identifierCtx.STRING === 'function') { - const stringNode = identifierCtx.STRING(); - if (stringNode?.text) { - return stripQuotes(stringNode.text); - } - } - if (identifierCtx.IDENTIFIER && typeof identifierCtx.IDENTIFIER === 'function') { - const identifierNode = identifierCtx.IDENTIFIER(); - if (identifierNode?.text && !KEYWORDS.has(identifierNode.text.toLowerCase())) { - return identifierNode.text; - } - } - } - } catch { - // identifier() can throw if node doesn't exist - } - } - - // Strategy 3: Scan direct children for IDENTIFIER/STRING tokens - if (ctx.children && ctx.children.length > 0) { - for (const child of ctx.children) { - if (child?.symbol?.type === SysMLv2Lexer.STRING) { - return stripQuotes(child.text); - } - } - for (const child of ctx.children) { - if (child?.symbol?.type === SysMLv2Lexer.IDENTIFIER) { - const text = child.text; - if (text && !KEYWORDS.has(text.toLowerCase())) { - return text; - } - } - } - // Check children text for identifier-like strings - for (const child of ctx.children) { - if (child?.text && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(child.text)) { - if (!KEYWORDS.has(child.text.toLowerCase())) { - return child.text; - } - } - } - } - - // Strategy 4: For elements with redefines/subsets but no name, generate synthetic name - // This handles: "part redefines engine" → "redefines engine" - // "attribute :>> fuelMass" → "redefines fuelMass" - const findContext = (node: any, targetName: string, depth: number): any => { - if (depth > 8 || !node) return null; - if (node?.constructor?.name === targetName) return node; - if (node?.children) { - for (const child of node.children) { - const result = findContext(child, targetName, depth + 1); - if (result) return result; - } - } - return null; - }; - - // Check for ownedRedefinition (handles :>> shorthand and explicit redefines) - const ownedRedef = findContext(ctx, 'OwnedRedefinitionContext', 0); - if (ownedRedef) { - const redefText = ownedRedef.getText?.(); - if (redefText) { - // Extract the last identifier from qualified name chains like "Vehicle::cargoMass" - const parts = redefText.split('::'); - const lastPart = parts[parts.length - 1]; - if (lastPart && !KEYWORDS.has(lastPart.toLowerCase())) { - return `redefines ${lastPart}`; - } - } - } - - // Check for RedefinesContext (explicit "redefines" keyword with target) - const redefinesCtx = findContext(ctx, 'RedefinesContext', 0); - if (redefinesCtx) { - const redefText = redefinesCtx.getText?.(); - if (redefText) { - // Extract target after "redefines" or ":>>" - const match = redefText.match(/(?:redefines|:>>)(.+)/i); - if (match && match[1]) { - const parts = match[1].split('::'); - const lastPart = parts[parts.length - 1].trim(); - if (lastPart && !KEYWORDS.has(lastPart.toLowerCase())) { - return `redefines ${lastPart}`; - } - } - } - } - - // Check for OwnedSubsettingContext - const subsettingCtx = findContext(ctx, 'OwnedSubsettingContext', 0); - if (subsettingCtx) { - const subText = subsettingCtx.getText?.(); - if (subText) { - const parts = subText.split('::'); - const lastPart = parts[parts.length - 1]; - if (lastPart && !KEYWORDS.has(lastPart.toLowerCase())) { - return `subsets ${lastPart}`; - } - } - } - - // Strategy 5: Generate synthetic names for connections, flows, allocations, transitions - // These are often anonymous but have structural endpoints we can use - const ctxTypeName = ctx?.constructor?.name || ''; - - // For ConnectionUsageContext: "connect source to target" → "source → target" - if (ctxTypeName === 'ConnectionUsageContext') { - // DEBUG: Log when we enter this code path (v2 marker) - const connectorPartCtx = ctx.connectorPart?.(); - if (connectorPartCtx) { - const binaryCtx = connectorPartCtx.binaryConnectorPart?.(); - if (binaryCtx) { - const endMembers = binaryCtx.connectorEndMember_list?.() || binaryCtx.connectorEndMember?.(); - if (Array.isArray(endMembers) && endMembers.length >= 2) { - const source = endMembers[0].getText?.() || ''; - const target = endMembers[1].getText?.() || ''; - if (source && target) { - return `${source} → ${target}`; - } - } - } - } - } - - // For FlowUsageContext: "flow source to target" → "source → target" - if (ctxTypeName === 'FlowUsageContext') { - // FlowUsage uses flowDeclaration -> flowEndMember_list - const flowDeclCtx = ctx.flowDeclaration?.(); - if (flowDeclCtx) { - const endMembers = flowDeclCtx.flowEndMember_list?.() || flowDeclCtx.flowEndMember?.(); - if (Array.isArray(endMembers) && endMembers.length >= 2) { - const source = endMembers[0].getText?.() || ''; - const target = endMembers[1].getText?.() || ''; - if (source && target) { - return `${source} → ${target}`; - } - } - } - } - - // For AllocationUsageContext: "allocate source to target" → "source → target" - if (ctxTypeName === 'AllocationUsageContext') { - // AllocationUsage uses allocationUsageDeclaration -> connectorPart -> binaryConnectorPart -> connectorEndMember_list - const allocDeclCtx = ctx.allocationUsageDeclaration?.(); - if (allocDeclCtx) { - const connectorPartCtx = allocDeclCtx.connectorPart?.(); - if (connectorPartCtx) { - const binaryCtx = connectorPartCtx.binaryConnectorPart?.(); - if (binaryCtx) { - const endMembers = binaryCtx.connectorEndMember_list?.() || binaryCtx.connectorEndMember?.(); - if (Array.isArray(endMembers) && endMembers.length >= 2) { - const source = endMembers[0].getText?.() || ''; - const target = endMembers[1].getText?.() || ''; - if (source && target) { - return `${source} → ${target}`; - } - } - } - } - } - } - - // For TransitionUsageContext: "transition initial then off" → "initial → off" - // Grammar: TRANSITION (usageDeclaration? FIRST)? featureChainMember ... THEN transitionSuccessionMember - if (ctxTypeName === 'TransitionUsageContext') { - // Source is in featureChainMember, target is in transitionSuccessionMember - const sourceCtx = ctx.featureChainMember?.(); - const targetCtx = ctx.transitionSuccessionMember?.(); - if (sourceCtx && targetCtx) { - const source = sourceCtx.getText?.() || ''; - const target = targetCtx.getText?.() || ''; - if (source && target) { - return `${source} → ${target}`; - } - } - } - - // For ConstraintUsageContext: try to extract meaningful constraint expression - // Grammar: CONSTRAINT constraintUsageDeclaration calculationBody - if (ctxTypeName === 'ConstraintUsageContext') { - // Use calculationBody which contains the constraint expression - const bodyCtx = ctx.calculationBody?.() || ctx.usageBody?.() || ctx.definitionBody?.(); - if (bodyCtx) { - const fullText = bodyCtx.getText?.() || ''; - // Extract the expression inside { } - limit to reasonable length - const match = fullText.match(/^\{(.{1,50})/); - if (match && match[1]) { - const expr = match[1].replace(/\}.*$/, '').trim(); - if (expr) { - return `assert ${expr}${expr.length > 40 ? '...' : ''}`; - } - } - } - } - - // For AssertConstraintUsageContext: "assert constraint { expr }" → "assert expr" - if (ctxTypeName === 'AssertConstraintUsageContext') { - const fullText = ctx.getText?.() || ''; - // Extract expression from assert constraint { ... } - const match = fullText.match(/\{([^}]+)\}/); - if (match && match[1]) { - const expr = match[1].trim(); - const preview = expr.length > 40 ? `${expr.substring(0, 40)}...` : expr; - return `assert {${preview}}`; - } - } - - // Strategy 6: Provide descriptive fallback for anonymous use-case related elements - // These are elements like "subject ;" or "actor ;" that serve as placeholders - const anonymousTypeMap: Record = { - 'SubjectUsageContext': '(anonymous subject)', - 'ActorUsageContext': '(anonymous actor)', - 'StakeholderUsageContext': '(anonymous stakeholder)', - 'ObjectiveRequirementUsageContext': '(anonymous objective)', - 'FrameConcernUsageContext': '(anonymous concern)', - 'ConcernDefinitionContext': '(anonymous concern)', - 'RenderingUsageContext': '(anonymous rendering)', - 'ViewUsageContext': '(anonymous view)', - 'ViewpointUsageContext': '(anonymous viewpoint)', - }; - if (ctxTypeName in anonymousTypeMap) { - return anonymousTypeMap[ctxTypeName]; - } - - return 'unnamed'; - } - - /** - * Creates a SysML element and adds it to the collection or parent's children. - */ - private createElement(type: string, ctx: any, attributes: Map = new Map()): SysMLElement { - const name = this.getElementName(ctx); - const range = this.getRange(ctx); - const fullName = [...this.currentNamespace, name].join('.'); - - const element: SysMLElement = { - type, - name, - range, - children: [], - attributes, - relationships: [] - }; - - // Extract typing information (e.g., "subject subjectName : SubjectType" -> typing = "SubjectType") - if (ctx.typing && typeof ctx.typing === 'function') { - try { - const typingCtx = ctx.typing(); - if (typingCtx) { - let typeName = this.extractQualifiedName(typingCtx); - // Clean up typing value - remove leading colon and optional tilde for conjugate types - if (typeName) { - typeName = typeName.replace(/^[:~]+/, '').trim(); - if (typeName) { - (element as any).typing = typeName; - } - } - } - } catch { - // typing() can throw if node doesn't exist - } - } - - // Extract doc content from source text (handles doc followed by block comments) - this.extractDocFromSourceText(element, ctx); - - // Check if element or its specializations are in standard library - this.enrichWithLibraryValidation(element, ctx); - - // If we have a parent element, add this as a child - if (this.parentStack.length > 0) { - const parent = this.parentStack[this.parentStack.length - 1]; - parent.children.push(element); - } else { - // Only add to root elements if there's no parent - this.elements.set(fullName, element); - } - - return element; - } - - /** - * Extract doc content from source text. - * Looks for 'doc' keyword followed by block comments in the element's body. - */ - private extractDocFromSourceText(element: SysMLElement, ctx: any): void { - try { - if (!ctx || !ctx.start || !ctx.stop) { - return; - } - - // Get the range of the element - const startLine = ctx.start.line - 1; - const endLine = ctx.stop.line - 1; - - // Read the element's source text - const textRange = new vscode.Range(startLine, 0, endLine + 1, 0); - const text = this._document.getText(textRange); - - // Look for 'doc' keyword followed by block comment - // Pattern: doc followed by optional whitespace and newlines, then /* ... */ - const docPattern = /\bdoc\s*\n?\s*(\/\*[\s\S]*?\*\/)/; - const docMatch = text.match(docPattern); - - if (docMatch && docMatch[1]) { - let docContent = docMatch[1]; - // Remove /* and */ markers - docContent = docContent.replace(/^\/\*/, '').replace(/\*\/$/, ''); - // Clean up leading * characters on each line (common doc format) - docContent = docContent.split('\n') - .map(line => line.replace(/^\s*\*\s?/, '').trim()) - .join(' ') - .replace(/\s+/g, ' ') - .trim(); - - if (docContent) { - element.attributes.set('doc', docContent); - } - } - } catch { - // Silently ignore doc extraction errors - } - } - - /** - * Enrich element with library validation metadata - */ - private enrichWithLibraryValidation(element: SysMLElement, ctx: any): void { - // Check if the element name itself is a standard library type - if (this.libraryIndexer.isStandardElement(element.name)) { - element.attributes.set('isStandardType', true); - const libraryElement = this.libraryIndexer.lookup(element.name); - if (libraryElement) { - element.attributes.set('libraryKind', libraryElement.kind); - element.attributes.set('libraryFile', libraryElement.filePath); - } - } - - // Check specializations (typing, :>, etc.) - if (ctx.typing && typeof ctx.typing === 'function') { - try { - const typingCtx = ctx.typing(); - if (typingCtx) { - const typeName = this.extractQualifiedName(typingCtx); - if (typeName && this.libraryIndexer.isStandardElement(typeName)) { - element.attributes.set('isStandardElement', true); - const chain = this.libraryIndexer.getSpecializationChain(typeName); - if (chain.length > 0) { - element.attributes.set('specializationChain', chain.join(' :> ')); - } - } - } - } catch { - // typing() can throw if node doesn't exist - } - } - - if (ctx.specialization && typeof ctx.specialization === 'function') { - try { - const specializationCtxs = ctx.specialization(); - if (specializationCtxs) { - const specArray = Array.isArray(specializationCtxs) ? specializationCtxs : [specializationCtxs]; - for (const specCtx of specArray) { - const specName = this.extractQualifiedName(specCtx); - if (specName && this.libraryIndexer.isStandardElement(specName)) { - element.attributes.set('isStandardElement', true); - const chain = this.libraryIndexer.getSpecializationChain(specName); - if (chain.length > 0) { - element.attributes.set('specializationChain', chain.join(' :> ')); - } - break; // Only need one match - } - } - } - } catch { - // specialization() can throw if node doesn't exist - } - } - } - - /** - * Extract qualified name from context (handles :: separated names) - */ - private extractQualifiedName(ctx: any): string | null { - if (!ctx) { - return null; - } - - // Try to get qualifiedName child - if (ctx.qualifiedName && typeof ctx.qualifiedName === 'function') { - try { - const qnCtx = ctx.qualifiedName(); - if (qnCtx && qnCtx.text) { - return qnCtx.text; - } - } catch { - // qualifiedName() can throw if node doesn't exist - } - } - - // Try to get identifier - if (ctx.identifier && typeof ctx.identifier === 'function') { - try { - const idCtx = ctx.identifier(); - if (idCtx && idCtx.text) { - return idCtx.text; - } - } catch { - // identifier() can throw if node doesn't exist - } - } - - // Fallback to text - return ctx.text || null; - } - - // Visit methods for different SysML constructs - visitPackage(ctx: any): void { - const name = this.getElementName(ctx); - this.currentNamespace.push(name); - - const packageElement = this.createElement('package', ctx, new Map([ - ['isNamespace', true] - ])); - - // Push package to parent stack so children are added to it - this.parentStack.push(packageElement); - this.visitChildren(ctx); - this.parentStack.pop(); - - this.currentNamespace.pop(); - } - - visitPartDefinition(ctx: any): void { - const attributes = new Map(); - - // Check for modifiers - if (ctx.abstract && typeof ctx.abstract === 'function') { - try { - const abstractCtx = ctx.abstract(); - if (abstractCtx) { - attributes.set('modifier', 'abstract'); - } - } catch { - // abstract() can throw if node doesn't exist - } - } - - const element = this.createElement('part def', ctx, attributes); - this.parentStack.push(element); - - // Set current element so relationships can be associated with it - const prevCurrentElement = this.currentElement; - this.currentElement = element; - - this.visitChildren(ctx); - - // Restore previous current element - this.currentElement = prevCurrentElement; - this.parentStack.pop(); - } - - visitPartUsage(ctx: any): void { - const _name = this.getElementName(ctx); - const element = this.createElement('part', ctx); - - // Extract metadata prefix (e.g., #logical, #physical) - try { - const metadataPrefix = ctx.metadataPrefix?.(); - if (metadataPrefix) { - const prefixId = metadataPrefix.identifier?.(); - if (prefixId) { - element.attributes.set('metadataPrefix', prefixId.getText()); - } - } - } catch { - // Ignore errors extracting metadata prefix - } - - this.parentStack.push(element); - - // Set current element so relationships can be associated with it - const prevCurrentElement = this.currentElement; - this.currentElement = element; - - this.visitChildren(ctx); - - // Restore previous current element - this.currentElement = prevCurrentElement; - this.parentStack.pop(); - } - - /** - * Extracts "then action X;" patterns from an action definition body. - * These are SysML v2 succession statements that may not be parsed as separate action nodes. - */ - private extractThenActionPatterns(ctx: any, parentElement: SysMLElement): void { - // Get the original text with whitespace from the input stream - if (!ctx || !ctx.start || !ctx.stop) { - return; - } - - let text: string; - try { - // Get text from the input stream which preserves whitespace - const inputStream = ctx.start.inputStream; - if (inputStream && typeof inputStream.getText === 'function') { - text = inputStream.getText(ctx.start, ctx.stop); - } else { - // Fallback to getText() which strips whitespace - text = ctx.getText?.() || ''; - } - } catch { - text = ctx.getText?.() || ''; - } - - if (!text) { - return; - } - - // Look for "then action X" patterns - handle both with and without whitespace - // Pattern: thenaction (no spaces due to ANTLR getText) or then action - const thenActionRegex = /then\s*action\s*(\w+)/gi; - let match; - - // Track existing children to avoid duplicates - const existingChildren = new Set(parentElement.children.map(c => c.name)); - - while ((match = thenActionRegex.exec(text)) !== null) { - const actionName = match[1]; - - // Skip if already added as a child - if (existingChildren.has(actionName)) { - continue; - } - - // Create a child action element - const childAction: SysMLElement = { - type: 'action', - name: actionName, - range: parentElement.range, // Use parent range as approximation - attributes: new Map([ - ['isDefinition', 'false'], - ['isThenAction', 'true'] - ]), - children: [], - relationships: [] - }; - - parentElement.children.push(childAction); - existingChildren.add(actionName); - } - } - - visitActionDefinition(ctx: any): void { - const element = this.createElement('action', ctx); - - // Mark as definition for activity diagrams - element.attributes.set('isDefinition', 'true'); - - // Extract visibility (private, public, etc.) - const visibility = this.extractVisibility(ctx); - if (visibility) { - element.attributes.set('visibility', visibility); - } - - // Check for specialization (e.g., DecisionAction inheritance) - const specialization = this.extractSpecialization(ctx); - if (specialization) { - element.attributes.set('specialization', specialization); - } - - this.parentStack.push(element); - this.visitChildren(ctx); - - // Extract nested "then action X;" patterns from raw text - // These may not be parsed as separate actionUsage nodes - this.extractThenActionPatterns(ctx, element); - - this.parentStack.pop(); - } - - visitActionUsage(ctx: any): void { - const element = this.createElement('action', ctx); - - // Mark as usage (not definition) - element.attributes.set('isDefinition', 'false'); - - // Extract visibility - const visibility = this.extractVisibility(ctx); - if (visibility) { - element.attributes.set('visibility', visibility); - } - - // Check for type reference (e.g., action : ActionType) - const actionType = this.extractActionType(ctx); - if (actionType) { - element.attributes.set('type', actionType); - } - - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitDefinition(ctx: any): void { - // definition is an intermediate grammar rule used by partDefinition, connectionDefinition, etc. - // Do NOT create an element here — the parent visitor (e.g., visitPartDefinition) already created one. - // Instead, extract specialization from definitionDeclaration → subclassificationPart - // and attach it to the current parent element. - try { - const declCtx = ctx.definitionDeclaration?.(); - if (declCtx) { - const subclassCtx = declCtx.subclassificationPart?.(); - if (subclassCtx && this.parentStack.length > 0) { - const parent = this.parentStack[this.parentStack.length - 1]; - const text = subclassCtx.getText?.() || ''; - // subclassificationPart text looks like ":>PowerSource" or ":>A,:>B" - const targets = text.split(',').map((t: string) => t.replace(/^:>\s*/, '').trim()).filter(Boolean); - for (const target of targets) { - parent.relationships.push({ - type: 'specializes', - source: parent.name, - target: target - }); - } - } - } - } catch { - // Silently continue if specialization extraction fails - } - - this.visitChildren(ctx); - } - - visitIndividualDefinition(ctx: any): void { - // Individual definition handler - creates element for "individual def Name" - const element = this.createElement('individual', ctx); - element.attributes.set('isDefinition', 'true'); - element.attributes.set('isIndividual', 'true'); - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitStateDefinition(ctx: any): void { - const element = this.createElement('state', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitStateUsage(ctx: any): void { - const element = this.createElement('state', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitTransitionUsage(ctx: any): void { - const element = this.createElement('transition', ctx); - let fromState: string | null = null; - let toState: string | null = null; - - // Grammar rule: transitionUsage - // : TRANSITION ( usageDeclaration FIRST )? featureChainMember emptyParameterMember - // ( emptyParameterMember triggerActionMember )? ( guardExpressionMember )? - // ( effectBehaviorMember )? THEN transitionSuccessionMember actionBody - // - // Source state: featureChainMember (after FIRST or after TRANSITION name FIRST) - // Target state: transitionSuccessionMember → transitionSuccession → emptyEndMember connectorEndMember - - // Extract source state from featureChainMember - try { - const featureChainCtx = ctx.featureChainMember?.(); - if (featureChainCtx) { - const chainCtx = Array.isArray(featureChainCtx) ? featureChainCtx[0] : featureChainCtx; - if (chainCtx) { - fromState = chainCtx.getText?.() || null; - } - } - } catch { - // Silently continue - } - - // Extract target state from transitionSuccessionMember - try { - const succMemberCtx = ctx.transitionSuccessionMember?.(); - if (succMemberCtx) { - const succCtx = succMemberCtx.transitionSuccession?.(); - if (succCtx) { - // transitionSuccession = emptyEndMember connectorEndMember - const connEndCtx = succCtx.connectorEndMember?.(); - if (connEndCtx) { - toState = connEndCtx.getText?.() || null; - } - } - if (!toState) { - // Fallback: get full text and clean up - toState = succMemberCtx.getText?.() || null; - } - } - } catch { - // Silently continue - } - - // Fallback: parse from raw text if grammar accessors fail - if (!fromState || !toState) { - try { - const text = ctx.getText?.() || ''; - // Pattern: transition name first SOURCE ... then TARGET ; - const match = text.match(/(?:first|FIRST)\s*([a-zA-Z_][a-zA-Z0-9_.]*)\s.*?(?:then|THEN)\s*([a-zA-Z_][a-zA-Z0-9_.]*)/); - if (match) { - if (!fromState) fromState = match[1]; - if (!toState) toState = match[2]; - } - } catch { - // Silently continue - } - } - - if (fromState) { - element.attributes.set('fromState', fromState); - } - if (toState) { - element.attributes.set('toState', toState); - } - - // Add transition to relationships for use by views that query relationships - if (fromState && toState) { - this.relationships.push({ - type: 'transition', - source: fromState, - target: toState, - name: element.name || 'transition' - }); - } - - // Extract trigger condition (if present) - try { - const triggerCtx = ctx.triggerActionMember?.(); - if (triggerCtx) { - const text = triggerCtx.getText?.() || ''; - if (text) { - element.attributes.set('trigger', text.replace(/^accept\s*/i, '').trim()); - } - } - } catch { - // Silently continue - } - - // Extract guard expression (if present) - try { - const guardCtx = ctx.guardExpressionMember?.(); - if (guardCtx) { - const text = guardCtx.getText?.() || ''; - if (text) { - element.attributes.set('guard', text.replace(/^if\s*/i, '').trim()); - } - } - } catch { - // Silently continue - } - - // Generate a descriptive name for anonymous transitions - if (element.name === 'unnamed' && fromState && toState) { - element.name = `${fromState} → ${toState}`; - } - - this.visitChildren(ctx); - } - - // Fork node: fork forkName; - visitForkNode(ctx: any): void { - const element = this.createElement('fork', ctx); - element.attributes.set('nodeType', 'fork'); - element.attributes.set('isControlNode', 'true'); - } - - // Join node: join joinName; - visitJoinNode(ctx: any): void { - const element = this.createElement('join', ctx); - element.attributes.set('nodeType', 'join'); - element.attributes.set('isControlNode', 'true'); - } - - // First statement: first source then target; - creates a control flow - visitDefaultTargetSuccession(ctx: any): void { - // Extract source (first qualifiedName) - let source: string | null = null; - let target: string | null = null; - - try { - // qualifiedName() returns an array when there are multiple - const qualifiedNames = ctx.qualifiedName?.(); - if (qualifiedNames) { - const names = Array.isArray(qualifiedNames) ? qualifiedNames : [qualifiedNames]; - if (names.length >= 1 && names[0]) { - source = typeof names[0].getText === 'function' ? names[0].getText() : String(names[0]); - } - if (names.length >= 2 && names[1]) { - target = typeof names[1].getText === 'function' ? names[1].getText() : String(names[1]); - } - } - } catch { - // Silently handle extraction errors - } - - if (source && target) { - // Create a flow relationship - this.relationships.push({ - type: 'control-flow', - source: source, - target: target - }); - } - } - - // Then statement with fork/join: then fork forkName; or then join joinName; - visitTargetSuccession(ctx: any): void { - // Check for FORK or JOIN tokens - const text = ctx.getText ? ctx.getText() : ''; - - if (text.includes('fork') || text.includes('join')) { - // Extract the identifier - try { - const identifier = ctx.identifier?.(); - if (identifier) { - const _name = typeof identifier.getText === 'function' ? identifier.getText() : String(identifier); - const nodeType = text.includes('fork') ? 'fork' : 'join'; - - // Create element for the fork/join reference in flow context - const element = this.createElement(nodeType, ctx); - element.attributes.set('nodeType', nodeType); - element.attributes.set('isControlNode', 'true'); - element.attributes.set('isFlowTarget', 'true'); - } - } catch { - // Silently handle extraction errors - } - } - - this.visitChildren(ctx); - } - - visitRequirementDefinition(ctx: any): void { - const element = this.createElement('requirement def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitRequirementUsage(ctx: any): void { - const element = this.createElement('requirement', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitUseCaseDefinition(ctx: any): void { - const element = this.createElement('use case', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitUseCaseUsage(ctx: any): void { - const element = this.createElement('use case', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - // DEAD CODE: No 'actorDefinition' rule in new grammar; actors are usages, not definitions - visitActorDefinition(ctx: any): void { - const element = this.createElement('actor def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitActorUsage(ctx: any): void { - const element = this.createElement('actor usage', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitInterfaceDefinition(ctx: any): void { - const element = this.createElement('interface', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitInterfaceUsage(ctx: any): void { - const element = this.createElement('interface', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - - // After visiting children, check if interface has connect children - // and copy their from/to to the interface element for visualization - const connectChildren = element.children.filter(c => c.type === 'connect'); - if (connectChildren.length > 0) { - const connect = connectChildren[0]; - const fromAttr = connect.attributes.get('from'); - const toAttr = connect.attributes.get('to'); - if (fromAttr && toAttr) { - element.attributes.set('from', fromAttr); - element.attributes.set('to', toAttr); - - // Generate meaningful name for anonymous interface usages - if (element.name === 'unnamed') { - element.name = `${fromAttr} ↔ ${toAttr}`; - } - } - } - - // Fallback: extract endpoints directly from ANTLR context for - // "interface connect A to B;" syntax where no connect children are created - if (element.name === 'unnamed') { - try { - const declCtx = ctx.interfaceUsageDeclaration?.(); - const partCtx = declCtx?.interfacePart?.(); - const binaryCtx = partCtx?.binaryInterfacePart?.(); - const ends = binaryCtx?.interfaceEndMember_list?.(); - if (ends && ends.length >= 2) { - const fromRef = this.extractQualifiedName(ends[0]?.interfaceEnd?.()?.ownedReferenceSubsetting?.()) || 'unknown'; - const toRef = this.extractQualifiedName(ends[1]?.interfaceEnd?.()?.ownedReferenceSubsetting?.()) || 'unknown'; - element.attributes.set('from', fromRef); - element.attributes.set('to', toRef); - element.name = `${fromRef} ↔ ${toRef}`; - } - } catch { - // Fallback: extract from raw text - const fullText = ctx.getText?.() || ''; - const match = fullText.match(/connect([a-zA-Z0-9_.:']+)to([a-zA-Z0-9_.:']+)/); - if (match) { - element.name = `${match[1]} ↔ ${match[2]}`; - } - } - } - } - - visitConstraintDefinition(ctx: any): void { - const element = this.createElement('constraint def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitConstraintUsage(ctx: any): void { - const element = this.createElement('constraint', ctx); - - // Generate a preview name for anonymous constraints - if (element.name === 'unnamed') { - try { - const text = ctx.getText?.() || ''; - // Extract constraint expression between { } - const match = text.match(/\{([^}]+)\}/); - if (match) { - let expr = match[1].trim(); - // Truncate long expressions - if (expr.length > 30) { - expr = `${expr.substring(0, 30)}...`; - } - element.name = `{${expr}}`; - } - } catch { - // Keep unnamed - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAttributeDefinition(ctx: any): void { - const element = this.createElement('attribute', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAttributeUsage(ctx: any): void { - const element = this.createElement('attribute', ctx); - - // Extract metadata prefix (e.g., #mop, #moe) - try { - const metadataPrefix = ctx.metadataPrefix?.(); - if (metadataPrefix) { - const prefixId = metadataPrefix.identifier?.(); - if (prefixId) { - element.attributes.set('metadataPrefix', prefixId.getText()); - } - } - } catch { - // Ignore errors extracting metadata prefix - } - - // Set current element so relationships can be associated with it - const prevCurrentElement = this.currentElement; - this.currentElement = element; - - this.visitChildren(ctx); - - // Restore previous current element - this.currentElement = prevCurrentElement; - } - - visitPortDefinition(ctx: any): void { - const element = this.createElement('port', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitPortUsage(ctx: any): void { - const element = this.createElement('port', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitConnectionDefinition(ctx: any): void { - const element = this.createElement('connection', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitConnectionUsage(ctx: any): void { - const element = this.createElement('connection', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - - // Try to extract inline connection syntax using grammar tree - // connectionUsage: ... CONNECT connectorPart ... which has binaryConnectorPart: connectorEndMember TO connectorEndMember - let sourceRef = ''; - let targetRef = ''; - try { - const connectorPartCtx = ctx.connectorPart?.(); - if (connectorPartCtx) { - const binaryCtx = connectorPartCtx.binaryConnectorPart?.(); - if (binaryCtx) { - // Use _list accessor for repeated rule elements - const endMembers = binaryCtx.connectorEndMember_list?.() || binaryCtx.connectorEndMember?.(); - if (Array.isArray(endMembers) && endMembers.length >= 2) { - sourceRef = endMembers[0].getText?.() || ''; - targetRef = endMembers[1].getText?.() || ''; - if (sourceRef && targetRef) { - element.attributes.set('from', sourceRef); - element.attributes.set('to', targetRef); - this.relationships.push({ - type: 'connection', - source: sourceRef, - target: targetRef, - name: element.name || 'connect' - }); - } - } - } - } - } catch { - // Silently continue on extraction errors - } - - // Fallback: try regex on raw text - if (!element.attributes.has('from')) { - const fullText = ctx.getText?.() || ''; - const inlineConnectMatch = fullText.match(/connect\s*(?:\[[^\]]*\])?\s*([a-zA-Z0-9_.]+)\s*to\s*(?:\[[^\]]*\])?\s*([a-zA-Z0-9_.]+)/i); - if (inlineConnectMatch) { - sourceRef = inlineConnectMatch[1]; - targetRef = inlineConnectMatch[2]; - element.attributes.set('from', sourceRef); - element.attributes.set('to', targetRef); - this.relationships.push({ - type: 'connection', - source: sourceRef, - target: targetRef, - name: element.name || 'connect' - }); - } - } - - // Generate meaningful name for anonymous connections - if (element.name === 'unnamed' && element.attributes.has('from') && element.attributes.has('to')) { - const from = element.attributes.get('from') as string; - const to = element.attributes.get('to') as string; - element.name = `${from} → ${to}`; - } - - // After visiting children (which populates 'end' elements), extract endpoints - // and create a relationship for the IBD view - const ends = element.children.filter(c => c.type === 'end'); - - if (ends.length >= 2) { - // Get targetRef from each end's attributes - const getRef = (end: SysMLElement): string => { - const attrs = end.attributes; - if (attrs instanceof Map) { - const ref = attrs.get('targetRef') || attrs.get('references'); - return typeof ref === 'string' ? ref : end.name; - } else if (typeof attrs === 'object' && attrs !== null) { - const record = attrs as Record; - const ref = record['targetRef'] || record['references']; - return typeof ref === 'string' ? ref : end.name; - } - return end.name; - }; - - const sourceRef = getRef(ends[0]); - const targetRef = getRef(ends[1]); - - if (sourceRef && targetRef) { - this.relationships.push({ - type: 'connection', - source: sourceRef, - target: targetRef, - name: element.name || 'connect' - }); - - // Also name the connection from its end endpoints if still unnamed - // This handles derivation connections: #derivation connection { end X; end Y; } - if (element.name === 'unnamed') { - element.name = `${sourceRef} → ${targetRef}`; - } - } - } - } - - visitConnectorEndMember(ctx: any): void { - // Only create 'end' elements when inside a connection (not transitions/successions) - // connectorEndMember is used in both connections and transition successions, - // but we only want explicit 'end' elements for connections. - const isInConnection = this.parentStack.some(p => p.type === 'connection'); - if (!isInConnection) { - // Don't create end elements for transitions or other non-connection contexts - return; - } - - // Parse end features for connection endpoints: end name : qualified.reference; - const attributes = new Map(); - - // Get the typing (e.g., : drone.telemetry) which contains the target reference - if (typeof ctx.typing === 'function') { - try { - const typingCtx = ctx.typing(); - if (typingCtx) { - // The typing is in format ":qualifiedName" - get text and remove leading colon - const text = typingCtx.getText?.() || typingCtx.text || ''; - if (text) { - const reference = text.replace(/^:/, '').trim(); - attributes.set('targetRef', reference); - attributes.set('references', reference); - } - } - } catch { - // typing() can throw if node doesn't exist - } - } - - // Also try ownedReferenceSubsetting for ::> syntax (derivation connections) - // Grammar: connectorEnd: (name (::>|references))? ownedReferenceSubsetting - if (!attributes.has('targetRef')) { - try { - // Get the connectorEnd child first - const connectorEndCtx = ctx.connectorEnd?.() || ctx; - - // Try getting ownedReferenceSubsetting - const refSubsettingCtx = connectorEndCtx.ownedReferenceSubsetting?.(); - if (refSubsettingCtx) { - const text = refSubsettingCtx.getText?.() || ''; - if (text) { - // Clean up - remove any leading punctuation - const reference = text.replace(/^[:.>]+/, '').trim(); - attributes.set('targetRef', reference); - attributes.set('references', reference); - } - } - - // Fallback: try just getting the whole text and extracting the reference - if (!attributes.has('targetRef')) { - const fullText = ctx.getText?.() || ''; - // Pattern: end #name ::> some.reference - const match = fullText.match(/::>\s*([a-zA-Z0-9_.\[\]]+)/); - if (match) { - attributes.set('targetRef', match[1]); - attributes.set('references', match[1]); - } - } - } catch { - // Silently continue - } - } - - const element = this.createElement('end', ctx, attributes); - - // Give the end element a meaningful name from its targetRef - const targetRef = attributes.get('targetRef') as string; - if (element.name === 'unnamed' && targetRef) { - element.name = `end: ${targetRef}`; - } - } - - visitEndFeatureUsage(ctx: any): void { - // Handle explicit 'end' declarations in connection/flow/interface bodies - // Syntax: end #name ::> qualified.reference; - // This is used for derivation connections and similar block-style connections - const isInConnection = this.parentStack.some(p => p.type === 'connection'); - - if (!isInConnection) { - // Not inside a connection, just visit children normally - this.visitChildren(ctx); - return; - } - - const attributes = new Map(); - - // Try to extract the target reference from the full text - // Pattern: end #name ::> qualified.reference - const fullText = ctx.getText?.() || ''; - - // Try ::> pattern first (ownedReferenceSubsetting) - let match = fullText.match(/::>\s*([a-zA-Z0-9_.\[\]]+)/); - if (match) { - attributes.set('targetRef', match[1]); - attributes.set('references', match[1]); - } - - // Also try :> pattern (ownedSubsetting) - if (!attributes.has('targetRef')) { - match = fullText.match(/:>\s*([a-zA-Z0-9_.\[\]]+)/); - if (match) { - attributes.set('targetRef', match[1]); - attributes.set('references', match[1]); - } - } - - // Also try : pattern (typing) - if (!attributes.has('targetRef')) { - match = fullText.match(/:\s*([a-zA-Z0-9_.\[\]]+)/); - if (match) { - attributes.set('targetRef', match[1]); - attributes.set('references', match[1]); - } - } - - const element = this.createElement('end', ctx, attributes); - - // Give the end element a meaningful name from its targetRef - const targetRef = attributes.get('targetRef') as string; - if (element.name === 'unnamed' && targetRef) { - element.name = `end: ${targetRef}`; - } - } - - visitExtendedUsage(ctx: any): void { - // Handle 'end' statements that are parsed as ExtendedUsage - // Grammar structure: ExtendedUsageContext has children: - // [0] UnextendedUsagePrefixContext with text "end" - // [1] UsageExtensionKeywordContext with text "#name" - // [2] UsageContext with "::>..." or other subsetting - - const children = ctx.children || []; - if (children.length === 0) { - this.visitChildren(ctx); - return; - } - - // Check if first child is an 'end' prefix - const firstChild = children[0]; - const prefixText = firstChild?.getText?.() || ''; - - if (prefixText.toLowerCase() !== 'end') { - // Not an 'end' statement, just visit children - this.visitChildren(ctx); - return; - } - - // This is an 'end' statement - check if we're inside a connection - const isInConnection = this.parentStack.some(p => p.type === 'connection'); - if (!isInConnection) { - this.visitChildren(ctx); - return; - } - - const attributes = new Map(); - - // Get name from UsageExtensionKeywordContext (second child, e.g., "#original") - if (children.length > 1) { - const nameChild = children[1]; - const nameText = nameChild?.getText?.() || ''; - // Remove leading # if present - if (nameText.startsWith('#')) { - attributes.set('shortname', nameText.substring(1)); - } else if (nameText) { - attributes.set('shortname', nameText); - } - } - - // Get targetRef from the full text (::> or :> pattern) - const fullText = ctx.getText?.() || ''; - let match = fullText.match(/::>\s*([a-zA-Z0-9_.\[\]]+)/); - if (match) { - attributes.set('targetRef', match[1]); - attributes.set('references', match[1]); - } else { - match = fullText.match(/:>\s*([a-zA-Z0-9_.\[\]]+)/); - if (match) { - attributes.set('targetRef', match[1]); - attributes.set('references', match[1]); - } - } - - const element = this.createElement('end', ctx, attributes); - - // Give the end element a name from shortname or targetRef - const shortname = attributes.get('shortname') as string; - const targetRef = attributes.get('targetRef') as string; - if (element.name === 'unnamed') { - if (shortname) { - element.name = `end #${shortname}`; - } else if (targetRef) { - element.name = `end: ${targetRef}`; - } - } - } - - visitOwnedRedefinition(ctx: any): void { - // Parse redefinition usage: :>> name { ... } or :>> name = value; - // This is shorthand for 'redefines' - redefining a feature from supertype - const attributes = new Map(); - attributes.set('isRedefinition', 'true'); - - // Get the identifier name - let _name = 'unknown'; - if (ctx.identifier && typeof ctx.identifier === 'function') { - try { - const idCtx = ctx.identifier(); - if (idCtx && typeof idCtx.getText === 'function') { - _name = idCtx.getText(); - } - } catch { - // identifier() can throw if node doesn't exist - } - } - - // If there's a value expression (e.g., :>> voltage = 48.0) - if (ctx.expression && typeof ctx.expression === 'function') { - try { - const exprCtx = ctx.expression(); - if (exprCtx && typeof exprCtx.getText === 'function') { - const value = exprCtx.getText(); - attributes.set('value', value); - } - } catch { - // expression() can throw if node doesn't exist - } - } - - const element = this.createElement('redefinition', ctx, attributes); - - // If there's a body, process its children - if (ctx.body && typeof ctx.body === 'function') { - const bodyCtx = ctx.body(); - if (bodyCtx) { - this.parentStack.push(element); - this.visit(bodyCtx); - this.parentStack.pop(); - } - } - } - - visitFlowUsage(ctx: any): void { - // Parse flow property: flow property name : Type direction in/out/inout; - const attributes = new Map(); - attributes.set('isFlowProperty', 'true'); - - // Get direction if present - if (ctx.direction && typeof ctx.direction === 'function') { - try { - const dirCtx = ctx.direction(); - if (dirCtx && typeof dirCtx.getText === 'function') { - attributes.set('direction', dirCtx.getText()); - } - } catch { - // direction() can throw if node doesn't exist - } - } - - const element = this.createElement('flowProperty', ctx, attributes); - - // Generate meaningful name for anonymous flows - if (element.name === 'unnamed') { - const fullText = ctx.getText?.() || ''; - // Match patterns like: flow source to target or flow of Type from source to target - const flowMatch = fullText.match(/flow\s+(?:of\s+\w+\s+)?(?:from\s+)?([a-zA-Z0-9_.]+)\s+to\s+([a-zA-Z0-9_.]+)/i); - if (flowMatch) { - element.name = `${flowMatch[1]} → ${flowMatch[2]}`; - element.attributes.set('from', flowMatch[1]); - element.attributes.set('to', flowMatch[2]); - } else { - // Fallback: extract "flow of Type" (no from/to) from ANTLR context - try { - const declCtx = ctx.flowDeclaration?.(); - if (declCtx) { - // Navigate: flowDeclaration → flowPayloadFeatureMember → ... → ownedFeatureTyping → qualifiedName - const payloadMember = declCtx.flowPayloadFeatureMember?.(); - const payloadFeature = payloadMember?.flowPayloadFeature?.()?.payloadFeature?.(); - const typingCtx = payloadFeature?.ownedFeatureTyping?.(); - const qnText = typingCtx?.getText?.(); - if (qnText) { - element.name = `flow of ${qnText}`; - element.attributes.set('flowType', qnText); - } - } - } catch { - // Ignore ANTLR extraction errors - } - } - // Final regex fallback on getText() which strips whitespace - if (element.name === 'unnamed') { - const ofMatch = fullText.match(/^flowof([a-zA-Z0-9_.:' -]+)/i); - if (ofMatch) { - element.name = `flow of ${ofMatch[1]}`; - } - } - } - } - - visitFlowDefinition(ctx: any): void { - const element = this.createElement('flow def', ctx); - element.attributes.set('isDefinition', 'true'); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitInteraction(ctx: any): void { - const element = this.createElement('interaction', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - // DEAD CODE: No 'interactionUsage' rule in new grammar - visitInteractionUsage(ctx: any): void { - this.createElement('interaction', ctx); - this.visitChildren(ctx); - } - - // DEAD CODE: No 'participant' rule in new grammar; participants are modeled as usages - visitParticipant(ctx: any): void { - this.createElement('participant', ctx); - this.visitChildren(ctx); - } - - visitMessage(ctx: any): void { - const attributes = new Map(); - - // Extract message details - if (ctx.from && typeof ctx.from === 'function') { - try { - const fromCtx = ctx.from(); - if (fromCtx && typeof fromCtx.getText === 'function') { - attributes.set('from', fromCtx.getText()); - } - } catch { - // from() can throw if node doesn't exist - } - } - if (ctx.to && typeof ctx.to === 'function') { - try { - const toCtx = ctx.to(); - if (toCtx && typeof toCtx.getText === 'function') { - attributes.set('to', toCtx.getText()); - } - } catch { - // to() can throw if node doesn't exist - } - } - - this.createElement('message', ctx, attributes); - this.visitChildren(ctx); - } - - // Note: visitCommentElement removed - merged into visitComment below - - visitComment(ctx: any): void { - // Extract comment text to use as a meaningful name - const commentText = this.extractCommentText(ctx); - const attributes = new Map(); - if (commentText) { - attributes.set('text', commentText); - } - - // Create element with custom name extraction for comments - const name = this.getCommentName(ctx, commentText); - const range = this.getRange(ctx); - - const element: SysMLElement = { - type: 'comment', - name, - range, - children: [], - attributes, - relationships: [] - }; - - // Add to parent or root (same pattern as createElement) - if (this.parentStack.length > 0) { - this.parentStack[this.parentStack.length - 1].children.push(element); - } else { - this.elements.set(name || `comment_${range.start.line}`, element); - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - /** - * Extract the comment text from a comment context. - */ - private extractCommentText(ctx: any): string { - try { - // Look for REGULAR_COMMENT token - if (ctx.REGULAR_COMMENT && typeof ctx.REGULAR_COMMENT === 'function') { - const commentToken = ctx.REGULAR_COMMENT(); - if (commentToken?.text) { - let text = commentToken.text; - // Remove /* and */ markers - text = text.replace(/^\/\*+/, '').replace(/\*+\/$/, ''); - // Clean up leading * on each line and whitespace - text = text.split('\n') - .map((line: string) => line.replace(/^\s*\*\s?/, '').trim()) - .filter((line: string) => line.length > 0) - .join(' ') - .replace(/\s+/g, ' ') - .trim(); - return text; - } - } - - // Fallback: try to get text from the whole context - const fullText = ctx.getText?.() || ''; - const blockMatch = fullText.match(/\/\*[\s\S]*?\*\//); - if (blockMatch) { - let text = blockMatch[0]; - text = text.replace(/^\/\*+/, '').replace(/\*+\/$/, ''); - text = text.split('\n') - .map((line: string) => line.replace(/^\s*\*\s?/, '').trim()) - .filter((line: string) => line.length > 0) - .join(' ') - .replace(/\s+/g, ' ') - .trim(); - return text; - } - } catch { - // Ignore errors in comment extraction - } - return ''; - } - - /** - * Get a meaningful name for a comment element. - * Tries to use the identifier if present, otherwise creates a preview from the comment text. - */ - private getCommentName(ctx: any, commentText: string): string { - // First try to get an explicit identifier - const explicitName = this.getElementName(ctx); - if (explicitName && explicitName !== 'unnamed') { - return explicitName; - } - - // Use a truncated version of the comment text as the name - if (commentText) { - const maxLength = 40; - if (commentText.length <= maxLength) { - return commentText; - } - // Truncate at word boundary - const truncated = commentText.substring(0, maxLength); - const lastSpace = truncated.lastIndexOf(' '); - if (lastSpace > maxLength * 0.6) { - return `${truncated.substring(0, lastSpace)}...`; - } - return `${truncated}...`; - } - - return '(comment)'; - } - - // Note: visitDocElement removed - merged into visitDocumentation below - - visitDocumentation(ctx: any): void { - // Instead of creating a separate 'doc' element, propagate doc content to parent - this.extractDocContentToParent(ctx); - this.visitChildren(ctx); - } - - /** - * Extract documentation content and set it on the parent element. - * This handles block comments which are on the HIDDEN channel. - */ - private extractDocContentToParent(ctx: any): void { - try { - if (!ctx || !ctx.start || !ctx.stop) { - return; - } - - // Get the parent element from the stack - if (this.parentStack.length === 0) { - return; - } - const parentElement = this.parentStack[this.parentStack.length - 1]; - - // Get the range of the doc element - const startLine = ctx.start.line - 1; - const endLine = ctx.stop.line - 1; - - // Read the text from the document including a few extra lines - // to capture multi-line comments that might follow - const textRange = new vscode.Range(startLine, 0, Math.min(endLine + 10, this._document.lineCount - 1), 1000); - const text = this._document.getText(textRange); - - // Look for /* ... */ block comment pattern - const blockCommentMatch = text.match(/\/\*[\s\S]*?\*\//); - if (blockCommentMatch) { - let docContent = blockCommentMatch[0]; - // Remove /* and */ markers - docContent = docContent.replace(/^\/\*/, '').replace(/\*\/$/, ''); - // Clean up leading * characters on each line (common doc format) - docContent = docContent.split('\n') - .map(line => line.replace(/^\s*\*\s?/, '').trim()) - .join(' ') - .replace(/\s+/g, ' ') - .trim(); - - if (docContent) { - parentElement.attributes.set('doc', docContent); - } - } - - // Also check for stringValue in the grammar (quoted string) - if (ctx.stringValue && typeof ctx.stringValue === 'function') { - const stringCtx = ctx.stringValue(); - if (stringCtx) { - const stringText = stringCtx.getText?.() || ''; - // Remove quotes - const unquoted = stringText.replace(/^["']|["']$/g, ''); - if (unquoted) { - parentElement.attributes.set('doc', unquoted); - } - } - } - } catch { - // Silently ignore doc extraction errors - } - } - - // Note: visitCalculation removed - duplicate of visitCalculationDefinition - - visitEnumerationDefinition(ctx: any): void { - const element = this.createElement('enumeration def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitEnumerationUsage(ctx: any): void { - const element = this.createElement('enumeration', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitItemDefinition(ctx: any): void { - const element = this.createElement('item def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitItemUsage(ctx: any): void { - const element = this.createElement('item', ctx); - - // If unnamed, try to extract value binding (e.g., "in item = providePower.fuelCmd;") - if (element.name === 'unnamed') { - const fullText = ctx.getText?.() || ''; - const valueMatch = fullText.match(/=\s*([a-zA-Z_][a-zA-Z0-9_.]*)/); - if (valueMatch) { - element.name = `item = ${valueMatch[1]}`; - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitCalculationDefinition(ctx: any): void { - const element = this.createElement('calc def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitCalculationUsage(ctx: any): void { - const element = this.createElement('calc', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAnalysisCaseDefinition(ctx: any): void { - const element = this.createElement('analysis def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAnalysisCaseUsage(ctx: any): void { - const element = this.createElement('analysis', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAllocationDefinition(ctx: any): void { - const element = this.createElement('allocation def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAllocationUsage(ctx: any): void { - const element = this.createElement('allocation', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - - // Try to extract allocation endpoints from grammar - // allocation: allocate qualifiedName to qualifiedName; - let qualifiedNames; - try { - qualifiedNames = ctx.qualifiedName ? ctx.qualifiedName() : []; - } catch { - qualifiedNames = []; - } - const qnArray = Array.isArray(qualifiedNames) ? qualifiedNames : (qualifiedNames ? [qualifiedNames] : []); - - if (qnArray.length >= 2) { - const source = qnArray[0] && typeof qnArray[0].getText === 'function' ? qnArray[0].getText() : ''; - const target = qnArray[1] && typeof qnArray[1].getText === 'function' ? qnArray[1].getText() : ''; - - if (source && target) { - element.attributes.set('from', source); - element.attributes.set('to', target); - - // Generate meaningful name for anonymous allocations - if (element.name === 'unnamed') { - element.name = `${source} → ${target}`; - } - } - } - - // Fallback: try to extract from raw text - if (element.name === 'unnamed') { - const fullText = ctx.getText?.() || ''; - // Match patterns like: allocate source to target - const allocateMatch = fullText.match(/allocate\s+([a-zA-Z0-9_.:]+)\s+to\s+([a-zA-Z0-9_.:]+)/i); - if (allocateMatch) { - const source = allocateMatch[1]; - const target = allocateMatch[2]; - element.attributes.set('from', source); - element.attributes.set('to', target); - element.name = `${source} → ${target}`; - } - } - } - - visitMetadataDefinition(ctx: any): void { - const element = this.createElement('metadata def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitMetadataUsage(ctx: any): void { - const element = this.createElement('metadata', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitSubjectUsage(ctx: any): void { - const element = this.createElement('subject', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitRequirementConstraintMember(ctx: any): void { - // Handle: require qualifiedName; or require constraint name; - const fullText = ctx.getText?.() || ''; - const isConstraint = fullText.toLowerCase().includes('constraint'); - - if (isConstraint) { - // Create a require constraint element - const element = this.createElement('require constraint', ctx); - - // Generate meaningful name for anonymous require constraints - if (element.name === 'unnamed') { - // Try to extract the constraint expression - const exprMatch = fullText.match(/\{([^}]*)\}/); - if (exprMatch) { - const expr = exprMatch[1].trim(); - const preview = expr.length > 25 ? `${expr.substring(0, 25)}...` : expr; - element.name = `{${preview}}`; - } else { - // Try to get referenced constraint name (getText() strips whitespace) - const refMatch = fullText.match(/^requireconstraint([a-zA-Z_][a-zA-Z0-9_]*)/i); - if (refMatch) { - element.name = `require: ${refMatch[1]}`; - } - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } else { - // Create a require reference element - const element = this.createElement('require', ctx); - - // Generate meaningful name for anonymous require references - // Note: getText() strips whitespace, so don't require \s+ between 'require' and name - if (element.name === 'unnamed') { - // Try ANTLR context first: requirementConstraintUsage → ownedReferenceSubsetting → qualifiedName - try { - const usageCtx = ctx.requirementConstraintUsage?.(); - const refSubCtx = usageCtx?.ownedReferenceSubsetting?.(); - const qnText = this.extractQualifiedName(refSubCtx); - if (qnText) { - element.name = `require: ${qnText}`; - } - } catch { - // ANTLR extraction failed, will fall back to regex below - } - } - // Fallback: regex on getText() — handles both unquoted and quoted names - if (element.name === 'unnamed') { - const refMatch = fullText.match(/^require([a-zA-Z_'][a-zA-Z0-9_.:' -]*)/i); - if (refMatch) { - element.name = `require: ${refMatch[1]}`; - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - } - - visitObjectiveRequirementUsage(ctx: any): void { - const element = this.createElement('objective', ctx); - - // If still unnamed, try to extract type reference (e.g., "objective : MaximizeObjective;") - if (element.name === '(anonymous objective)' || element.name === 'unnamed') { - const fullText = ctx.getText?.() || ''; - const typeMatch = fullText.match(/objective\s*:\s*([A-Za-z_][A-Za-z0-9_.]*)/); - if (typeMatch) { - element.name = `objective: ${typeMatch[1]}`; - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - - // After visiting children, if still anonymous and has verify children, name from them - if ((element.name === '(anonymous objective)' || element.name === 'unnamed') && element.children.length > 0) { - const verifyChild = element.children.find(c => c.type === 'verify'); - if (verifyChild && verifyChild.name !== 'unnamed') { - element.name = `objective`; - } - } - } - - visitStakeholderUsage(ctx: any): void { - const element = this.createElement('stakeholder', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - // DEAD CODE: No 'allocateStatement' rule in new grammar; use visitAllocationUsage instead - visitAllocateStatement(ctx: any): void { - const element = this.createElement('allocate', ctx); - // Extract from and to qualified names if available - let qualifiedNames; - try { - qualifiedNames = ctx.qualifiedName ? ctx.qualifiedName() : []; - } catch { - qualifiedNames = []; - } - const qnArray = Array.isArray(qualifiedNames) ? qualifiedNames : (qualifiedNames ? [qualifiedNames] : []); - if (qnArray.length >= 2) { - if (qnArray[0] && typeof qnArray[0].getText === 'function') { - element.attributes.set('from', qnArray[0].getText()); - } - if (qnArray[1] && typeof qnArray[1].getText === 'function') { - element.attributes.set('to', qnArray[1].getText()); - } - } - // Push element to stack so nested allocates become children - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - // Bind usage: bind sourceRef = targetRef; - visitBindingConnectorAsUsage(ctx: any): void { - const element = this.createElement('bind', ctx); - - // Extract bind endpoints from ConnectorEndMember children - // Grammar: bind connectorEndMember = connectorEndMember ; - let source = ''; - let target = ''; - try { - const endMembers = ctx.connectorEndMember_list ? ctx.connectorEndMember_list() : []; - const endArray = Array.isArray(endMembers) ? endMembers : (endMembers ? [endMembers] : []); - if (endArray.length >= 2) { - source = endArray[0]?.getText?.() || ''; - target = endArray[1]?.getText?.() || ''; - } - } catch { - // Fall through to text-based extraction - } - - // Fallback: extract from full text - if (!source || !target) { - const fullText = ctx.getText?.() || ''; - const match = fullText.match(/bind\s*(.+?)\s*=\s*(.+?)\s*;/); - if (match) { - source = match[1].trim(); - target = match[2].trim(); - } - } - - if (source && target) { - element.attributes.set('from', source); - element.attributes.set('to', target); - - this.relationships.push({ - type: 'bind', - source: source, - target: target, - name: element.name || 'bind' - }); - - if (element.name === 'unnamed') { - element.name = `${source} = ${target}`; - } - } - - this.visitChildren(ctx); - } - - // Connect statement (inline): connect sourceRef to targetRef; - visitConnector(ctx: any): void { - const element = this.createElement('connect', ctx); - - // Get qualified names: connect qn1 to qn2; - let qualifiedNames; - try { - qualifiedNames = ctx.qualifiedName ? ctx.qualifiedName() : []; - } catch { - qualifiedNames = []; - } - const qnArray = Array.isArray(qualifiedNames) ? qualifiedNames : (qualifiedNames ? [qualifiedNames] : []); - - if (qnArray.length >= 2) { - // Use .text property (not getText() method) for QualifiedNameContext - const source = qnArray[0]?.text || ''; - const target = qnArray[1]?.text || ''; - - if (source && target) { - element.attributes.set('from', source); - element.attributes.set('to', target); - - // Also add as a relationship for visualization - this.relationships.push({ - type: 'connection', - source: source, - target: target, - name: element.name || 'connect' - }); - - // Generate meaningful name for anonymous connectors - if (element.name === 'unnamed') { - element.name = `${source} → ${target}`; - } - } - } - this.visitChildren(ctx); - } - - // Behavioral Constructs - visitPerformActionUsage(ctx: any): void { - const element = this.createElement('perform', ctx); - let actionName: string | undefined; - try { - const qualifiedName = ctx.qualifiedName ? ctx.qualifiedName() : null; - if (qualifiedName) { - const qn = Array.isArray(qualifiedName) ? qualifiedName[0] : qualifiedName; - if (qn && typeof qn.getText === 'function') { - const name = qn.getText(); - actionName = name; - element.attributes.set('action', name); - } - } - } catch { - // qualifiedName might not exist - that's ok - } - - // Fallback: try ANTLR context tree for action name - if (!actionName) { - try { - const declCtx = ctx.performActionUsageDeclaration?.(); - const refSubCtx = declCtx?.ownedReferenceSubsetting?.(); - const qnText = this.extractQualifiedName(refSubCtx); - if (qnText) { - actionName = qnText; - element.attributes.set('action', qnText); - } - } catch { - // Ignore errors - } - } - - // Fallback: try to get action name from full text if qualifiedName failed - if (!actionName) { - const fullText = ctx.getText?.() || ''; - // Pattern: perform actionName — handles both unquoted and quoted names - const match = fullText.match(/^perform([a-zA-Z_'][a-zA-Z0-9_.:' -]*)/i); - if (match && match[1]) { - const extractedName = match[1]; - actionName = extractedName; - element.attributes.set('action', extractedName); - } - } - - // Generate meaningful name for anonymous perform usages - if (element.name === 'unnamed' && actionName) { - element.name = `perform: ${actionName}`; - } - - // Check if this perform action has a body (inline action definition) - // The grammar now supports: PERFORM ACTION? qualifiedName multiplicity? specialization? (body | ';')? - let hasBody = false; - try { - // Check if there's a body context (from the grammar's body rule) - if (ctx.body && typeof ctx.body === 'function') { - const bodyCtx = ctx.body(); - hasBody = bodyCtx !== null && bodyCtx !== undefined; - } - } catch { - // Ignore errors in body detection - } - - if (hasBody) { - // Mark as having inline action body - useful for activity diagram extraction - element.attributes.set('hasBody', 'true'); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } else { - this.visitChildren(ctx); - } - } - - visitExhibitStateUsage(ctx: any): void { - const element = this.createElement('exhibit state', ctx); - let stateName: string | undefined; - try { - const qualifiedName = ctx.qualifiedName ? ctx.qualifiedName() : null; - if (qualifiedName) { - const qn = Array.isArray(qualifiedName) ? qualifiedName[0] : qualifiedName; - if (qn && typeof qn.getText === 'function') { - const name = qn.getText(); - stateName = name; - element.attributes.set('state', name); - } - } - const parallelToken = ctx.PARALLEL ? ctx.PARALLEL() : null; - if (parallelToken) { - element.attributes.set('parallel', 'true'); - } - } catch { - // qualifiedName or PARALLEL might not exist - that's ok - } - - // Generate meaningful name for anonymous exhibit state usages - if (element.name === 'unnamed' && stateName) { - element.name = `exhibit: ${stateName}`; - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - /** - * Extracts the action reference name from a stateActionUsage child. - * Grammar: (entry|do|exit) stateActionUsage - * stateActionUsage contains StatePerformActionUsageContext with action name text. - */ - private extractStateActionName(ctx: any): string | undefined { - try { - const stateAction = ctx.stateActionUsage?.(); - if (stateAction) { - const rawText = stateAction.getText?.() || ''; - // Strip trailing semicolons and braces, extract just the action name - const cleaned = rawText.replace(/[;{}].*$/, '').replace(/^action\s*/, '').trim(); - if (cleaned && /^[a-zA-Z_]/.test(cleaned)) { - return cleaned; - } - } - } catch { - // stateActionUsage may not exist - } - // Fallback: extract from full text - const fullText = ctx.getText?.() || ''; - // Match: entry/do/exit followed by optional 'action' then name - const match = fullText.match(/^(?:entry|do|exit)(?:action)?\s*([a-zA-Z_][a-zA-Z0-9_]*)/); - return match?.[1]; - } - - visitEntryActionMember(ctx: any): void { - const element = this.createElement('entry', ctx); - - if (element.name === 'unnamed') { - const actionName = this.extractStateActionName(ctx); - if (actionName) { - element.attributes.set('action', actionName); - element.name = `entry: ${actionName}`; - } - } - - this.visitChildren(ctx); - } - - visitExitActionMember(ctx: any): void { - const element = this.createElement('exit', ctx); - - if (element.name === 'unnamed') { - const actionName = this.extractStateActionName(ctx); - if (actionName) { - element.attributes.set('action', actionName); - element.name = `exit: ${actionName}`; - } - } - - this.visitChildren(ctx); - } - - visitDoActionMember(ctx: any): void { - const element = this.createElement('do', ctx); - - if (element.name === 'unnamed') { - const actionName = this.extractStateActionName(ctx); - if (actionName) { - element.attributes.set('action', actionName); - element.name = `do: ${actionName}`; - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitAcceptNode(ctx: any): void { - const element = this.createElement('accept', ctx); - - // qualifiedName() is a method that returns an array or single context - if (ctx.qualifiedName && typeof ctx.qualifiedName === 'function') { - let qualifiedNames; - try { - qualifiedNames = ctx.qualifiedName(); // Returns array - } catch { - // qualifiedName() can throw if node doesn't exist - this.visitChildren(ctx); - return; - } - const qnArray = Array.isArray(qualifiedNames) ? qualifiedNames : (qualifiedNames ? [qualifiedNames] : []); - - // Pattern: accept eventName:EventType via portName - // or: accept eventName - if (qnArray.length >= 1 && qnArray[0] && typeof qnArray[0].getText === 'function') { - const firstQName = qnArray[0].getText(); - // Check for type annotation (e.g., "eventName:EventType") - if (firstQName.includes(':')) { - const [name, type] = firstQName.split(':'); - element.attributes.set('event', name.trim()); - element.attributes.set('type', type.trim()); - } else { - element.attributes.set('event', firstQName); - } - } - // Pattern: accept via portName (second qualifiedName) - if (qnArray.length >= 2 && qnArray[1] && typeof qnArray[1].getText === 'function') { - element.attributes.set('via', qnArray[1].getText()); - } - } - - // Pattern: accept at/when expression - if (ctx.expression && typeof ctx.expression === 'function') { - const expression = ctx.expression(); - if (expression && typeof expression.getText === 'function') { - element.attributes.set('condition', expression.getText()); - } - } - - this.visitChildren(ctx); - } - - visitSendNode(ctx: any): void { - const element = this.createElement('send', ctx); - - // Safely get expression - if (ctx.expression && typeof ctx.expression === 'function') { - try { - const expression = ctx.expression(); - if (expression && typeof expression.getText === 'function') { - element.attributes.set('message', expression.getText()); - } - } catch { - // expression() can throw if node doesn't exist - } - } - - // Safely get qualifiedName - must wrap in try-catch because the generated - // grammar code throws "The specified node does not exist" when the child isn't present - if (ctx.qualifiedName && typeof ctx.qualifiedName === 'function') { - try { - const qualifiedName = ctx.qualifiedName(); - if (qualifiedName && typeof qualifiedName.getText === 'function') { - element.attributes.set('to', qualifiedName.getText()); - } - } catch { - // qualifiedName() can throw if node doesn't exist - } - } - - this.visitChildren(ctx); - } - - visitOccurrenceDefinition(ctx: any): void { - const element = this.createElement('occurrence def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitOccurrenceUsage(ctx: any): void { - const element = this.createElement('occurrence', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitVerificationCaseDefinition(ctx: any): void { - const element = this.createElement('verification def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitVerificationCaseUsage(ctx: any): void { - const element = this.createElement('verification', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitRequirementVerificationMember(ctx: any): void { - // Handle: verify requirementRef { ... } - const fullText = ctx.getText?.() || ''; - - const element = this.createElement('verify', ctx); - - // Generate meaningful name for verify statements (getText() strips whitespace) - if (element.name === 'unnamed') { - // Pattern: verifyreferenceName{ or verifyreferenceName; - const match = fullText.match(/^verify([a-zA-Z_][a-zA-Z0-9_.]*)/i); - if (match) { - element.name = `verify: ${match[1]}`; - } - } - - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitViewDefinition(ctx: any): void { - const element = this.createElement('view def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitViewUsage(ctx: any): void { - const element = this.createElement('view', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitViewpointDefinition(ctx: any): void { - const element = this.createElement('viewpoint def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitViewpointUsage(ctx: any): void { - const element = this.createElement('viewpoint', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitRenderingDefinition(ctx: any): void { - const element = this.createElement('rendering def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitRenderingUsage(ctx: any): void { - const element = this.createElement('rendering', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitConcernDefinition(ctx: any): void { - const element = this.createElement('concern def', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - visitConcernUsage(ctx: any): void { - const element = this.createElement('concern', ctx); - this.parentStack.push(element); - this.visitChildren(ctx); - this.parentStack.pop(); - } - - // Relationship handling - visitSpecialization(ctx: any): void { - // Only process if we have a current element to add relationships to - if (!this.currentElement) { - this.visitChildren(ctx); - return; - } - - // Get all qualified names (targets) - safely handle missing method - if (!ctx.qualifiedName || typeof ctx.qualifiedName !== 'function') { - this.visitChildren(ctx); - return; - } - - let qualifiedNames; - try { - qualifiedNames = ctx.qualifiedName(); - } catch { - this.visitChildren(ctx); - return; - } - - const qnArray = Array.isArray(qualifiedNames) ? qualifiedNames : (qualifiedNames ? [qualifiedNames] : []); - if (qnArray.length === 0) { - this.visitChildren(ctx); - return; - } - - // Determine relationship type based on tokens present - let relationshipType = 'specializes'; // default - if (ctx.COLONGT()) { - relationshipType = 'specializes'; - } else if (ctx.SPECIALIZES()) { - relationshipType = 'specializes'; - } else if (ctx.SUBSETS()) { - relationshipType = 'subsets'; - } else if (ctx.REDEFINES()) { - relationshipType = 'redefines'; - } else if (ctx.REFERENCES()) { - relationshipType = 'references'; - } else if (ctx.BINDS()) { - relationshipType = 'binds'; - } - - // Add relationships to current element for each target - for (const qualifiedName of qnArray) { - if (!qualifiedName || !qualifiedName.identifier || typeof qualifiedName.identifier !== 'function') { - continue; - } - let identifiers; - try { - identifiers = qualifiedName.identifier(); - } catch { - continue; - } - const idArray = Array.isArray(identifiers) ? identifiers : (identifiers ? [identifiers] : []); - if (idArray.length > 0) { - const target = idArray.map((identifier: any) => { - return identifier.text; - }).filter((name: string) => name).join('::'); - - if (target) { - const relationship = { - type: relationshipType, - source: this.currentElement.name, - target: target - }; - // Add to both element and global relationships - this.currentElement.relationships.push(relationship); - this.relationships.push(relationship); - } - } - } - - this.visitChildren(ctx); - } - - visitSubsetting(ctx: any): void { - if (ctx.target && ctx.source) { - this.relationships.push({ - type: 'subsets', - target: ctx.target.getText(), - source: ctx.source.getText() - }); - } - this.visitChildren(ctx); - } - - visitRedefinition(ctx: any): void { - if (ctx.target && ctx.source) { - this.relationships.push({ - type: 'redefines', - target: ctx.target.getText(), - source: ctx.source.getText() - }); - } - this.visitChildren(ctx); - } - - /** - * Extracts visibility modifier from action context. - */ - private extractVisibility(ctx: any): string | null { - // Look for visibility keywords in the context - if (ctx.PRIVATE && typeof ctx.PRIVATE === 'function') { - const privateCtx = ctx.PRIVATE(); - if (privateCtx) { - return 'private'; - } - } - if (ctx.PUBLIC && typeof ctx.PUBLIC === 'function') { - const publicCtx = ctx.PUBLIC(); - if (publicCtx) { - return 'public'; - } - } - if (ctx.PROTECTED && typeof ctx.PROTECTED === 'function') { - const protectedCtx = ctx.PROTECTED(); - if (protectedCtx) { - return 'protected'; - } - } - - // Check for visibility in text - if (ctx && typeof ctx.getText === 'function') { - const text = ctx.getText(); - if (text.includes('private')) { - return 'private'; - } - if (text.includes('public')) { - return 'public'; - } - if (text.includes('protected')) { - return 'protected'; - } - } - - return null; - } - - /** - * Extracts specialization information (e.g., inheritance from DecisionAction). - */ - private extractSpecialization(ctx: any): string | null { - // Look for specialization in the context - it's a method in ANTLR generated contexts - if (ctx.specialization && typeof ctx.specialization === 'function') { - const specializationContext = ctx.specialization(); - if (specializationContext) { - // Try to get the qualified name from the specialization context - if (specializationContext.qualifiedName && typeof specializationContext.qualifiedName === 'function') { - const qnCtx = specializationContext.qualifiedName(); - if (qnCtx) { - // Handle array case - const qnList = Array.isArray(qnCtx) ? qnCtx : [qnCtx]; - if (qnList.length > 0 && qnList[0]) { - const name = this.extractQualifiedName(qnList[0]); - if (name) { - return name; - } - } - } - } - // Fall back to getText on the specialization context - if (typeof specializationContext.getText === 'function') { - const text = specializationContext.getText(); - if (text) { - // Remove the :> prefix - return text.replace(/^:>\s*/, '').trim(); - } - } - } - // Handle array case - some ANTLR rules return arrays - if (Array.isArray(specializationContext) && specializationContext.length > 0) { - const first = specializationContext[0]; - if (first && typeof first.getText === 'function') { - const text = first.getText(); - if (text) { - return text.replace(/^:>\s*/, '').trim(); - } - } - } - } - - // Check for :> syntax in the raw text (fallback for incomplete parses) - if (ctx && typeof ctx.getText === 'function') { - const text = ctx.getText(); - // Match :> followed by a quoted name or identifier - const specMatch = text.match(/:>\s*'([^']+)'/) || text.match(/:>\s*([A-Za-z0-9_:]+)/); - if (specMatch && specMatch[1]) { - return specMatch[1]; - } - } - - return null; - } - - /** - * Extracts action type from action usage context. - */ - private extractActionType(ctx: any): string | null { - // Similar to specialization but for action usages - if (!ctx || typeof ctx.getText !== 'function') { - return null; - } - - const text = ctx.getText(); - const colonMatch = text.match(/:\s*([A-Za-z0-9_:]+)/); - if (colonMatch && colonMatch[1]) { - return colonMatch[1]; - } - - return null; - } -} - -/** - * Custom error listener for ANTLR parsing errors. - * Batches errors to avoid flooding the console. - */ -class SysMLErrorListener extends ErrorListener { - private errorCount = 0; - private static readonly MAX_LOGGED_ERRORS = 5; - private suppressedCount = 0; - - constructor( - private _document: vscode.TextDocument, - private elements: Map - ) { - super(); - } - - /** - * Log a summary of parse errors if any were suppressed. - */ - logSummary(): void { - // Summary logging disabled for performance - } - - /** - * Get the total number of parse errors encountered. - */ - getErrorCount(): number { - return this.errorCount; - } - - - syntaxError(recognizer: any, offendingSymbol: any, line: number, charPositionInLine: number, msg: string, _e: any): void { - this.errorCount++; - - // Track suppressed errors (logging disabled for performance) - if (this.errorCount > SysMLErrorListener.MAX_LOGGED_ERRORS) { - this.suppressedCount++; - } - - // Only create error elements for severe syntax errors, not semicolon warnings - if (msg.includes('extraneous input') && msg.includes(';')) { - // Skip semicolon errors as they're expected in our grammar - return; - } - - // Create error element for real syntax errors - const errorRange = new vscode.Range( - line - 1, // ANTLR uses 1-based line numbers - charPositionInLine, - line - 1, - charPositionInLine + (offendingSymbol?.text?.length || 1) - ); - - const errorElement: SysMLElement = { - type: 'error', - name: 'Parse Error', - range: errorRange, - children: [], - attributes: new Map([ - ['error', msg], - ['line', line.toString()], - ['column', charPositionInLine.toString()] - ]), - relationships: [], - errors: [msg] - }; - - // Add error element to collection - this.elements.set(`error_${line}_${charPositionInLine}`, errorElement); - } -} diff --git a/src/parser/generated/grammar/SysMLv2Lexer.interp b/src/parser/generated/grammar/SysMLv2Lexer.interp deleted file mode 100644 index f49ede0..0000000 --- a/src/parser/generated/grammar/SysMLv2Lexer.interp +++ /dev/null @@ -1,692 +0,0 @@ -token literal names: -null -'about' -'abstract' -'accept' -'action' -'actor' -'after' -'alias' -'all' -'allocate' -'allocation' -'analysis' -'and' -'as' -'assert' -'assign' -'assoc' -'assume' -'at' -'attribute' -'behavior' -'bind' -'binding' -'bool' -'by' -'calc' -'case' -'chains' -'class' -'classifier' -'comment' -'composite' -'concern' -'conjugate' -'conjugates' -'conjugation' -'connect' -'connection' -'connector' -'const' -'constant' -'constraint' -'crosses' -'datatype' -'decide' -'def' -'default' -'defined' -'dependency' -'derived' -'differences' -'disjoining' -'disjoint' -'do' -'doc' -'else' -'end' -'entry' -'enum' -'event' -'exhibit' -'exit' -'expose' -'expr' -'false' -'feature' -'featured' -'featuring' -'filter' -'first' -'flow' -'for' -'fork' -'frame' -'from' -'function' -'hastype' -'if' -'implies' -'import' -'in' -'include' -'individual' -'inout' -'interaction' -'interface' -'intersects' -'inv' -'inverse' -'inverting' -'istype' -'item' -'join' -'language' -'library' -'locale' -'loop' -'member' -'merge' -'message' -'meta' -'metaclass' -'metadata' -'multiplicity' -'namespace' -'new' -'nonunique' -'not' -'null' -'objective' -'occurrence' -'of' -'or' -'ordered' -'out' -'package' -'parallel' -'part' -'perform' -'port' -'portion' -'predicate' -'private' -'protected' -'public' -'redefines' -'redefinition' -'ref' -'references' -'render' -'rendering' -'rep' -'require' -'requirement' -'return' -'satisfy' -'send' -'snapshot' -'specialization' -'specializes' -'stakeholder' -'standard' -'state' -'step' -'struct' -'subclassifier' -'subject' -'subset' -'subsets' -'subtype' -'succession' -'terminate' -'then' -'timeslice' -'to' -'transition' -'true' -'type' -'typed' -'typing' -'unions' -'until' -'use' -'var' -'variant' -'variation' -'verification' -'verify' -'via' -'view' -'viewpoint' -'when' -'while' -'xor' -'!==' -'::>' -':>>' -'===' -'!=' -'**' -'->' -'..' -'.?' -'::' -':=' -':>' -'<=' -'==' -'=>' -'>=' -'??' -'@@' -'#' -'$' -'%' -'&' -'(' -')' -'*' -'+' -',' -'-' -'.' -'/' -':' -';' -'<' -'=' -'>' -'?' -'@' -'[' -']' -'^' -'{' -'|' -'}' -'~' -null -null -null -null -null -null -null -null - -token symbolic names: -null -ABOUT -ABSTRACT -ACCEPT -ACTION -ACTOR -AFTER -ALIAS -ALL -ALLOCATE -ALLOCATION -ANALYSIS -AND -AS -ASSERT -ASSIGN -ASSOC -ASSUME -AT -ATTRIBUTE -BEHAVIOR -BIND -BINDING -BOOL -BY -CALC -CASE -CHAINS -CLASS -CLASSIFIER -COMMENT -COMPOSITE -CONCERN -CONJUGATE -CONJUGATES -CONJUGATION -CONNECT -CONNECTION -CONNECTOR -CONST -CONSTANT -CONSTRAINT -CROSSES -DATATYPE -DECIDE -DEF -DEFAULT -DEFINED -DEPENDENCY -DERIVED -DIFFERENCES -DISJOINING -DISJOINT -DO -DOC -ELSE -END -ENTRY -ENUM -EVENT -EXHIBIT -EXIT -EXPOSE -EXPR -FALSE -FEATURE -FEATURED -FEATURING -FILTER -FIRST -FLOW -FOR -FORK -FRAME -FROM -FUNCTION -HASTYPE -IF -IMPLIES -IMPORT -IN -INCLUDE -INDIVIDUAL -INOUT -INTERACTION -INTERFACE -INTERSECTS -INV -INVERSE -INVERTING -ISTYPE -ITEM -JOIN -LANGUAGE -LIBRARY -LOCALE -LOOP -MEMBER -MERGE -MESSAGE -META -METACLASS -METADATA -MULTIPLICITY -NAMESPACE -NEW -NONUNIQUE -NOT -NULL -OBJECTIVE -OCCURRENCE -OF -OR -ORDERED -OUT -PACKAGE -PARALLEL -PART -PERFORM -PORT -PORTION -PREDICATE -PRIVATE -PROTECTED -PUBLIC -REDEFINES -REDEFINITION -REF -REFERENCES -RENDER -RENDERING -REP -REQUIRE -REQUIREMENT -RETURN -SATISFY -SEND -SNAPSHOT -SPECIALIZATION -SPECIALIZES -STAKEHOLDER -STANDARD -STATE -STEP -STRUCT -SUBCLASSIFIER -SUBJECT -SUBSET -SUBSETS -SUBTYPE -SUCCESSION -TERMINATE -THEN -TIMESLICE -TO -TRANSITION -TRUE -TYPE -TYPED -TYPING -UNIONS -UNTIL -USE -VAR -VARIANT -VARIATION -VERIFICATION -VERIFY -VIA -VIEW -VIEWPOINT -WHEN -WHILE -XOR -BANG_EQ_EQ -COLON_COLON_GT -COLON_GT_GT -EQ_EQ_EQ -BANG_EQ -STAR_STAR -ARROW -DOT_DOT -DOT_QUESTION -COLON_COLON -COLON_EQ -COLON_GT -LE -EQ_EQ -FAT_ARROW -GE -QUESTION_QUESTION -AT_AT -HASH -DOLLAR -PERCENT -AMP -LPAREN -RPAREN -STAR -PLUS -COMMA -MINUS -DOT -SLASH -COLON -SEMI -LT -EQ -GT -QUESTION -AT_SIGN -LBRACK -RBRACK -CARET -LBRACE -PIPE -RBRACE -TILDE -IDENTIFIER -STRING -DOUBLE_STRING -INTEGER -REAL -REGULAR_COMMENT -SINGLE_LINE_NOTE -WS - -rule names: -ABOUT -ABSTRACT -ACCEPT -ACTION -ACTOR -AFTER -ALIAS -ALL -ALLOCATE -ALLOCATION -ANALYSIS -AND -AS -ASSERT -ASSIGN -ASSOC -ASSUME -AT -ATTRIBUTE -BEHAVIOR -BIND -BINDING -BOOL -BY -CALC -CASE -CHAINS -CLASS -CLASSIFIER -COMMENT -COMPOSITE -CONCERN -CONJUGATE -CONJUGATES -CONJUGATION -CONNECT -CONNECTION -CONNECTOR -CONST -CONSTANT -CONSTRAINT -CROSSES -DATATYPE -DECIDE -DEF -DEFAULT -DEFINED -DEPENDENCY -DERIVED -DIFFERENCES -DISJOINING -DISJOINT -DO -DOC -ELSE -END -ENTRY -ENUM -EVENT -EXHIBIT -EXIT -EXPOSE -EXPR -FALSE -FEATURE -FEATURED -FEATURING -FILTER -FIRST -FLOW -FOR -FORK -FRAME -FROM -FUNCTION -HASTYPE -IF -IMPLIES -IMPORT -IN -INCLUDE -INDIVIDUAL -INOUT -INTERACTION -INTERFACE -INTERSECTS -INV -INVERSE -INVERTING -ISTYPE -ITEM -JOIN -LANGUAGE -LIBRARY -LOCALE -LOOP -MEMBER -MERGE -MESSAGE -META -METACLASS -METADATA -MULTIPLICITY -NAMESPACE -NEW -NONUNIQUE -NOT -NULL -OBJECTIVE -OCCURRENCE -OF -OR -ORDERED -OUT -PACKAGE -PARALLEL -PART -PERFORM -PORT -PORTION -PREDICATE -PRIVATE -PROTECTED -PUBLIC -REDEFINES -REDEFINITION -REF -REFERENCES -RENDER -RENDERING -REP -REQUIRE -REQUIREMENT -RETURN -SATISFY -SEND -SNAPSHOT -SPECIALIZATION -SPECIALIZES -STAKEHOLDER -STANDARD -STATE -STEP -STRUCT -SUBCLASSIFIER -SUBJECT -SUBSET -SUBSETS -SUBTYPE -SUCCESSION -TERMINATE -THEN -TIMESLICE -TO -TRANSITION -TRUE -TYPE -TYPED -TYPING -UNIONS -UNTIL -USE -VAR -VARIANT -VARIATION -VERIFICATION -VERIFY -VIA -VIEW -VIEWPOINT -WHEN -WHILE -XOR -BANG_EQ_EQ -COLON_COLON_GT -COLON_GT_GT -EQ_EQ_EQ -BANG_EQ -STAR_STAR -ARROW -DOT_DOT -DOT_QUESTION -COLON_COLON -COLON_EQ -COLON_GT -LE -EQ_EQ -FAT_ARROW -GE -QUESTION_QUESTION -AT_AT -HASH -DOLLAR -PERCENT -AMP -LPAREN -RPAREN -STAR -PLUS -COMMA -MINUS -DOT -SLASH -COLON -SEMI -LT -EQ -GT -QUESTION -AT_SIGN -LBRACK -RBRACK -CARET -LBRACE -PIPE -RBRACE -TILDE -IDENTIFIER -STRING -DOUBLE_STRING -INTEGER -REAL -REGULAR_COMMENT -SINGLE_LINE_NOTE -WS - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 225, 1950, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 200, 1, 200, 1, 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 1, 204, 1, 204, 1, 205, 1, 205, 1, 206, 1, 206, 1, 207, 1, 207, 1, 208, 1, 208, 1, 209, 1, 209, 1, 210, 1, 210, 1, 211, 1, 211, 1, 212, 1, 212, 1, 213, 1, 213, 1, 214, 1, 214, 1, 215, 1, 215, 1, 216, 1, 216, 1, 217, 1, 217, 5, 217, 1850, 8, 217, 10, 217, 12, 217, 1853, 9, 217, 1, 218, 1, 218, 1, 218, 1, 218, 5, 218, 1859, 8, 218, 10, 218, 12, 218, 1862, 9, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 5, 219, 1870, 8, 219, 10, 219, 12, 219, 1873, 9, 219, 1, 219, 1, 219, 1, 220, 4, 220, 1878, 8, 220, 11, 220, 12, 220, 1879, 1, 221, 5, 221, 1883, 8, 221, 10, 221, 12, 221, 1886, 9, 221, 1, 221, 1, 221, 4, 221, 1890, 8, 221, 11, 221, 12, 221, 1891, 1, 221, 1, 221, 3, 221, 1896, 8, 221, 1, 221, 4, 221, 1899, 8, 221, 11, 221, 12, 221, 1900, 3, 221, 1903, 8, 221, 1, 221, 4, 221, 1906, 8, 221, 11, 221, 12, 221, 1907, 1, 221, 1, 221, 3, 221, 1912, 8, 221, 1, 221, 4, 221, 1915, 8, 221, 11, 221, 12, 221, 1916, 3, 221, 1919, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 1925, 8, 222, 10, 222, 12, 222, 1928, 9, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 5, 223, 1937, 8, 223, 10, 223, 12, 223, 1940, 9, 223, 1, 223, 1, 223, 1, 224, 4, 224, 1945, 8, 224, 11, 224, 12, 224, 1946, 1, 224, 1, 224, 1, 1926, 0, 225, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 1, 0, 9, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 39, 39, 92, 92, 2, 0, 34, 34, 92, 92, 1, 0, 48, 57, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1967, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 1, 451, 1, 0, 0, 0, 3, 457, 1, 0, 0, 0, 5, 466, 1, 0, 0, 0, 7, 473, 1, 0, 0, 0, 9, 480, 1, 0, 0, 0, 11, 486, 1, 0, 0, 0, 13, 492, 1, 0, 0, 0, 15, 498, 1, 0, 0, 0, 17, 502, 1, 0, 0, 0, 19, 511, 1, 0, 0, 0, 21, 522, 1, 0, 0, 0, 23, 531, 1, 0, 0, 0, 25, 535, 1, 0, 0, 0, 27, 538, 1, 0, 0, 0, 29, 545, 1, 0, 0, 0, 31, 552, 1, 0, 0, 0, 33, 558, 1, 0, 0, 0, 35, 565, 1, 0, 0, 0, 37, 568, 1, 0, 0, 0, 39, 578, 1, 0, 0, 0, 41, 587, 1, 0, 0, 0, 43, 592, 1, 0, 0, 0, 45, 600, 1, 0, 0, 0, 47, 605, 1, 0, 0, 0, 49, 608, 1, 0, 0, 0, 51, 613, 1, 0, 0, 0, 53, 618, 1, 0, 0, 0, 55, 625, 1, 0, 0, 0, 57, 631, 1, 0, 0, 0, 59, 642, 1, 0, 0, 0, 61, 650, 1, 0, 0, 0, 63, 660, 1, 0, 0, 0, 65, 668, 1, 0, 0, 0, 67, 678, 1, 0, 0, 0, 69, 689, 1, 0, 0, 0, 71, 701, 1, 0, 0, 0, 73, 709, 1, 0, 0, 0, 75, 720, 1, 0, 0, 0, 77, 730, 1, 0, 0, 0, 79, 736, 1, 0, 0, 0, 81, 745, 1, 0, 0, 0, 83, 756, 1, 0, 0, 0, 85, 764, 1, 0, 0, 0, 87, 773, 1, 0, 0, 0, 89, 780, 1, 0, 0, 0, 91, 784, 1, 0, 0, 0, 93, 792, 1, 0, 0, 0, 95, 800, 1, 0, 0, 0, 97, 811, 1, 0, 0, 0, 99, 819, 1, 0, 0, 0, 101, 831, 1, 0, 0, 0, 103, 842, 1, 0, 0, 0, 105, 851, 1, 0, 0, 0, 107, 854, 1, 0, 0, 0, 109, 858, 1, 0, 0, 0, 111, 863, 1, 0, 0, 0, 113, 867, 1, 0, 0, 0, 115, 873, 1, 0, 0, 0, 117, 878, 1, 0, 0, 0, 119, 884, 1, 0, 0, 0, 121, 892, 1, 0, 0, 0, 123, 897, 1, 0, 0, 0, 125, 904, 1, 0, 0, 0, 127, 909, 1, 0, 0, 0, 129, 915, 1, 0, 0, 0, 131, 923, 1, 0, 0, 0, 133, 932, 1, 0, 0, 0, 135, 942, 1, 0, 0, 0, 137, 949, 1, 0, 0, 0, 139, 955, 1, 0, 0, 0, 141, 960, 1, 0, 0, 0, 143, 964, 1, 0, 0, 0, 145, 969, 1, 0, 0, 0, 147, 975, 1, 0, 0, 0, 149, 980, 1, 0, 0, 0, 151, 989, 1, 0, 0, 0, 153, 997, 1, 0, 0, 0, 155, 1000, 1, 0, 0, 0, 157, 1008, 1, 0, 0, 0, 159, 1015, 1, 0, 0, 0, 161, 1018, 1, 0, 0, 0, 163, 1026, 1, 0, 0, 0, 165, 1037, 1, 0, 0, 0, 167, 1043, 1, 0, 0, 0, 169, 1055, 1, 0, 0, 0, 171, 1065, 1, 0, 0, 0, 173, 1076, 1, 0, 0, 0, 175, 1080, 1, 0, 0, 0, 177, 1088, 1, 0, 0, 0, 179, 1098, 1, 0, 0, 0, 181, 1105, 1, 0, 0, 0, 183, 1110, 1, 0, 0, 0, 185, 1115, 1, 0, 0, 0, 187, 1124, 1, 0, 0, 0, 189, 1132, 1, 0, 0, 0, 191, 1139, 1, 0, 0, 0, 193, 1144, 1, 0, 0, 0, 195, 1151, 1, 0, 0, 0, 197, 1157, 1, 0, 0, 0, 199, 1165, 1, 0, 0, 0, 201, 1170, 1, 0, 0, 0, 203, 1180, 1, 0, 0, 0, 205, 1189, 1, 0, 0, 0, 207, 1202, 1, 0, 0, 0, 209, 1212, 1, 0, 0, 0, 211, 1216, 1, 0, 0, 0, 213, 1226, 1, 0, 0, 0, 215, 1230, 1, 0, 0, 0, 217, 1235, 1, 0, 0, 0, 219, 1245, 1, 0, 0, 0, 221, 1256, 1, 0, 0, 0, 223, 1259, 1, 0, 0, 0, 225, 1262, 1, 0, 0, 0, 227, 1270, 1, 0, 0, 0, 229, 1274, 1, 0, 0, 0, 231, 1282, 1, 0, 0, 0, 233, 1291, 1, 0, 0, 0, 235, 1296, 1, 0, 0, 0, 237, 1304, 1, 0, 0, 0, 239, 1309, 1, 0, 0, 0, 241, 1317, 1, 0, 0, 0, 243, 1327, 1, 0, 0, 0, 245, 1335, 1, 0, 0, 0, 247, 1345, 1, 0, 0, 0, 249, 1352, 1, 0, 0, 0, 251, 1362, 1, 0, 0, 0, 253, 1375, 1, 0, 0, 0, 255, 1379, 1, 0, 0, 0, 257, 1390, 1, 0, 0, 0, 259, 1397, 1, 0, 0, 0, 261, 1407, 1, 0, 0, 0, 263, 1411, 1, 0, 0, 0, 265, 1419, 1, 0, 0, 0, 267, 1431, 1, 0, 0, 0, 269, 1438, 1, 0, 0, 0, 271, 1446, 1, 0, 0, 0, 273, 1451, 1, 0, 0, 0, 275, 1460, 1, 0, 0, 0, 277, 1475, 1, 0, 0, 0, 279, 1487, 1, 0, 0, 0, 281, 1499, 1, 0, 0, 0, 283, 1508, 1, 0, 0, 0, 285, 1514, 1, 0, 0, 0, 287, 1519, 1, 0, 0, 0, 289, 1526, 1, 0, 0, 0, 291, 1540, 1, 0, 0, 0, 293, 1548, 1, 0, 0, 0, 295, 1555, 1, 0, 0, 0, 297, 1563, 1, 0, 0, 0, 299, 1571, 1, 0, 0, 0, 301, 1582, 1, 0, 0, 0, 303, 1592, 1, 0, 0, 0, 305, 1597, 1, 0, 0, 0, 307, 1607, 1, 0, 0, 0, 309, 1610, 1, 0, 0, 0, 311, 1621, 1, 0, 0, 0, 313, 1626, 1, 0, 0, 0, 315, 1631, 1, 0, 0, 0, 317, 1637, 1, 0, 0, 0, 319, 1644, 1, 0, 0, 0, 321, 1651, 1, 0, 0, 0, 323, 1657, 1, 0, 0, 0, 325, 1661, 1, 0, 0, 0, 327, 1665, 1, 0, 0, 0, 329, 1673, 1, 0, 0, 0, 331, 1683, 1, 0, 0, 0, 333, 1696, 1, 0, 0, 0, 335, 1703, 1, 0, 0, 0, 337, 1707, 1, 0, 0, 0, 339, 1712, 1, 0, 0, 0, 341, 1722, 1, 0, 0, 0, 343, 1727, 1, 0, 0, 0, 345, 1733, 1, 0, 0, 0, 347, 1737, 1, 0, 0, 0, 349, 1741, 1, 0, 0, 0, 351, 1745, 1, 0, 0, 0, 353, 1749, 1, 0, 0, 0, 355, 1753, 1, 0, 0, 0, 357, 1756, 1, 0, 0, 0, 359, 1759, 1, 0, 0, 0, 361, 1762, 1, 0, 0, 0, 363, 1765, 1, 0, 0, 0, 365, 1768, 1, 0, 0, 0, 367, 1771, 1, 0, 0, 0, 369, 1774, 1, 0, 0, 0, 371, 1777, 1, 0, 0, 0, 373, 1780, 1, 0, 0, 0, 375, 1783, 1, 0, 0, 0, 377, 1786, 1, 0, 0, 0, 379, 1789, 1, 0, 0, 0, 381, 1792, 1, 0, 0, 0, 383, 1795, 1, 0, 0, 0, 385, 1797, 1, 0, 0, 0, 387, 1799, 1, 0, 0, 0, 389, 1801, 1, 0, 0, 0, 391, 1803, 1, 0, 0, 0, 393, 1805, 1, 0, 0, 0, 395, 1807, 1, 0, 0, 0, 397, 1809, 1, 0, 0, 0, 399, 1811, 1, 0, 0, 0, 401, 1813, 1, 0, 0, 0, 403, 1815, 1, 0, 0, 0, 405, 1817, 1, 0, 0, 0, 407, 1819, 1, 0, 0, 0, 409, 1821, 1, 0, 0, 0, 411, 1823, 1, 0, 0, 0, 413, 1825, 1, 0, 0, 0, 415, 1827, 1, 0, 0, 0, 417, 1829, 1, 0, 0, 0, 419, 1831, 1, 0, 0, 0, 421, 1833, 1, 0, 0, 0, 423, 1835, 1, 0, 0, 0, 425, 1837, 1, 0, 0, 0, 427, 1839, 1, 0, 0, 0, 429, 1841, 1, 0, 0, 0, 431, 1843, 1, 0, 0, 0, 433, 1845, 1, 0, 0, 0, 435, 1847, 1, 0, 0, 0, 437, 1854, 1, 0, 0, 0, 439, 1865, 1, 0, 0, 0, 441, 1877, 1, 0, 0, 0, 443, 1918, 1, 0, 0, 0, 445, 1920, 1, 0, 0, 0, 447, 1932, 1, 0, 0, 0, 449, 1944, 1, 0, 0, 0, 451, 452, 5, 97, 0, 0, 452, 453, 5, 98, 0, 0, 453, 454, 5, 111, 0, 0, 454, 455, 5, 117, 0, 0, 455, 456, 5, 116, 0, 0, 456, 2, 1, 0, 0, 0, 457, 458, 5, 97, 0, 0, 458, 459, 5, 98, 0, 0, 459, 460, 5, 115, 0, 0, 460, 461, 5, 116, 0, 0, 461, 462, 5, 114, 0, 0, 462, 463, 5, 97, 0, 0, 463, 464, 5, 99, 0, 0, 464, 465, 5, 116, 0, 0, 465, 4, 1, 0, 0, 0, 466, 467, 5, 97, 0, 0, 467, 468, 5, 99, 0, 0, 468, 469, 5, 99, 0, 0, 469, 470, 5, 101, 0, 0, 470, 471, 5, 112, 0, 0, 471, 472, 5, 116, 0, 0, 472, 6, 1, 0, 0, 0, 473, 474, 5, 97, 0, 0, 474, 475, 5, 99, 0, 0, 475, 476, 5, 116, 0, 0, 476, 477, 5, 105, 0, 0, 477, 478, 5, 111, 0, 0, 478, 479, 5, 110, 0, 0, 479, 8, 1, 0, 0, 0, 480, 481, 5, 97, 0, 0, 481, 482, 5, 99, 0, 0, 482, 483, 5, 116, 0, 0, 483, 484, 5, 111, 0, 0, 484, 485, 5, 114, 0, 0, 485, 10, 1, 0, 0, 0, 486, 487, 5, 97, 0, 0, 487, 488, 5, 102, 0, 0, 488, 489, 5, 116, 0, 0, 489, 490, 5, 101, 0, 0, 490, 491, 5, 114, 0, 0, 491, 12, 1, 0, 0, 0, 492, 493, 5, 97, 0, 0, 493, 494, 5, 108, 0, 0, 494, 495, 5, 105, 0, 0, 495, 496, 5, 97, 0, 0, 496, 497, 5, 115, 0, 0, 497, 14, 1, 0, 0, 0, 498, 499, 5, 97, 0, 0, 499, 500, 5, 108, 0, 0, 500, 501, 5, 108, 0, 0, 501, 16, 1, 0, 0, 0, 502, 503, 5, 97, 0, 0, 503, 504, 5, 108, 0, 0, 504, 505, 5, 108, 0, 0, 505, 506, 5, 111, 0, 0, 506, 507, 5, 99, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 116, 0, 0, 509, 510, 5, 101, 0, 0, 510, 18, 1, 0, 0, 0, 511, 512, 5, 97, 0, 0, 512, 513, 5, 108, 0, 0, 513, 514, 5, 108, 0, 0, 514, 515, 5, 111, 0, 0, 515, 516, 5, 99, 0, 0, 516, 517, 5, 97, 0, 0, 517, 518, 5, 116, 0, 0, 518, 519, 5, 105, 0, 0, 519, 520, 5, 111, 0, 0, 520, 521, 5, 110, 0, 0, 521, 20, 1, 0, 0, 0, 522, 523, 5, 97, 0, 0, 523, 524, 5, 110, 0, 0, 524, 525, 5, 97, 0, 0, 525, 526, 5, 108, 0, 0, 526, 527, 5, 121, 0, 0, 527, 528, 5, 115, 0, 0, 528, 529, 5, 105, 0, 0, 529, 530, 5, 115, 0, 0, 530, 22, 1, 0, 0, 0, 531, 532, 5, 97, 0, 0, 532, 533, 5, 110, 0, 0, 533, 534, 5, 100, 0, 0, 534, 24, 1, 0, 0, 0, 535, 536, 5, 97, 0, 0, 536, 537, 5, 115, 0, 0, 537, 26, 1, 0, 0, 0, 538, 539, 5, 97, 0, 0, 539, 540, 5, 115, 0, 0, 540, 541, 5, 115, 0, 0, 541, 542, 5, 101, 0, 0, 542, 543, 5, 114, 0, 0, 543, 544, 5, 116, 0, 0, 544, 28, 1, 0, 0, 0, 545, 546, 5, 97, 0, 0, 546, 547, 5, 115, 0, 0, 547, 548, 5, 115, 0, 0, 548, 549, 5, 105, 0, 0, 549, 550, 5, 103, 0, 0, 550, 551, 5, 110, 0, 0, 551, 30, 1, 0, 0, 0, 552, 553, 5, 97, 0, 0, 553, 554, 5, 115, 0, 0, 554, 555, 5, 115, 0, 0, 555, 556, 5, 111, 0, 0, 556, 557, 5, 99, 0, 0, 557, 32, 1, 0, 0, 0, 558, 559, 5, 97, 0, 0, 559, 560, 5, 115, 0, 0, 560, 561, 5, 115, 0, 0, 561, 562, 5, 117, 0, 0, 562, 563, 5, 109, 0, 0, 563, 564, 5, 101, 0, 0, 564, 34, 1, 0, 0, 0, 565, 566, 5, 97, 0, 0, 566, 567, 5, 116, 0, 0, 567, 36, 1, 0, 0, 0, 568, 569, 5, 97, 0, 0, 569, 570, 5, 116, 0, 0, 570, 571, 5, 116, 0, 0, 571, 572, 5, 114, 0, 0, 572, 573, 5, 105, 0, 0, 573, 574, 5, 98, 0, 0, 574, 575, 5, 117, 0, 0, 575, 576, 5, 116, 0, 0, 576, 577, 5, 101, 0, 0, 577, 38, 1, 0, 0, 0, 578, 579, 5, 98, 0, 0, 579, 580, 5, 101, 0, 0, 580, 581, 5, 104, 0, 0, 581, 582, 5, 97, 0, 0, 582, 583, 5, 118, 0, 0, 583, 584, 5, 105, 0, 0, 584, 585, 5, 111, 0, 0, 585, 586, 5, 114, 0, 0, 586, 40, 1, 0, 0, 0, 587, 588, 5, 98, 0, 0, 588, 589, 5, 105, 0, 0, 589, 590, 5, 110, 0, 0, 590, 591, 5, 100, 0, 0, 591, 42, 1, 0, 0, 0, 592, 593, 5, 98, 0, 0, 593, 594, 5, 105, 0, 0, 594, 595, 5, 110, 0, 0, 595, 596, 5, 100, 0, 0, 596, 597, 5, 105, 0, 0, 597, 598, 5, 110, 0, 0, 598, 599, 5, 103, 0, 0, 599, 44, 1, 0, 0, 0, 600, 601, 5, 98, 0, 0, 601, 602, 5, 111, 0, 0, 602, 603, 5, 111, 0, 0, 603, 604, 5, 108, 0, 0, 604, 46, 1, 0, 0, 0, 605, 606, 5, 98, 0, 0, 606, 607, 5, 121, 0, 0, 607, 48, 1, 0, 0, 0, 608, 609, 5, 99, 0, 0, 609, 610, 5, 97, 0, 0, 610, 611, 5, 108, 0, 0, 611, 612, 5, 99, 0, 0, 612, 50, 1, 0, 0, 0, 613, 614, 5, 99, 0, 0, 614, 615, 5, 97, 0, 0, 615, 616, 5, 115, 0, 0, 616, 617, 5, 101, 0, 0, 617, 52, 1, 0, 0, 0, 618, 619, 5, 99, 0, 0, 619, 620, 5, 104, 0, 0, 620, 621, 5, 97, 0, 0, 621, 622, 5, 105, 0, 0, 622, 623, 5, 110, 0, 0, 623, 624, 5, 115, 0, 0, 624, 54, 1, 0, 0, 0, 625, 626, 5, 99, 0, 0, 626, 627, 5, 108, 0, 0, 627, 628, 5, 97, 0, 0, 628, 629, 5, 115, 0, 0, 629, 630, 5, 115, 0, 0, 630, 56, 1, 0, 0, 0, 631, 632, 5, 99, 0, 0, 632, 633, 5, 108, 0, 0, 633, 634, 5, 97, 0, 0, 634, 635, 5, 115, 0, 0, 635, 636, 5, 115, 0, 0, 636, 637, 5, 105, 0, 0, 637, 638, 5, 102, 0, 0, 638, 639, 5, 105, 0, 0, 639, 640, 5, 101, 0, 0, 640, 641, 5, 114, 0, 0, 641, 58, 1, 0, 0, 0, 642, 643, 5, 99, 0, 0, 643, 644, 5, 111, 0, 0, 644, 645, 5, 109, 0, 0, 645, 646, 5, 109, 0, 0, 646, 647, 5, 101, 0, 0, 647, 648, 5, 110, 0, 0, 648, 649, 5, 116, 0, 0, 649, 60, 1, 0, 0, 0, 650, 651, 5, 99, 0, 0, 651, 652, 5, 111, 0, 0, 652, 653, 5, 109, 0, 0, 653, 654, 5, 112, 0, 0, 654, 655, 5, 111, 0, 0, 655, 656, 5, 115, 0, 0, 656, 657, 5, 105, 0, 0, 657, 658, 5, 116, 0, 0, 658, 659, 5, 101, 0, 0, 659, 62, 1, 0, 0, 0, 660, 661, 5, 99, 0, 0, 661, 662, 5, 111, 0, 0, 662, 663, 5, 110, 0, 0, 663, 664, 5, 99, 0, 0, 664, 665, 5, 101, 0, 0, 665, 666, 5, 114, 0, 0, 666, 667, 5, 110, 0, 0, 667, 64, 1, 0, 0, 0, 668, 669, 5, 99, 0, 0, 669, 670, 5, 111, 0, 0, 670, 671, 5, 110, 0, 0, 671, 672, 5, 106, 0, 0, 672, 673, 5, 117, 0, 0, 673, 674, 5, 103, 0, 0, 674, 675, 5, 97, 0, 0, 675, 676, 5, 116, 0, 0, 676, 677, 5, 101, 0, 0, 677, 66, 1, 0, 0, 0, 678, 679, 5, 99, 0, 0, 679, 680, 5, 111, 0, 0, 680, 681, 5, 110, 0, 0, 681, 682, 5, 106, 0, 0, 682, 683, 5, 117, 0, 0, 683, 684, 5, 103, 0, 0, 684, 685, 5, 97, 0, 0, 685, 686, 5, 116, 0, 0, 686, 687, 5, 101, 0, 0, 687, 688, 5, 115, 0, 0, 688, 68, 1, 0, 0, 0, 689, 690, 5, 99, 0, 0, 690, 691, 5, 111, 0, 0, 691, 692, 5, 110, 0, 0, 692, 693, 5, 106, 0, 0, 693, 694, 5, 117, 0, 0, 694, 695, 5, 103, 0, 0, 695, 696, 5, 97, 0, 0, 696, 697, 5, 116, 0, 0, 697, 698, 5, 105, 0, 0, 698, 699, 5, 111, 0, 0, 699, 700, 5, 110, 0, 0, 700, 70, 1, 0, 0, 0, 701, 702, 5, 99, 0, 0, 702, 703, 5, 111, 0, 0, 703, 704, 5, 110, 0, 0, 704, 705, 5, 110, 0, 0, 705, 706, 5, 101, 0, 0, 706, 707, 5, 99, 0, 0, 707, 708, 5, 116, 0, 0, 708, 72, 1, 0, 0, 0, 709, 710, 5, 99, 0, 0, 710, 711, 5, 111, 0, 0, 711, 712, 5, 110, 0, 0, 712, 713, 5, 110, 0, 0, 713, 714, 5, 101, 0, 0, 714, 715, 5, 99, 0, 0, 715, 716, 5, 116, 0, 0, 716, 717, 5, 105, 0, 0, 717, 718, 5, 111, 0, 0, 718, 719, 5, 110, 0, 0, 719, 74, 1, 0, 0, 0, 720, 721, 5, 99, 0, 0, 721, 722, 5, 111, 0, 0, 722, 723, 5, 110, 0, 0, 723, 724, 5, 110, 0, 0, 724, 725, 5, 101, 0, 0, 725, 726, 5, 99, 0, 0, 726, 727, 5, 116, 0, 0, 727, 728, 5, 111, 0, 0, 728, 729, 5, 114, 0, 0, 729, 76, 1, 0, 0, 0, 730, 731, 5, 99, 0, 0, 731, 732, 5, 111, 0, 0, 732, 733, 5, 110, 0, 0, 733, 734, 5, 115, 0, 0, 734, 735, 5, 116, 0, 0, 735, 78, 1, 0, 0, 0, 736, 737, 5, 99, 0, 0, 737, 738, 5, 111, 0, 0, 738, 739, 5, 110, 0, 0, 739, 740, 5, 115, 0, 0, 740, 741, 5, 116, 0, 0, 741, 742, 5, 97, 0, 0, 742, 743, 5, 110, 0, 0, 743, 744, 5, 116, 0, 0, 744, 80, 1, 0, 0, 0, 745, 746, 5, 99, 0, 0, 746, 747, 5, 111, 0, 0, 747, 748, 5, 110, 0, 0, 748, 749, 5, 115, 0, 0, 749, 750, 5, 116, 0, 0, 750, 751, 5, 114, 0, 0, 751, 752, 5, 97, 0, 0, 752, 753, 5, 105, 0, 0, 753, 754, 5, 110, 0, 0, 754, 755, 5, 116, 0, 0, 755, 82, 1, 0, 0, 0, 756, 757, 5, 99, 0, 0, 757, 758, 5, 114, 0, 0, 758, 759, 5, 111, 0, 0, 759, 760, 5, 115, 0, 0, 760, 761, 5, 115, 0, 0, 761, 762, 5, 101, 0, 0, 762, 763, 5, 115, 0, 0, 763, 84, 1, 0, 0, 0, 764, 765, 5, 100, 0, 0, 765, 766, 5, 97, 0, 0, 766, 767, 5, 116, 0, 0, 767, 768, 5, 97, 0, 0, 768, 769, 5, 116, 0, 0, 769, 770, 5, 121, 0, 0, 770, 771, 5, 112, 0, 0, 771, 772, 5, 101, 0, 0, 772, 86, 1, 0, 0, 0, 773, 774, 5, 100, 0, 0, 774, 775, 5, 101, 0, 0, 775, 776, 5, 99, 0, 0, 776, 777, 5, 105, 0, 0, 777, 778, 5, 100, 0, 0, 778, 779, 5, 101, 0, 0, 779, 88, 1, 0, 0, 0, 780, 781, 5, 100, 0, 0, 781, 782, 5, 101, 0, 0, 782, 783, 5, 102, 0, 0, 783, 90, 1, 0, 0, 0, 784, 785, 5, 100, 0, 0, 785, 786, 5, 101, 0, 0, 786, 787, 5, 102, 0, 0, 787, 788, 5, 97, 0, 0, 788, 789, 5, 117, 0, 0, 789, 790, 5, 108, 0, 0, 790, 791, 5, 116, 0, 0, 791, 92, 1, 0, 0, 0, 792, 793, 5, 100, 0, 0, 793, 794, 5, 101, 0, 0, 794, 795, 5, 102, 0, 0, 795, 796, 5, 105, 0, 0, 796, 797, 5, 110, 0, 0, 797, 798, 5, 101, 0, 0, 798, 799, 5, 100, 0, 0, 799, 94, 1, 0, 0, 0, 800, 801, 5, 100, 0, 0, 801, 802, 5, 101, 0, 0, 802, 803, 5, 112, 0, 0, 803, 804, 5, 101, 0, 0, 804, 805, 5, 110, 0, 0, 805, 806, 5, 100, 0, 0, 806, 807, 5, 101, 0, 0, 807, 808, 5, 110, 0, 0, 808, 809, 5, 99, 0, 0, 809, 810, 5, 121, 0, 0, 810, 96, 1, 0, 0, 0, 811, 812, 5, 100, 0, 0, 812, 813, 5, 101, 0, 0, 813, 814, 5, 114, 0, 0, 814, 815, 5, 105, 0, 0, 815, 816, 5, 118, 0, 0, 816, 817, 5, 101, 0, 0, 817, 818, 5, 100, 0, 0, 818, 98, 1, 0, 0, 0, 819, 820, 5, 100, 0, 0, 820, 821, 5, 105, 0, 0, 821, 822, 5, 102, 0, 0, 822, 823, 5, 102, 0, 0, 823, 824, 5, 101, 0, 0, 824, 825, 5, 114, 0, 0, 825, 826, 5, 101, 0, 0, 826, 827, 5, 110, 0, 0, 827, 828, 5, 99, 0, 0, 828, 829, 5, 101, 0, 0, 829, 830, 5, 115, 0, 0, 830, 100, 1, 0, 0, 0, 831, 832, 5, 100, 0, 0, 832, 833, 5, 105, 0, 0, 833, 834, 5, 115, 0, 0, 834, 835, 5, 106, 0, 0, 835, 836, 5, 111, 0, 0, 836, 837, 5, 105, 0, 0, 837, 838, 5, 110, 0, 0, 838, 839, 5, 105, 0, 0, 839, 840, 5, 110, 0, 0, 840, 841, 5, 103, 0, 0, 841, 102, 1, 0, 0, 0, 842, 843, 5, 100, 0, 0, 843, 844, 5, 105, 0, 0, 844, 845, 5, 115, 0, 0, 845, 846, 5, 106, 0, 0, 846, 847, 5, 111, 0, 0, 847, 848, 5, 105, 0, 0, 848, 849, 5, 110, 0, 0, 849, 850, 5, 116, 0, 0, 850, 104, 1, 0, 0, 0, 851, 852, 5, 100, 0, 0, 852, 853, 5, 111, 0, 0, 853, 106, 1, 0, 0, 0, 854, 855, 5, 100, 0, 0, 855, 856, 5, 111, 0, 0, 856, 857, 5, 99, 0, 0, 857, 108, 1, 0, 0, 0, 858, 859, 5, 101, 0, 0, 859, 860, 5, 108, 0, 0, 860, 861, 5, 115, 0, 0, 861, 862, 5, 101, 0, 0, 862, 110, 1, 0, 0, 0, 863, 864, 5, 101, 0, 0, 864, 865, 5, 110, 0, 0, 865, 866, 5, 100, 0, 0, 866, 112, 1, 0, 0, 0, 867, 868, 5, 101, 0, 0, 868, 869, 5, 110, 0, 0, 869, 870, 5, 116, 0, 0, 870, 871, 5, 114, 0, 0, 871, 872, 5, 121, 0, 0, 872, 114, 1, 0, 0, 0, 873, 874, 5, 101, 0, 0, 874, 875, 5, 110, 0, 0, 875, 876, 5, 117, 0, 0, 876, 877, 5, 109, 0, 0, 877, 116, 1, 0, 0, 0, 878, 879, 5, 101, 0, 0, 879, 880, 5, 118, 0, 0, 880, 881, 5, 101, 0, 0, 881, 882, 5, 110, 0, 0, 882, 883, 5, 116, 0, 0, 883, 118, 1, 0, 0, 0, 884, 885, 5, 101, 0, 0, 885, 886, 5, 120, 0, 0, 886, 887, 5, 104, 0, 0, 887, 888, 5, 105, 0, 0, 888, 889, 5, 98, 0, 0, 889, 890, 5, 105, 0, 0, 890, 891, 5, 116, 0, 0, 891, 120, 1, 0, 0, 0, 892, 893, 5, 101, 0, 0, 893, 894, 5, 120, 0, 0, 894, 895, 5, 105, 0, 0, 895, 896, 5, 116, 0, 0, 896, 122, 1, 0, 0, 0, 897, 898, 5, 101, 0, 0, 898, 899, 5, 120, 0, 0, 899, 900, 5, 112, 0, 0, 900, 901, 5, 111, 0, 0, 901, 902, 5, 115, 0, 0, 902, 903, 5, 101, 0, 0, 903, 124, 1, 0, 0, 0, 904, 905, 5, 101, 0, 0, 905, 906, 5, 120, 0, 0, 906, 907, 5, 112, 0, 0, 907, 908, 5, 114, 0, 0, 908, 126, 1, 0, 0, 0, 909, 910, 5, 102, 0, 0, 910, 911, 5, 97, 0, 0, 911, 912, 5, 108, 0, 0, 912, 913, 5, 115, 0, 0, 913, 914, 5, 101, 0, 0, 914, 128, 1, 0, 0, 0, 915, 916, 5, 102, 0, 0, 916, 917, 5, 101, 0, 0, 917, 918, 5, 97, 0, 0, 918, 919, 5, 116, 0, 0, 919, 920, 5, 117, 0, 0, 920, 921, 5, 114, 0, 0, 921, 922, 5, 101, 0, 0, 922, 130, 1, 0, 0, 0, 923, 924, 5, 102, 0, 0, 924, 925, 5, 101, 0, 0, 925, 926, 5, 97, 0, 0, 926, 927, 5, 116, 0, 0, 927, 928, 5, 117, 0, 0, 928, 929, 5, 114, 0, 0, 929, 930, 5, 101, 0, 0, 930, 931, 5, 100, 0, 0, 931, 132, 1, 0, 0, 0, 932, 933, 5, 102, 0, 0, 933, 934, 5, 101, 0, 0, 934, 935, 5, 97, 0, 0, 935, 936, 5, 116, 0, 0, 936, 937, 5, 117, 0, 0, 937, 938, 5, 114, 0, 0, 938, 939, 5, 105, 0, 0, 939, 940, 5, 110, 0, 0, 940, 941, 5, 103, 0, 0, 941, 134, 1, 0, 0, 0, 942, 943, 5, 102, 0, 0, 943, 944, 5, 105, 0, 0, 944, 945, 5, 108, 0, 0, 945, 946, 5, 116, 0, 0, 946, 947, 5, 101, 0, 0, 947, 948, 5, 114, 0, 0, 948, 136, 1, 0, 0, 0, 949, 950, 5, 102, 0, 0, 950, 951, 5, 105, 0, 0, 951, 952, 5, 114, 0, 0, 952, 953, 5, 115, 0, 0, 953, 954, 5, 116, 0, 0, 954, 138, 1, 0, 0, 0, 955, 956, 5, 102, 0, 0, 956, 957, 5, 108, 0, 0, 957, 958, 5, 111, 0, 0, 958, 959, 5, 119, 0, 0, 959, 140, 1, 0, 0, 0, 960, 961, 5, 102, 0, 0, 961, 962, 5, 111, 0, 0, 962, 963, 5, 114, 0, 0, 963, 142, 1, 0, 0, 0, 964, 965, 5, 102, 0, 0, 965, 966, 5, 111, 0, 0, 966, 967, 5, 114, 0, 0, 967, 968, 5, 107, 0, 0, 968, 144, 1, 0, 0, 0, 969, 970, 5, 102, 0, 0, 970, 971, 5, 114, 0, 0, 971, 972, 5, 97, 0, 0, 972, 973, 5, 109, 0, 0, 973, 974, 5, 101, 0, 0, 974, 146, 1, 0, 0, 0, 975, 976, 5, 102, 0, 0, 976, 977, 5, 114, 0, 0, 977, 978, 5, 111, 0, 0, 978, 979, 5, 109, 0, 0, 979, 148, 1, 0, 0, 0, 980, 981, 5, 102, 0, 0, 981, 982, 5, 117, 0, 0, 982, 983, 5, 110, 0, 0, 983, 984, 5, 99, 0, 0, 984, 985, 5, 116, 0, 0, 985, 986, 5, 105, 0, 0, 986, 987, 5, 111, 0, 0, 987, 988, 5, 110, 0, 0, 988, 150, 1, 0, 0, 0, 989, 990, 5, 104, 0, 0, 990, 991, 5, 97, 0, 0, 991, 992, 5, 115, 0, 0, 992, 993, 5, 116, 0, 0, 993, 994, 5, 121, 0, 0, 994, 995, 5, 112, 0, 0, 995, 996, 5, 101, 0, 0, 996, 152, 1, 0, 0, 0, 997, 998, 5, 105, 0, 0, 998, 999, 5, 102, 0, 0, 999, 154, 1, 0, 0, 0, 1000, 1001, 5, 105, 0, 0, 1001, 1002, 5, 109, 0, 0, 1002, 1003, 5, 112, 0, 0, 1003, 1004, 5, 108, 0, 0, 1004, 1005, 5, 105, 0, 0, 1005, 1006, 5, 101, 0, 0, 1006, 1007, 5, 115, 0, 0, 1007, 156, 1, 0, 0, 0, 1008, 1009, 5, 105, 0, 0, 1009, 1010, 5, 109, 0, 0, 1010, 1011, 5, 112, 0, 0, 1011, 1012, 5, 111, 0, 0, 1012, 1013, 5, 114, 0, 0, 1013, 1014, 5, 116, 0, 0, 1014, 158, 1, 0, 0, 0, 1015, 1016, 5, 105, 0, 0, 1016, 1017, 5, 110, 0, 0, 1017, 160, 1, 0, 0, 0, 1018, 1019, 5, 105, 0, 0, 1019, 1020, 5, 110, 0, 0, 1020, 1021, 5, 99, 0, 0, 1021, 1022, 5, 108, 0, 0, 1022, 1023, 5, 117, 0, 0, 1023, 1024, 5, 100, 0, 0, 1024, 1025, 5, 101, 0, 0, 1025, 162, 1, 0, 0, 0, 1026, 1027, 5, 105, 0, 0, 1027, 1028, 5, 110, 0, 0, 1028, 1029, 5, 100, 0, 0, 1029, 1030, 5, 105, 0, 0, 1030, 1031, 5, 118, 0, 0, 1031, 1032, 5, 105, 0, 0, 1032, 1033, 5, 100, 0, 0, 1033, 1034, 5, 117, 0, 0, 1034, 1035, 5, 97, 0, 0, 1035, 1036, 5, 108, 0, 0, 1036, 164, 1, 0, 0, 0, 1037, 1038, 5, 105, 0, 0, 1038, 1039, 5, 110, 0, 0, 1039, 1040, 5, 111, 0, 0, 1040, 1041, 5, 117, 0, 0, 1041, 1042, 5, 116, 0, 0, 1042, 166, 1, 0, 0, 0, 1043, 1044, 5, 105, 0, 0, 1044, 1045, 5, 110, 0, 0, 1045, 1046, 5, 116, 0, 0, 1046, 1047, 5, 101, 0, 0, 1047, 1048, 5, 114, 0, 0, 1048, 1049, 5, 97, 0, 0, 1049, 1050, 5, 99, 0, 0, 1050, 1051, 5, 116, 0, 0, 1051, 1052, 5, 105, 0, 0, 1052, 1053, 5, 111, 0, 0, 1053, 1054, 5, 110, 0, 0, 1054, 168, 1, 0, 0, 0, 1055, 1056, 5, 105, 0, 0, 1056, 1057, 5, 110, 0, 0, 1057, 1058, 5, 116, 0, 0, 1058, 1059, 5, 101, 0, 0, 1059, 1060, 5, 114, 0, 0, 1060, 1061, 5, 102, 0, 0, 1061, 1062, 5, 97, 0, 0, 1062, 1063, 5, 99, 0, 0, 1063, 1064, 5, 101, 0, 0, 1064, 170, 1, 0, 0, 0, 1065, 1066, 5, 105, 0, 0, 1066, 1067, 5, 110, 0, 0, 1067, 1068, 5, 116, 0, 0, 1068, 1069, 5, 101, 0, 0, 1069, 1070, 5, 114, 0, 0, 1070, 1071, 5, 115, 0, 0, 1071, 1072, 5, 101, 0, 0, 1072, 1073, 5, 99, 0, 0, 1073, 1074, 5, 116, 0, 0, 1074, 1075, 5, 115, 0, 0, 1075, 172, 1, 0, 0, 0, 1076, 1077, 5, 105, 0, 0, 1077, 1078, 5, 110, 0, 0, 1078, 1079, 5, 118, 0, 0, 1079, 174, 1, 0, 0, 0, 1080, 1081, 5, 105, 0, 0, 1081, 1082, 5, 110, 0, 0, 1082, 1083, 5, 118, 0, 0, 1083, 1084, 5, 101, 0, 0, 1084, 1085, 5, 114, 0, 0, 1085, 1086, 5, 115, 0, 0, 1086, 1087, 5, 101, 0, 0, 1087, 176, 1, 0, 0, 0, 1088, 1089, 5, 105, 0, 0, 1089, 1090, 5, 110, 0, 0, 1090, 1091, 5, 118, 0, 0, 1091, 1092, 5, 101, 0, 0, 1092, 1093, 5, 114, 0, 0, 1093, 1094, 5, 116, 0, 0, 1094, 1095, 5, 105, 0, 0, 1095, 1096, 5, 110, 0, 0, 1096, 1097, 5, 103, 0, 0, 1097, 178, 1, 0, 0, 0, 1098, 1099, 5, 105, 0, 0, 1099, 1100, 5, 115, 0, 0, 1100, 1101, 5, 116, 0, 0, 1101, 1102, 5, 121, 0, 0, 1102, 1103, 5, 112, 0, 0, 1103, 1104, 5, 101, 0, 0, 1104, 180, 1, 0, 0, 0, 1105, 1106, 5, 105, 0, 0, 1106, 1107, 5, 116, 0, 0, 1107, 1108, 5, 101, 0, 0, 1108, 1109, 5, 109, 0, 0, 1109, 182, 1, 0, 0, 0, 1110, 1111, 5, 106, 0, 0, 1111, 1112, 5, 111, 0, 0, 1112, 1113, 5, 105, 0, 0, 1113, 1114, 5, 110, 0, 0, 1114, 184, 1, 0, 0, 0, 1115, 1116, 5, 108, 0, 0, 1116, 1117, 5, 97, 0, 0, 1117, 1118, 5, 110, 0, 0, 1118, 1119, 5, 103, 0, 0, 1119, 1120, 5, 117, 0, 0, 1120, 1121, 5, 97, 0, 0, 1121, 1122, 5, 103, 0, 0, 1122, 1123, 5, 101, 0, 0, 1123, 186, 1, 0, 0, 0, 1124, 1125, 5, 108, 0, 0, 1125, 1126, 5, 105, 0, 0, 1126, 1127, 5, 98, 0, 0, 1127, 1128, 5, 114, 0, 0, 1128, 1129, 5, 97, 0, 0, 1129, 1130, 5, 114, 0, 0, 1130, 1131, 5, 121, 0, 0, 1131, 188, 1, 0, 0, 0, 1132, 1133, 5, 108, 0, 0, 1133, 1134, 5, 111, 0, 0, 1134, 1135, 5, 99, 0, 0, 1135, 1136, 5, 97, 0, 0, 1136, 1137, 5, 108, 0, 0, 1137, 1138, 5, 101, 0, 0, 1138, 190, 1, 0, 0, 0, 1139, 1140, 5, 108, 0, 0, 1140, 1141, 5, 111, 0, 0, 1141, 1142, 5, 111, 0, 0, 1142, 1143, 5, 112, 0, 0, 1143, 192, 1, 0, 0, 0, 1144, 1145, 5, 109, 0, 0, 1145, 1146, 5, 101, 0, 0, 1146, 1147, 5, 109, 0, 0, 1147, 1148, 5, 98, 0, 0, 1148, 1149, 5, 101, 0, 0, 1149, 1150, 5, 114, 0, 0, 1150, 194, 1, 0, 0, 0, 1151, 1152, 5, 109, 0, 0, 1152, 1153, 5, 101, 0, 0, 1153, 1154, 5, 114, 0, 0, 1154, 1155, 5, 103, 0, 0, 1155, 1156, 5, 101, 0, 0, 1156, 196, 1, 0, 0, 0, 1157, 1158, 5, 109, 0, 0, 1158, 1159, 5, 101, 0, 0, 1159, 1160, 5, 115, 0, 0, 1160, 1161, 5, 115, 0, 0, 1161, 1162, 5, 97, 0, 0, 1162, 1163, 5, 103, 0, 0, 1163, 1164, 5, 101, 0, 0, 1164, 198, 1, 0, 0, 0, 1165, 1166, 5, 109, 0, 0, 1166, 1167, 5, 101, 0, 0, 1167, 1168, 5, 116, 0, 0, 1168, 1169, 5, 97, 0, 0, 1169, 200, 1, 0, 0, 0, 1170, 1171, 5, 109, 0, 0, 1171, 1172, 5, 101, 0, 0, 1172, 1173, 5, 116, 0, 0, 1173, 1174, 5, 97, 0, 0, 1174, 1175, 5, 99, 0, 0, 1175, 1176, 5, 108, 0, 0, 1176, 1177, 5, 97, 0, 0, 1177, 1178, 5, 115, 0, 0, 1178, 1179, 5, 115, 0, 0, 1179, 202, 1, 0, 0, 0, 1180, 1181, 5, 109, 0, 0, 1181, 1182, 5, 101, 0, 0, 1182, 1183, 5, 116, 0, 0, 1183, 1184, 5, 97, 0, 0, 1184, 1185, 5, 100, 0, 0, 1185, 1186, 5, 97, 0, 0, 1186, 1187, 5, 116, 0, 0, 1187, 1188, 5, 97, 0, 0, 1188, 204, 1, 0, 0, 0, 1189, 1190, 5, 109, 0, 0, 1190, 1191, 5, 117, 0, 0, 1191, 1192, 5, 108, 0, 0, 1192, 1193, 5, 116, 0, 0, 1193, 1194, 5, 105, 0, 0, 1194, 1195, 5, 112, 0, 0, 1195, 1196, 5, 108, 0, 0, 1196, 1197, 5, 105, 0, 0, 1197, 1198, 5, 99, 0, 0, 1198, 1199, 5, 105, 0, 0, 1199, 1200, 5, 116, 0, 0, 1200, 1201, 5, 121, 0, 0, 1201, 206, 1, 0, 0, 0, 1202, 1203, 5, 110, 0, 0, 1203, 1204, 5, 97, 0, 0, 1204, 1205, 5, 109, 0, 0, 1205, 1206, 5, 101, 0, 0, 1206, 1207, 5, 115, 0, 0, 1207, 1208, 5, 112, 0, 0, 1208, 1209, 5, 97, 0, 0, 1209, 1210, 5, 99, 0, 0, 1210, 1211, 5, 101, 0, 0, 1211, 208, 1, 0, 0, 0, 1212, 1213, 5, 110, 0, 0, 1213, 1214, 5, 101, 0, 0, 1214, 1215, 5, 119, 0, 0, 1215, 210, 1, 0, 0, 0, 1216, 1217, 5, 110, 0, 0, 1217, 1218, 5, 111, 0, 0, 1218, 1219, 5, 110, 0, 0, 1219, 1220, 5, 117, 0, 0, 1220, 1221, 5, 110, 0, 0, 1221, 1222, 5, 105, 0, 0, 1222, 1223, 5, 113, 0, 0, 1223, 1224, 5, 117, 0, 0, 1224, 1225, 5, 101, 0, 0, 1225, 212, 1, 0, 0, 0, 1226, 1227, 5, 110, 0, 0, 1227, 1228, 5, 111, 0, 0, 1228, 1229, 5, 116, 0, 0, 1229, 214, 1, 0, 0, 0, 1230, 1231, 5, 110, 0, 0, 1231, 1232, 5, 117, 0, 0, 1232, 1233, 5, 108, 0, 0, 1233, 1234, 5, 108, 0, 0, 1234, 216, 1, 0, 0, 0, 1235, 1236, 5, 111, 0, 0, 1236, 1237, 5, 98, 0, 0, 1237, 1238, 5, 106, 0, 0, 1238, 1239, 5, 101, 0, 0, 1239, 1240, 5, 99, 0, 0, 1240, 1241, 5, 116, 0, 0, 1241, 1242, 5, 105, 0, 0, 1242, 1243, 5, 118, 0, 0, 1243, 1244, 5, 101, 0, 0, 1244, 218, 1, 0, 0, 0, 1245, 1246, 5, 111, 0, 0, 1246, 1247, 5, 99, 0, 0, 1247, 1248, 5, 99, 0, 0, 1248, 1249, 5, 117, 0, 0, 1249, 1250, 5, 114, 0, 0, 1250, 1251, 5, 114, 0, 0, 1251, 1252, 5, 101, 0, 0, 1252, 1253, 5, 110, 0, 0, 1253, 1254, 5, 99, 0, 0, 1254, 1255, 5, 101, 0, 0, 1255, 220, 1, 0, 0, 0, 1256, 1257, 5, 111, 0, 0, 1257, 1258, 5, 102, 0, 0, 1258, 222, 1, 0, 0, 0, 1259, 1260, 5, 111, 0, 0, 1260, 1261, 5, 114, 0, 0, 1261, 224, 1, 0, 0, 0, 1262, 1263, 5, 111, 0, 0, 1263, 1264, 5, 114, 0, 0, 1264, 1265, 5, 100, 0, 0, 1265, 1266, 5, 101, 0, 0, 1266, 1267, 5, 114, 0, 0, 1267, 1268, 5, 101, 0, 0, 1268, 1269, 5, 100, 0, 0, 1269, 226, 1, 0, 0, 0, 1270, 1271, 5, 111, 0, 0, 1271, 1272, 5, 117, 0, 0, 1272, 1273, 5, 116, 0, 0, 1273, 228, 1, 0, 0, 0, 1274, 1275, 5, 112, 0, 0, 1275, 1276, 5, 97, 0, 0, 1276, 1277, 5, 99, 0, 0, 1277, 1278, 5, 107, 0, 0, 1278, 1279, 5, 97, 0, 0, 1279, 1280, 5, 103, 0, 0, 1280, 1281, 5, 101, 0, 0, 1281, 230, 1, 0, 0, 0, 1282, 1283, 5, 112, 0, 0, 1283, 1284, 5, 97, 0, 0, 1284, 1285, 5, 114, 0, 0, 1285, 1286, 5, 97, 0, 0, 1286, 1287, 5, 108, 0, 0, 1287, 1288, 5, 108, 0, 0, 1288, 1289, 5, 101, 0, 0, 1289, 1290, 5, 108, 0, 0, 1290, 232, 1, 0, 0, 0, 1291, 1292, 5, 112, 0, 0, 1292, 1293, 5, 97, 0, 0, 1293, 1294, 5, 114, 0, 0, 1294, 1295, 5, 116, 0, 0, 1295, 234, 1, 0, 0, 0, 1296, 1297, 5, 112, 0, 0, 1297, 1298, 5, 101, 0, 0, 1298, 1299, 5, 114, 0, 0, 1299, 1300, 5, 102, 0, 0, 1300, 1301, 5, 111, 0, 0, 1301, 1302, 5, 114, 0, 0, 1302, 1303, 5, 109, 0, 0, 1303, 236, 1, 0, 0, 0, 1304, 1305, 5, 112, 0, 0, 1305, 1306, 5, 111, 0, 0, 1306, 1307, 5, 114, 0, 0, 1307, 1308, 5, 116, 0, 0, 1308, 238, 1, 0, 0, 0, 1309, 1310, 5, 112, 0, 0, 1310, 1311, 5, 111, 0, 0, 1311, 1312, 5, 114, 0, 0, 1312, 1313, 5, 116, 0, 0, 1313, 1314, 5, 105, 0, 0, 1314, 1315, 5, 111, 0, 0, 1315, 1316, 5, 110, 0, 0, 1316, 240, 1, 0, 0, 0, 1317, 1318, 5, 112, 0, 0, 1318, 1319, 5, 114, 0, 0, 1319, 1320, 5, 101, 0, 0, 1320, 1321, 5, 100, 0, 0, 1321, 1322, 5, 105, 0, 0, 1322, 1323, 5, 99, 0, 0, 1323, 1324, 5, 97, 0, 0, 1324, 1325, 5, 116, 0, 0, 1325, 1326, 5, 101, 0, 0, 1326, 242, 1, 0, 0, 0, 1327, 1328, 5, 112, 0, 0, 1328, 1329, 5, 114, 0, 0, 1329, 1330, 5, 105, 0, 0, 1330, 1331, 5, 118, 0, 0, 1331, 1332, 5, 97, 0, 0, 1332, 1333, 5, 116, 0, 0, 1333, 1334, 5, 101, 0, 0, 1334, 244, 1, 0, 0, 0, 1335, 1336, 5, 112, 0, 0, 1336, 1337, 5, 114, 0, 0, 1337, 1338, 5, 111, 0, 0, 1338, 1339, 5, 116, 0, 0, 1339, 1340, 5, 101, 0, 0, 1340, 1341, 5, 99, 0, 0, 1341, 1342, 5, 116, 0, 0, 1342, 1343, 5, 101, 0, 0, 1343, 1344, 5, 100, 0, 0, 1344, 246, 1, 0, 0, 0, 1345, 1346, 5, 112, 0, 0, 1346, 1347, 5, 117, 0, 0, 1347, 1348, 5, 98, 0, 0, 1348, 1349, 5, 108, 0, 0, 1349, 1350, 5, 105, 0, 0, 1350, 1351, 5, 99, 0, 0, 1351, 248, 1, 0, 0, 0, 1352, 1353, 5, 114, 0, 0, 1353, 1354, 5, 101, 0, 0, 1354, 1355, 5, 100, 0, 0, 1355, 1356, 5, 101, 0, 0, 1356, 1357, 5, 102, 0, 0, 1357, 1358, 5, 105, 0, 0, 1358, 1359, 5, 110, 0, 0, 1359, 1360, 5, 101, 0, 0, 1360, 1361, 5, 115, 0, 0, 1361, 250, 1, 0, 0, 0, 1362, 1363, 5, 114, 0, 0, 1363, 1364, 5, 101, 0, 0, 1364, 1365, 5, 100, 0, 0, 1365, 1366, 5, 101, 0, 0, 1366, 1367, 5, 102, 0, 0, 1367, 1368, 5, 105, 0, 0, 1368, 1369, 5, 110, 0, 0, 1369, 1370, 5, 105, 0, 0, 1370, 1371, 5, 116, 0, 0, 1371, 1372, 5, 105, 0, 0, 1372, 1373, 5, 111, 0, 0, 1373, 1374, 5, 110, 0, 0, 1374, 252, 1, 0, 0, 0, 1375, 1376, 5, 114, 0, 0, 1376, 1377, 5, 101, 0, 0, 1377, 1378, 5, 102, 0, 0, 1378, 254, 1, 0, 0, 0, 1379, 1380, 5, 114, 0, 0, 1380, 1381, 5, 101, 0, 0, 1381, 1382, 5, 102, 0, 0, 1382, 1383, 5, 101, 0, 0, 1383, 1384, 5, 114, 0, 0, 1384, 1385, 5, 101, 0, 0, 1385, 1386, 5, 110, 0, 0, 1386, 1387, 5, 99, 0, 0, 1387, 1388, 5, 101, 0, 0, 1388, 1389, 5, 115, 0, 0, 1389, 256, 1, 0, 0, 0, 1390, 1391, 5, 114, 0, 0, 1391, 1392, 5, 101, 0, 0, 1392, 1393, 5, 110, 0, 0, 1393, 1394, 5, 100, 0, 0, 1394, 1395, 5, 101, 0, 0, 1395, 1396, 5, 114, 0, 0, 1396, 258, 1, 0, 0, 0, 1397, 1398, 5, 114, 0, 0, 1398, 1399, 5, 101, 0, 0, 1399, 1400, 5, 110, 0, 0, 1400, 1401, 5, 100, 0, 0, 1401, 1402, 5, 101, 0, 0, 1402, 1403, 5, 114, 0, 0, 1403, 1404, 5, 105, 0, 0, 1404, 1405, 5, 110, 0, 0, 1405, 1406, 5, 103, 0, 0, 1406, 260, 1, 0, 0, 0, 1407, 1408, 5, 114, 0, 0, 1408, 1409, 5, 101, 0, 0, 1409, 1410, 5, 112, 0, 0, 1410, 262, 1, 0, 0, 0, 1411, 1412, 5, 114, 0, 0, 1412, 1413, 5, 101, 0, 0, 1413, 1414, 5, 113, 0, 0, 1414, 1415, 5, 117, 0, 0, 1415, 1416, 5, 105, 0, 0, 1416, 1417, 5, 114, 0, 0, 1417, 1418, 5, 101, 0, 0, 1418, 264, 1, 0, 0, 0, 1419, 1420, 5, 114, 0, 0, 1420, 1421, 5, 101, 0, 0, 1421, 1422, 5, 113, 0, 0, 1422, 1423, 5, 117, 0, 0, 1423, 1424, 5, 105, 0, 0, 1424, 1425, 5, 114, 0, 0, 1425, 1426, 5, 101, 0, 0, 1426, 1427, 5, 109, 0, 0, 1427, 1428, 5, 101, 0, 0, 1428, 1429, 5, 110, 0, 0, 1429, 1430, 5, 116, 0, 0, 1430, 266, 1, 0, 0, 0, 1431, 1432, 5, 114, 0, 0, 1432, 1433, 5, 101, 0, 0, 1433, 1434, 5, 116, 0, 0, 1434, 1435, 5, 117, 0, 0, 1435, 1436, 5, 114, 0, 0, 1436, 1437, 5, 110, 0, 0, 1437, 268, 1, 0, 0, 0, 1438, 1439, 5, 115, 0, 0, 1439, 1440, 5, 97, 0, 0, 1440, 1441, 5, 116, 0, 0, 1441, 1442, 5, 105, 0, 0, 1442, 1443, 5, 115, 0, 0, 1443, 1444, 5, 102, 0, 0, 1444, 1445, 5, 121, 0, 0, 1445, 270, 1, 0, 0, 0, 1446, 1447, 5, 115, 0, 0, 1447, 1448, 5, 101, 0, 0, 1448, 1449, 5, 110, 0, 0, 1449, 1450, 5, 100, 0, 0, 1450, 272, 1, 0, 0, 0, 1451, 1452, 5, 115, 0, 0, 1452, 1453, 5, 110, 0, 0, 1453, 1454, 5, 97, 0, 0, 1454, 1455, 5, 112, 0, 0, 1455, 1456, 5, 115, 0, 0, 1456, 1457, 5, 104, 0, 0, 1457, 1458, 5, 111, 0, 0, 1458, 1459, 5, 116, 0, 0, 1459, 274, 1, 0, 0, 0, 1460, 1461, 5, 115, 0, 0, 1461, 1462, 5, 112, 0, 0, 1462, 1463, 5, 101, 0, 0, 1463, 1464, 5, 99, 0, 0, 1464, 1465, 5, 105, 0, 0, 1465, 1466, 5, 97, 0, 0, 1466, 1467, 5, 108, 0, 0, 1467, 1468, 5, 105, 0, 0, 1468, 1469, 5, 122, 0, 0, 1469, 1470, 5, 97, 0, 0, 1470, 1471, 5, 116, 0, 0, 1471, 1472, 5, 105, 0, 0, 1472, 1473, 5, 111, 0, 0, 1473, 1474, 5, 110, 0, 0, 1474, 276, 1, 0, 0, 0, 1475, 1476, 5, 115, 0, 0, 1476, 1477, 5, 112, 0, 0, 1477, 1478, 5, 101, 0, 0, 1478, 1479, 5, 99, 0, 0, 1479, 1480, 5, 105, 0, 0, 1480, 1481, 5, 97, 0, 0, 1481, 1482, 5, 108, 0, 0, 1482, 1483, 5, 105, 0, 0, 1483, 1484, 5, 122, 0, 0, 1484, 1485, 5, 101, 0, 0, 1485, 1486, 5, 115, 0, 0, 1486, 278, 1, 0, 0, 0, 1487, 1488, 5, 115, 0, 0, 1488, 1489, 5, 116, 0, 0, 1489, 1490, 5, 97, 0, 0, 1490, 1491, 5, 107, 0, 0, 1491, 1492, 5, 101, 0, 0, 1492, 1493, 5, 104, 0, 0, 1493, 1494, 5, 111, 0, 0, 1494, 1495, 5, 108, 0, 0, 1495, 1496, 5, 100, 0, 0, 1496, 1497, 5, 101, 0, 0, 1497, 1498, 5, 114, 0, 0, 1498, 280, 1, 0, 0, 0, 1499, 1500, 5, 115, 0, 0, 1500, 1501, 5, 116, 0, 0, 1501, 1502, 5, 97, 0, 0, 1502, 1503, 5, 110, 0, 0, 1503, 1504, 5, 100, 0, 0, 1504, 1505, 5, 97, 0, 0, 1505, 1506, 5, 114, 0, 0, 1506, 1507, 5, 100, 0, 0, 1507, 282, 1, 0, 0, 0, 1508, 1509, 5, 115, 0, 0, 1509, 1510, 5, 116, 0, 0, 1510, 1511, 5, 97, 0, 0, 1511, 1512, 5, 116, 0, 0, 1512, 1513, 5, 101, 0, 0, 1513, 284, 1, 0, 0, 0, 1514, 1515, 5, 115, 0, 0, 1515, 1516, 5, 116, 0, 0, 1516, 1517, 5, 101, 0, 0, 1517, 1518, 5, 112, 0, 0, 1518, 286, 1, 0, 0, 0, 1519, 1520, 5, 115, 0, 0, 1520, 1521, 5, 116, 0, 0, 1521, 1522, 5, 114, 0, 0, 1522, 1523, 5, 117, 0, 0, 1523, 1524, 5, 99, 0, 0, 1524, 1525, 5, 116, 0, 0, 1525, 288, 1, 0, 0, 0, 1526, 1527, 5, 115, 0, 0, 1527, 1528, 5, 117, 0, 0, 1528, 1529, 5, 98, 0, 0, 1529, 1530, 5, 99, 0, 0, 1530, 1531, 5, 108, 0, 0, 1531, 1532, 5, 97, 0, 0, 1532, 1533, 5, 115, 0, 0, 1533, 1534, 5, 115, 0, 0, 1534, 1535, 5, 105, 0, 0, 1535, 1536, 5, 102, 0, 0, 1536, 1537, 5, 105, 0, 0, 1537, 1538, 5, 101, 0, 0, 1538, 1539, 5, 114, 0, 0, 1539, 290, 1, 0, 0, 0, 1540, 1541, 5, 115, 0, 0, 1541, 1542, 5, 117, 0, 0, 1542, 1543, 5, 98, 0, 0, 1543, 1544, 5, 106, 0, 0, 1544, 1545, 5, 101, 0, 0, 1545, 1546, 5, 99, 0, 0, 1546, 1547, 5, 116, 0, 0, 1547, 292, 1, 0, 0, 0, 1548, 1549, 5, 115, 0, 0, 1549, 1550, 5, 117, 0, 0, 1550, 1551, 5, 98, 0, 0, 1551, 1552, 5, 115, 0, 0, 1552, 1553, 5, 101, 0, 0, 1553, 1554, 5, 116, 0, 0, 1554, 294, 1, 0, 0, 0, 1555, 1556, 5, 115, 0, 0, 1556, 1557, 5, 117, 0, 0, 1557, 1558, 5, 98, 0, 0, 1558, 1559, 5, 115, 0, 0, 1559, 1560, 5, 101, 0, 0, 1560, 1561, 5, 116, 0, 0, 1561, 1562, 5, 115, 0, 0, 1562, 296, 1, 0, 0, 0, 1563, 1564, 5, 115, 0, 0, 1564, 1565, 5, 117, 0, 0, 1565, 1566, 5, 98, 0, 0, 1566, 1567, 5, 116, 0, 0, 1567, 1568, 5, 121, 0, 0, 1568, 1569, 5, 112, 0, 0, 1569, 1570, 5, 101, 0, 0, 1570, 298, 1, 0, 0, 0, 1571, 1572, 5, 115, 0, 0, 1572, 1573, 5, 117, 0, 0, 1573, 1574, 5, 99, 0, 0, 1574, 1575, 5, 99, 0, 0, 1575, 1576, 5, 101, 0, 0, 1576, 1577, 5, 115, 0, 0, 1577, 1578, 5, 115, 0, 0, 1578, 1579, 5, 105, 0, 0, 1579, 1580, 5, 111, 0, 0, 1580, 1581, 5, 110, 0, 0, 1581, 300, 1, 0, 0, 0, 1582, 1583, 5, 116, 0, 0, 1583, 1584, 5, 101, 0, 0, 1584, 1585, 5, 114, 0, 0, 1585, 1586, 5, 109, 0, 0, 1586, 1587, 5, 105, 0, 0, 1587, 1588, 5, 110, 0, 0, 1588, 1589, 5, 97, 0, 0, 1589, 1590, 5, 116, 0, 0, 1590, 1591, 5, 101, 0, 0, 1591, 302, 1, 0, 0, 0, 1592, 1593, 5, 116, 0, 0, 1593, 1594, 5, 104, 0, 0, 1594, 1595, 5, 101, 0, 0, 1595, 1596, 5, 110, 0, 0, 1596, 304, 1, 0, 0, 0, 1597, 1598, 5, 116, 0, 0, 1598, 1599, 5, 105, 0, 0, 1599, 1600, 5, 109, 0, 0, 1600, 1601, 5, 101, 0, 0, 1601, 1602, 5, 115, 0, 0, 1602, 1603, 5, 108, 0, 0, 1603, 1604, 5, 105, 0, 0, 1604, 1605, 5, 99, 0, 0, 1605, 1606, 5, 101, 0, 0, 1606, 306, 1, 0, 0, 0, 1607, 1608, 5, 116, 0, 0, 1608, 1609, 5, 111, 0, 0, 1609, 308, 1, 0, 0, 0, 1610, 1611, 5, 116, 0, 0, 1611, 1612, 5, 114, 0, 0, 1612, 1613, 5, 97, 0, 0, 1613, 1614, 5, 110, 0, 0, 1614, 1615, 5, 115, 0, 0, 1615, 1616, 5, 105, 0, 0, 1616, 1617, 5, 116, 0, 0, 1617, 1618, 5, 105, 0, 0, 1618, 1619, 5, 111, 0, 0, 1619, 1620, 5, 110, 0, 0, 1620, 310, 1, 0, 0, 0, 1621, 1622, 5, 116, 0, 0, 1622, 1623, 5, 114, 0, 0, 1623, 1624, 5, 117, 0, 0, 1624, 1625, 5, 101, 0, 0, 1625, 312, 1, 0, 0, 0, 1626, 1627, 5, 116, 0, 0, 1627, 1628, 5, 121, 0, 0, 1628, 1629, 5, 112, 0, 0, 1629, 1630, 5, 101, 0, 0, 1630, 314, 1, 0, 0, 0, 1631, 1632, 5, 116, 0, 0, 1632, 1633, 5, 121, 0, 0, 1633, 1634, 5, 112, 0, 0, 1634, 1635, 5, 101, 0, 0, 1635, 1636, 5, 100, 0, 0, 1636, 316, 1, 0, 0, 0, 1637, 1638, 5, 116, 0, 0, 1638, 1639, 5, 121, 0, 0, 1639, 1640, 5, 112, 0, 0, 1640, 1641, 5, 105, 0, 0, 1641, 1642, 5, 110, 0, 0, 1642, 1643, 5, 103, 0, 0, 1643, 318, 1, 0, 0, 0, 1644, 1645, 5, 117, 0, 0, 1645, 1646, 5, 110, 0, 0, 1646, 1647, 5, 105, 0, 0, 1647, 1648, 5, 111, 0, 0, 1648, 1649, 5, 110, 0, 0, 1649, 1650, 5, 115, 0, 0, 1650, 320, 1, 0, 0, 0, 1651, 1652, 5, 117, 0, 0, 1652, 1653, 5, 110, 0, 0, 1653, 1654, 5, 116, 0, 0, 1654, 1655, 5, 105, 0, 0, 1655, 1656, 5, 108, 0, 0, 1656, 322, 1, 0, 0, 0, 1657, 1658, 5, 117, 0, 0, 1658, 1659, 5, 115, 0, 0, 1659, 1660, 5, 101, 0, 0, 1660, 324, 1, 0, 0, 0, 1661, 1662, 5, 118, 0, 0, 1662, 1663, 5, 97, 0, 0, 1663, 1664, 5, 114, 0, 0, 1664, 326, 1, 0, 0, 0, 1665, 1666, 5, 118, 0, 0, 1666, 1667, 5, 97, 0, 0, 1667, 1668, 5, 114, 0, 0, 1668, 1669, 5, 105, 0, 0, 1669, 1670, 5, 97, 0, 0, 1670, 1671, 5, 110, 0, 0, 1671, 1672, 5, 116, 0, 0, 1672, 328, 1, 0, 0, 0, 1673, 1674, 5, 118, 0, 0, 1674, 1675, 5, 97, 0, 0, 1675, 1676, 5, 114, 0, 0, 1676, 1677, 5, 105, 0, 0, 1677, 1678, 5, 97, 0, 0, 1678, 1679, 5, 116, 0, 0, 1679, 1680, 5, 105, 0, 0, 1680, 1681, 5, 111, 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 330, 1, 0, 0, 0, 1683, 1684, 5, 118, 0, 0, 1684, 1685, 5, 101, 0, 0, 1685, 1686, 5, 114, 0, 0, 1686, 1687, 5, 105, 0, 0, 1687, 1688, 5, 102, 0, 0, 1688, 1689, 5, 105, 0, 0, 1689, 1690, 5, 99, 0, 0, 1690, 1691, 5, 97, 0, 0, 1691, 1692, 5, 116, 0, 0, 1692, 1693, 5, 105, 0, 0, 1693, 1694, 5, 111, 0, 0, 1694, 1695, 5, 110, 0, 0, 1695, 332, 1, 0, 0, 0, 1696, 1697, 5, 118, 0, 0, 1697, 1698, 5, 101, 0, 0, 1698, 1699, 5, 114, 0, 0, 1699, 1700, 5, 105, 0, 0, 1700, 1701, 5, 102, 0, 0, 1701, 1702, 5, 121, 0, 0, 1702, 334, 1, 0, 0, 0, 1703, 1704, 5, 118, 0, 0, 1704, 1705, 5, 105, 0, 0, 1705, 1706, 5, 97, 0, 0, 1706, 336, 1, 0, 0, 0, 1707, 1708, 5, 118, 0, 0, 1708, 1709, 5, 105, 0, 0, 1709, 1710, 5, 101, 0, 0, 1710, 1711, 5, 119, 0, 0, 1711, 338, 1, 0, 0, 0, 1712, 1713, 5, 118, 0, 0, 1713, 1714, 5, 105, 0, 0, 1714, 1715, 5, 101, 0, 0, 1715, 1716, 5, 119, 0, 0, 1716, 1717, 5, 112, 0, 0, 1717, 1718, 5, 111, 0, 0, 1718, 1719, 5, 105, 0, 0, 1719, 1720, 5, 110, 0, 0, 1720, 1721, 5, 116, 0, 0, 1721, 340, 1, 0, 0, 0, 1722, 1723, 5, 119, 0, 0, 1723, 1724, 5, 104, 0, 0, 1724, 1725, 5, 101, 0, 0, 1725, 1726, 5, 110, 0, 0, 1726, 342, 1, 0, 0, 0, 1727, 1728, 5, 119, 0, 0, 1728, 1729, 5, 104, 0, 0, 1729, 1730, 5, 105, 0, 0, 1730, 1731, 5, 108, 0, 0, 1731, 1732, 5, 101, 0, 0, 1732, 344, 1, 0, 0, 0, 1733, 1734, 5, 120, 0, 0, 1734, 1735, 5, 111, 0, 0, 1735, 1736, 5, 114, 0, 0, 1736, 346, 1, 0, 0, 0, 1737, 1738, 5, 33, 0, 0, 1738, 1739, 5, 61, 0, 0, 1739, 1740, 5, 61, 0, 0, 1740, 348, 1, 0, 0, 0, 1741, 1742, 5, 58, 0, 0, 1742, 1743, 5, 58, 0, 0, 1743, 1744, 5, 62, 0, 0, 1744, 350, 1, 0, 0, 0, 1745, 1746, 5, 58, 0, 0, 1746, 1747, 5, 62, 0, 0, 1747, 1748, 5, 62, 0, 0, 1748, 352, 1, 0, 0, 0, 1749, 1750, 5, 61, 0, 0, 1750, 1751, 5, 61, 0, 0, 1751, 1752, 5, 61, 0, 0, 1752, 354, 1, 0, 0, 0, 1753, 1754, 5, 33, 0, 0, 1754, 1755, 5, 61, 0, 0, 1755, 356, 1, 0, 0, 0, 1756, 1757, 5, 42, 0, 0, 1757, 1758, 5, 42, 0, 0, 1758, 358, 1, 0, 0, 0, 1759, 1760, 5, 45, 0, 0, 1760, 1761, 5, 62, 0, 0, 1761, 360, 1, 0, 0, 0, 1762, 1763, 5, 46, 0, 0, 1763, 1764, 5, 46, 0, 0, 1764, 362, 1, 0, 0, 0, 1765, 1766, 5, 46, 0, 0, 1766, 1767, 5, 63, 0, 0, 1767, 364, 1, 0, 0, 0, 1768, 1769, 5, 58, 0, 0, 1769, 1770, 5, 58, 0, 0, 1770, 366, 1, 0, 0, 0, 1771, 1772, 5, 58, 0, 0, 1772, 1773, 5, 61, 0, 0, 1773, 368, 1, 0, 0, 0, 1774, 1775, 5, 58, 0, 0, 1775, 1776, 5, 62, 0, 0, 1776, 370, 1, 0, 0, 0, 1777, 1778, 5, 60, 0, 0, 1778, 1779, 5, 61, 0, 0, 1779, 372, 1, 0, 0, 0, 1780, 1781, 5, 61, 0, 0, 1781, 1782, 5, 61, 0, 0, 1782, 374, 1, 0, 0, 0, 1783, 1784, 5, 61, 0, 0, 1784, 1785, 5, 62, 0, 0, 1785, 376, 1, 0, 0, 0, 1786, 1787, 5, 62, 0, 0, 1787, 1788, 5, 61, 0, 0, 1788, 378, 1, 0, 0, 0, 1789, 1790, 5, 63, 0, 0, 1790, 1791, 5, 63, 0, 0, 1791, 380, 1, 0, 0, 0, 1792, 1793, 5, 64, 0, 0, 1793, 1794, 5, 64, 0, 0, 1794, 382, 1, 0, 0, 0, 1795, 1796, 5, 35, 0, 0, 1796, 384, 1, 0, 0, 0, 1797, 1798, 5, 36, 0, 0, 1798, 386, 1, 0, 0, 0, 1799, 1800, 5, 37, 0, 0, 1800, 388, 1, 0, 0, 0, 1801, 1802, 5, 38, 0, 0, 1802, 390, 1, 0, 0, 0, 1803, 1804, 5, 40, 0, 0, 1804, 392, 1, 0, 0, 0, 1805, 1806, 5, 41, 0, 0, 1806, 394, 1, 0, 0, 0, 1807, 1808, 5, 42, 0, 0, 1808, 396, 1, 0, 0, 0, 1809, 1810, 5, 43, 0, 0, 1810, 398, 1, 0, 0, 0, 1811, 1812, 5, 44, 0, 0, 1812, 400, 1, 0, 0, 0, 1813, 1814, 5, 45, 0, 0, 1814, 402, 1, 0, 0, 0, 1815, 1816, 5, 46, 0, 0, 1816, 404, 1, 0, 0, 0, 1817, 1818, 5, 47, 0, 0, 1818, 406, 1, 0, 0, 0, 1819, 1820, 5, 58, 0, 0, 1820, 408, 1, 0, 0, 0, 1821, 1822, 5, 59, 0, 0, 1822, 410, 1, 0, 0, 0, 1823, 1824, 5, 60, 0, 0, 1824, 412, 1, 0, 0, 0, 1825, 1826, 5, 61, 0, 0, 1826, 414, 1, 0, 0, 0, 1827, 1828, 5, 62, 0, 0, 1828, 416, 1, 0, 0, 0, 1829, 1830, 5, 63, 0, 0, 1830, 418, 1, 0, 0, 0, 1831, 1832, 5, 64, 0, 0, 1832, 420, 1, 0, 0, 0, 1833, 1834, 5, 91, 0, 0, 1834, 422, 1, 0, 0, 0, 1835, 1836, 5, 93, 0, 0, 1836, 424, 1, 0, 0, 0, 1837, 1838, 5, 94, 0, 0, 1838, 426, 1, 0, 0, 0, 1839, 1840, 5, 123, 0, 0, 1840, 428, 1, 0, 0, 0, 1841, 1842, 5, 124, 0, 0, 1842, 430, 1, 0, 0, 0, 1843, 1844, 5, 125, 0, 0, 1844, 432, 1, 0, 0, 0, 1845, 1846, 5, 126, 0, 0, 1846, 434, 1, 0, 0, 0, 1847, 1851, 7, 0, 0, 0, 1848, 1850, 7, 1, 0, 0, 1849, 1848, 1, 0, 0, 0, 1850, 1853, 1, 0, 0, 0, 1851, 1849, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 436, 1, 0, 0, 0, 1853, 1851, 1, 0, 0, 0, 1854, 1860, 5, 39, 0, 0, 1855, 1856, 5, 92, 0, 0, 1856, 1859, 9, 0, 0, 0, 1857, 1859, 8, 2, 0, 0, 1858, 1855, 1, 0, 0, 0, 1858, 1857, 1, 0, 0, 0, 1859, 1862, 1, 0, 0, 0, 1860, 1858, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1863, 1, 0, 0, 0, 1862, 1860, 1, 0, 0, 0, 1863, 1864, 5, 39, 0, 0, 1864, 438, 1, 0, 0, 0, 1865, 1871, 5, 34, 0, 0, 1866, 1867, 5, 92, 0, 0, 1867, 1870, 9, 0, 0, 0, 1868, 1870, 8, 3, 0, 0, 1869, 1866, 1, 0, 0, 0, 1869, 1868, 1, 0, 0, 0, 1870, 1873, 1, 0, 0, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1874, 1, 0, 0, 0, 1873, 1871, 1, 0, 0, 0, 1874, 1875, 5, 34, 0, 0, 1875, 440, 1, 0, 0, 0, 1876, 1878, 7, 4, 0, 0, 1877, 1876, 1, 0, 0, 0, 1878, 1879, 1, 0, 0, 0, 1879, 1877, 1, 0, 0, 0, 1879, 1880, 1, 0, 0, 0, 1880, 442, 1, 0, 0, 0, 1881, 1883, 7, 4, 0, 0, 1882, 1881, 1, 0, 0, 0, 1883, 1886, 1, 0, 0, 0, 1884, 1882, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1887, 1, 0, 0, 0, 1886, 1884, 1, 0, 0, 0, 1887, 1889, 5, 46, 0, 0, 1888, 1890, 7, 4, 0, 0, 1889, 1888, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 1889, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1902, 1, 0, 0, 0, 1893, 1895, 7, 5, 0, 0, 1894, 1896, 7, 6, 0, 0, 1895, 1894, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1898, 1, 0, 0, 0, 1897, 1899, 7, 4, 0, 0, 1898, 1897, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1898, 1, 0, 0, 0, 1900, 1901, 1, 0, 0, 0, 1901, 1903, 1, 0, 0, 0, 1902, 1893, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1919, 1, 0, 0, 0, 1904, 1906, 7, 4, 0, 0, 1905, 1904, 1, 0, 0, 0, 1906, 1907, 1, 0, 0, 0, 1907, 1905, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 1911, 7, 5, 0, 0, 1910, 1912, 7, 6, 0, 0, 1911, 1910, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 1, 0, 0, 0, 1913, 1915, 7, 4, 0, 0, 1914, 1913, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1919, 1, 0, 0, 0, 1918, 1884, 1, 0, 0, 0, 1918, 1905, 1, 0, 0, 0, 1919, 444, 1, 0, 0, 0, 1920, 1921, 5, 47, 0, 0, 1921, 1922, 5, 42, 0, 0, 1922, 1926, 1, 0, 0, 0, 1923, 1925, 9, 0, 0, 0, 1924, 1923, 1, 0, 0, 0, 1925, 1928, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1926, 1924, 1, 0, 0, 0, 1927, 1929, 1, 0, 0, 0, 1928, 1926, 1, 0, 0, 0, 1929, 1930, 5, 42, 0, 0, 1930, 1931, 5, 47, 0, 0, 1931, 446, 1, 0, 0, 0, 1932, 1933, 5, 47, 0, 0, 1933, 1934, 5, 47, 0, 0, 1934, 1938, 1, 0, 0, 0, 1935, 1937, 8, 7, 0, 0, 1936, 1935, 1, 0, 0, 0, 1937, 1940, 1, 0, 0, 0, 1938, 1936, 1, 0, 0, 0, 1938, 1939, 1, 0, 0, 0, 1939, 1941, 1, 0, 0, 0, 1940, 1938, 1, 0, 0, 0, 1941, 1942, 6, 223, 0, 0, 1942, 448, 1, 0, 0, 0, 1943, 1945, 7, 8, 0, 0, 1944, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1944, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 1948, 1, 0, 0, 0, 1948, 1949, 6, 224, 0, 0, 1949, 450, 1, 0, 0, 0, 19, 0, 1851, 1858, 1860, 1869, 1871, 1879, 1884, 1891, 1895, 1900, 1902, 1907, 1911, 1916, 1918, 1926, 1938, 1946, 1, 6, 0, 0] \ No newline at end of file diff --git a/src/parser/generated/grammar/SysMLv2Lexer.tokens b/src/parser/generated/grammar/SysMLv2Lexer.tokens deleted file mode 100644 index 0d5e3aa..0000000 --- a/src/parser/generated/grammar/SysMLv2Lexer.tokens +++ /dev/null @@ -1,442 +0,0 @@ -ABOUT=1 -ABSTRACT=2 -ACCEPT=3 -ACTION=4 -ACTOR=5 -AFTER=6 -ALIAS=7 -ALL=8 -ALLOCATE=9 -ALLOCATION=10 -ANALYSIS=11 -AND=12 -AS=13 -ASSERT=14 -ASSIGN=15 -ASSOC=16 -ASSUME=17 -AT=18 -ATTRIBUTE=19 -BEHAVIOR=20 -BIND=21 -BINDING=22 -BOOL=23 -BY=24 -CALC=25 -CASE=26 -CHAINS=27 -CLASS=28 -CLASSIFIER=29 -COMMENT=30 -COMPOSITE=31 -CONCERN=32 -CONJUGATE=33 -CONJUGATES=34 -CONJUGATION=35 -CONNECT=36 -CONNECTION=37 -CONNECTOR=38 -CONST=39 -CONSTANT=40 -CONSTRAINT=41 -CROSSES=42 -DATATYPE=43 -DECIDE=44 -DEF=45 -DEFAULT=46 -DEFINED=47 -DEPENDENCY=48 -DERIVED=49 -DIFFERENCES=50 -DISJOINING=51 -DISJOINT=52 -DO=53 -DOC=54 -ELSE=55 -END=56 -ENTRY=57 -ENUM=58 -EVENT=59 -EXHIBIT=60 -EXIT=61 -EXPOSE=62 -EXPR=63 -FALSE=64 -FEATURE=65 -FEATURED=66 -FEATURING=67 -FILTER=68 -FIRST=69 -FLOW=70 -FOR=71 -FORK=72 -FRAME=73 -FROM=74 -FUNCTION=75 -HASTYPE=76 -IF=77 -IMPLIES=78 -IMPORT=79 -IN=80 -INCLUDE=81 -INDIVIDUAL=82 -INOUT=83 -INTERACTION=84 -INTERFACE=85 -INTERSECTS=86 -INV=87 -INVERSE=88 -INVERTING=89 -ISTYPE=90 -ITEM=91 -JOIN=92 -LANGUAGE=93 -LIBRARY=94 -LOCALE=95 -LOOP=96 -MEMBER=97 -MERGE=98 -MESSAGE=99 -META=100 -METACLASS=101 -METADATA=102 -MULTIPLICITY=103 -NAMESPACE=104 -NEW=105 -NONUNIQUE=106 -NOT=107 -NULL=108 -OBJECTIVE=109 -OCCURRENCE=110 -OF=111 -OR=112 -ORDERED=113 -OUT=114 -PACKAGE=115 -PARALLEL=116 -PART=117 -PERFORM=118 -PORT=119 -PORTION=120 -PREDICATE=121 -PRIVATE=122 -PROTECTED=123 -PUBLIC=124 -REDEFINES=125 -REDEFINITION=126 -REF=127 -REFERENCES=128 -RENDER=129 -RENDERING=130 -REP=131 -REQUIRE=132 -REQUIREMENT=133 -RETURN=134 -SATISFY=135 -SEND=136 -SNAPSHOT=137 -SPECIALIZATION=138 -SPECIALIZES=139 -STAKEHOLDER=140 -STANDARD=141 -STATE=142 -STEP=143 -STRUCT=144 -SUBCLASSIFIER=145 -SUBJECT=146 -SUBSET=147 -SUBSETS=148 -SUBTYPE=149 -SUCCESSION=150 -TERMINATE=151 -THEN=152 -TIMESLICE=153 -TO=154 -TRANSITION=155 -TRUE=156 -TYPE=157 -TYPED=158 -TYPING=159 -UNIONS=160 -UNTIL=161 -USE=162 -VAR=163 -VARIANT=164 -VARIATION=165 -VERIFICATION=166 -VERIFY=167 -VIA=168 -VIEW=169 -VIEWPOINT=170 -WHEN=171 -WHILE=172 -XOR=173 -BANG_EQ_EQ=174 -COLON_COLON_GT=175 -COLON_GT_GT=176 -EQ_EQ_EQ=177 -BANG_EQ=178 -STAR_STAR=179 -ARROW=180 -DOT_DOT=181 -DOT_QUESTION=182 -COLON_COLON=183 -COLON_EQ=184 -COLON_GT=185 -LE=186 -EQ_EQ=187 -FAT_ARROW=188 -GE=189 -QUESTION_QUESTION=190 -AT_AT=191 -HASH=192 -DOLLAR=193 -PERCENT=194 -AMP=195 -LPAREN=196 -RPAREN=197 -STAR=198 -PLUS=199 -COMMA=200 -MINUS=201 -DOT=202 -SLASH=203 -COLON=204 -SEMI=205 -LT=206 -EQ=207 -GT=208 -QUESTION=209 -AT_SIGN=210 -LBRACK=211 -RBRACK=212 -CARET=213 -LBRACE=214 -PIPE=215 -RBRACE=216 -TILDE=217 -IDENTIFIER=218 -STRING=219 -DOUBLE_STRING=220 -INTEGER=221 -REAL=222 -REGULAR_COMMENT=223 -SINGLE_LINE_NOTE=224 -WS=225 -'about'=1 -'abstract'=2 -'accept'=3 -'action'=4 -'actor'=5 -'after'=6 -'alias'=7 -'all'=8 -'allocate'=9 -'allocation'=10 -'analysis'=11 -'and'=12 -'as'=13 -'assert'=14 -'assign'=15 -'assoc'=16 -'assume'=17 -'at'=18 -'attribute'=19 -'behavior'=20 -'bind'=21 -'binding'=22 -'bool'=23 -'by'=24 -'calc'=25 -'case'=26 -'chains'=27 -'class'=28 -'classifier'=29 -'comment'=30 -'composite'=31 -'concern'=32 -'conjugate'=33 -'conjugates'=34 -'conjugation'=35 -'connect'=36 -'connection'=37 -'connector'=38 -'const'=39 -'constant'=40 -'constraint'=41 -'crosses'=42 -'datatype'=43 -'decide'=44 -'def'=45 -'default'=46 -'defined'=47 -'dependency'=48 -'derived'=49 -'differences'=50 -'disjoining'=51 -'disjoint'=52 -'do'=53 -'doc'=54 -'else'=55 -'end'=56 -'entry'=57 -'enum'=58 -'event'=59 -'exhibit'=60 -'exit'=61 -'expose'=62 -'expr'=63 -'false'=64 -'feature'=65 -'featured'=66 -'featuring'=67 -'filter'=68 -'first'=69 -'flow'=70 -'for'=71 -'fork'=72 -'frame'=73 -'from'=74 -'function'=75 -'hastype'=76 -'if'=77 -'implies'=78 -'import'=79 -'in'=80 -'include'=81 -'individual'=82 -'inout'=83 -'interaction'=84 -'interface'=85 -'intersects'=86 -'inv'=87 -'inverse'=88 -'inverting'=89 -'istype'=90 -'item'=91 -'join'=92 -'language'=93 -'library'=94 -'locale'=95 -'loop'=96 -'member'=97 -'merge'=98 -'message'=99 -'meta'=100 -'metaclass'=101 -'metadata'=102 -'multiplicity'=103 -'namespace'=104 -'new'=105 -'nonunique'=106 -'not'=107 -'null'=108 -'objective'=109 -'occurrence'=110 -'of'=111 -'or'=112 -'ordered'=113 -'out'=114 -'package'=115 -'parallel'=116 -'part'=117 -'perform'=118 -'port'=119 -'portion'=120 -'predicate'=121 -'private'=122 -'protected'=123 -'public'=124 -'redefines'=125 -'redefinition'=126 -'ref'=127 -'references'=128 -'render'=129 -'rendering'=130 -'rep'=131 -'require'=132 -'requirement'=133 -'return'=134 -'satisfy'=135 -'send'=136 -'snapshot'=137 -'specialization'=138 -'specializes'=139 -'stakeholder'=140 -'standard'=141 -'state'=142 -'step'=143 -'struct'=144 -'subclassifier'=145 -'subject'=146 -'subset'=147 -'subsets'=148 -'subtype'=149 -'succession'=150 -'terminate'=151 -'then'=152 -'timeslice'=153 -'to'=154 -'transition'=155 -'true'=156 -'type'=157 -'typed'=158 -'typing'=159 -'unions'=160 -'until'=161 -'use'=162 -'var'=163 -'variant'=164 -'variation'=165 -'verification'=166 -'verify'=167 -'via'=168 -'view'=169 -'viewpoint'=170 -'when'=171 -'while'=172 -'xor'=173 -'!=='=174 -'::>'=175 -':>>'=176 -'==='=177 -'!='=178 -'**'=179 -'->'=180 -'..'=181 -'.?'=182 -'::'=183 -':='=184 -':>'=185 -'<='=186 -'=='=187 -'=>'=188 -'>='=189 -'??'=190 -'@@'=191 -'#'=192 -'$'=193 -'%'=194 -'&'=195 -'('=196 -')'=197 -'*'=198 -'+'=199 -','=200 -'-'=201 -'.'=202 -'/'=203 -':'=204 -';'=205 -'<'=206 -'='=207 -'>'=208 -'?'=209 -'@'=210 -'['=211 -']'=212 -'^'=213 -'{'=214 -'|'=215 -'}'=216 -'~'=217 diff --git a/src/parser/generated/grammar/SysMLv2Lexer.ts b/src/parser/generated/grammar/SysMLv2Lexer.ts deleted file mode 100644 index 479530a..0000000 --- a/src/parser/generated/grammar/SysMLv2Lexer.ts +++ /dev/null @@ -1,1272 +0,0 @@ -// Generated from SysMLv2Lexer.g4 by ANTLR 4.13.2 -// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols -import { - ATN, - ATNDeserializer, - CharStream, - DecisionState, DFA, - Lexer, - LexerATNSimulator, - RuleContext, - PredictionContextCache, - Token -} from "antlr4"; -export class SysMLv2Lexer extends Lexer { - public static readonly ABOUT = 1; - public static readonly ABSTRACT = 2; - public static readonly ACCEPT = 3; - public static readonly ACTION = 4; - public static readonly ACTOR = 5; - public static readonly AFTER = 6; - public static readonly ALIAS = 7; - public static readonly ALL = 8; - public static readonly ALLOCATE = 9; - public static readonly ALLOCATION = 10; - public static readonly ANALYSIS = 11; - public static readonly AND = 12; - public static readonly AS = 13; - public static readonly ASSERT = 14; - public static readonly ASSIGN = 15; - public static readonly ASSOC = 16; - public static readonly ASSUME = 17; - public static readonly AT = 18; - public static readonly ATTRIBUTE = 19; - public static readonly BEHAVIOR = 20; - public static readonly BIND = 21; - public static readonly BINDING = 22; - public static readonly BOOL = 23; - public static readonly BY = 24; - public static readonly CALC = 25; - public static readonly CASE = 26; - public static readonly CHAINS = 27; - public static readonly CLASS = 28; - public static readonly CLASSIFIER = 29; - public static readonly COMMENT = 30; - public static readonly COMPOSITE = 31; - public static readonly CONCERN = 32; - public static readonly CONJUGATE = 33; - public static readonly CONJUGATES = 34; - public static readonly CONJUGATION = 35; - public static readonly CONNECT = 36; - public static readonly CONNECTION = 37; - public static readonly CONNECTOR = 38; - public static readonly CONST = 39; - public static readonly CONSTANT = 40; - public static readonly CONSTRAINT = 41; - public static readonly CROSSES = 42; - public static readonly DATATYPE = 43; - public static readonly DECIDE = 44; - public static readonly DEF = 45; - public static readonly DEFAULT = 46; - public static readonly DEFINED = 47; - public static readonly DEPENDENCY = 48; - public static readonly DERIVED = 49; - public static readonly DIFFERENCES = 50; - public static readonly DISJOINING = 51; - public static readonly DISJOINT = 52; - public static readonly DO = 53; - public static readonly DOC = 54; - public static readonly ELSE = 55; - public static readonly END = 56; - public static readonly ENTRY = 57; - public static readonly ENUM = 58; - public static readonly EVENT = 59; - public static readonly EXHIBIT = 60; - public static readonly EXIT = 61; - public static readonly EXPOSE = 62; - public static readonly EXPR = 63; - public static readonly FALSE = 64; - public static readonly FEATURE = 65; - public static readonly FEATURED = 66; - public static readonly FEATURING = 67; - public static readonly FILTER = 68; - public static readonly FIRST = 69; - public static readonly FLOW = 70; - public static readonly FOR = 71; - public static readonly FORK = 72; - public static readonly FRAME = 73; - public static readonly FROM = 74; - public static readonly FUNCTION = 75; - public static readonly HASTYPE = 76; - public static readonly IF = 77; - public static readonly IMPLIES = 78; - public static readonly IMPORT = 79; - public static readonly IN = 80; - public static readonly INCLUDE = 81; - public static readonly INDIVIDUAL = 82; - public static readonly INOUT = 83; - public static readonly INTERACTION = 84; - public static readonly INTERFACE = 85; - public static readonly INTERSECTS = 86; - public static readonly INV = 87; - public static readonly INVERSE = 88; - public static readonly INVERTING = 89; - public static readonly ISTYPE = 90; - public static readonly ITEM = 91; - public static readonly JOIN = 92; - public static readonly LANGUAGE = 93; - public static readonly LIBRARY = 94; - public static readonly LOCALE = 95; - public static readonly LOOP = 96; - public static readonly MEMBER = 97; - public static readonly MERGE = 98; - public static readonly MESSAGE = 99; - public static readonly META = 100; - public static readonly METACLASS = 101; - public static readonly METADATA = 102; - public static readonly MULTIPLICITY = 103; - public static readonly NAMESPACE = 104; - public static readonly NEW = 105; - public static readonly NONUNIQUE = 106; - public static readonly NOT = 107; - public static readonly NULL = 108; - public static readonly OBJECTIVE = 109; - public static readonly OCCURRENCE = 110; - public static readonly OF = 111; - public static readonly OR = 112; - public static readonly ORDERED = 113; - public static readonly OUT = 114; - public static readonly PACKAGE = 115; - public static readonly PARALLEL = 116; - public static readonly PART = 117; - public static readonly PERFORM = 118; - public static readonly PORT = 119; - public static readonly PORTION = 120; - public static readonly PREDICATE = 121; - public static readonly PRIVATE = 122; - public static readonly PROTECTED = 123; - public static readonly PUBLIC = 124; - public static readonly REDEFINES = 125; - public static readonly REDEFINITION = 126; - public static readonly REF = 127; - public static readonly REFERENCES = 128; - public static readonly RENDER = 129; - public static readonly RENDERING = 130; - public static readonly REP = 131; - public static readonly REQUIRE = 132; - public static readonly REQUIREMENT = 133; - public static readonly RETURN = 134; - public static readonly SATISFY = 135; - public static readonly SEND = 136; - public static readonly SNAPSHOT = 137; - public static readonly SPECIALIZATION = 138; - public static readonly SPECIALIZES = 139; - public static readonly STAKEHOLDER = 140; - public static readonly STANDARD = 141; - public static readonly STATE = 142; - public static readonly STEP = 143; - public static readonly STRUCT = 144; - public static readonly SUBCLASSIFIER = 145; - public static readonly SUBJECT = 146; - public static readonly SUBSET = 147; - public static readonly SUBSETS = 148; - public static readonly SUBTYPE = 149; - public static readonly SUCCESSION = 150; - public static readonly TERMINATE = 151; - public static readonly THEN = 152; - public static readonly TIMESLICE = 153; - public static readonly TO = 154; - public static readonly TRANSITION = 155; - public static readonly TRUE = 156; - public static readonly TYPE = 157; - public static readonly TYPED = 158; - public static readonly TYPING = 159; - public static readonly UNIONS = 160; - public static readonly UNTIL = 161; - public static readonly USE = 162; - public static readonly VAR = 163; - public static readonly VARIANT = 164; - public static readonly VARIATION = 165; - public static readonly VERIFICATION = 166; - public static readonly VERIFY = 167; - public static readonly VIA = 168; - public static readonly VIEW = 169; - public static readonly VIEWPOINT = 170; - public static readonly WHEN = 171; - public static readonly WHILE = 172; - public static readonly XOR = 173; - public static readonly BANG_EQ_EQ = 174; - public static readonly COLON_COLON_GT = 175; - public static readonly COLON_GT_GT = 176; - public static readonly EQ_EQ_EQ = 177; - public static readonly BANG_EQ = 178; - public static readonly STAR_STAR = 179; - public static readonly ARROW = 180; - public static readonly DOT_DOT = 181; - public static readonly DOT_QUESTION = 182; - public static readonly COLON_COLON = 183; - public static readonly COLON_EQ = 184; - public static readonly COLON_GT = 185; - public static readonly LE = 186; - public static readonly EQ_EQ = 187; - public static readonly FAT_ARROW = 188; - public static readonly GE = 189; - public static readonly QUESTION_QUESTION = 190; - public static readonly AT_AT = 191; - public static readonly HASH = 192; - public static readonly DOLLAR = 193; - public static readonly PERCENT = 194; - public static readonly AMP = 195; - public static readonly LPAREN = 196; - public static readonly RPAREN = 197; - public static readonly STAR = 198; - public static readonly PLUS = 199; - public static readonly COMMA = 200; - public static readonly MINUS = 201; - public static readonly DOT = 202; - public static readonly SLASH = 203; - public static readonly COLON = 204; - public static readonly SEMI = 205; - public static readonly LT = 206; - public static readonly EQ = 207; - public static readonly GT = 208; - public static readonly QUESTION = 209; - public static readonly AT_SIGN = 210; - public static readonly LBRACK = 211; - public static readonly RBRACK = 212; - public static readonly CARET = 213; - public static readonly LBRACE = 214; - public static readonly PIPE = 215; - public static readonly RBRACE = 216; - public static readonly TILDE = 217; - public static readonly IDENTIFIER = 218; - public static readonly STRING = 219; - public static readonly DOUBLE_STRING = 220; - public static readonly INTEGER = 221; - public static readonly REAL = 222; - public static readonly REGULAR_COMMENT = 223; - public static readonly SINGLE_LINE_NOTE = 224; - public static readonly WS = 225; - public static readonly EOF = Token.EOF; - - public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; - public static readonly literalNames: (string | null)[] = [ null, "'about'", - "'abstract'", - "'accept'", - "'action'", - "'actor'", "'after'", - "'alias'", "'all'", - "'allocate'", - "'allocation'", - "'analysis'", - "'and'", "'as'", - "'assert'", - "'assign'", - "'assoc'", "'assume'", - "'at'", "'attribute'", - "'behavior'", - "'bind'", "'binding'", - "'bool'", "'by'", - "'calc'", "'case'", - "'chains'", - "'class'", "'classifier'", - "'comment'", - "'composite'", - "'concern'", - "'conjugate'", - "'conjugates'", - "'conjugation'", - "'connect'", - "'connection'", - "'connector'", - "'const'", "'constant'", - "'constraint'", - "'crosses'", - "'datatype'", - "'decide'", - "'def'", "'default'", - "'defined'", - "'dependency'", - "'derived'", - "'differences'", - "'disjoining'", - "'disjoint'", - "'do'", "'doc'", - "'else'", "'end'", - "'entry'", "'enum'", - "'event'", "'exhibit'", - "'exit'", "'expose'", - "'expr'", "'false'", - "'feature'", - "'featured'", - "'featuring'", - "'filter'", - "'first'", "'flow'", - "'for'", "'fork'", - "'frame'", "'from'", - "'function'", - "'hastype'", - "'if'", "'implies'", - "'import'", - "'in'", "'include'", - "'individual'", - "'inout'", "'interaction'", - "'interface'", - "'intersects'", - "'inv'", "'inverse'", - "'inverting'", - "'istype'", - "'item'", "'join'", - "'language'", - "'library'", - "'locale'", - "'loop'", "'member'", - "'merge'", "'message'", - "'meta'", "'metaclass'", - "'metadata'", - "'multiplicity'", - "'namespace'", - "'new'", "'nonunique'", - "'not'", "'null'", - "'objective'", - "'occurrence'", - "'of'", "'or'", - "'ordered'", - "'out'", "'package'", - "'parallel'", - "'part'", "'perform'", - "'port'", "'portion'", - "'predicate'", - "'private'", - "'protected'", - "'public'", - "'redefines'", - "'redefinition'", - "'ref'", "'references'", - "'render'", - "'rendering'", - "'rep'", "'require'", - "'requirement'", - "'return'", - "'satisfy'", - "'send'", "'snapshot'", - "'specialization'", - "'specializes'", - "'stakeholder'", - "'standard'", - "'state'", "'step'", - "'struct'", - "'subclassifier'", - "'subject'", - "'subset'", - "'subsets'", - "'subtype'", - "'succession'", - "'terminate'", - "'then'", "'timeslice'", - "'to'", "'transition'", - "'true'", "'type'", - "'typed'", "'typing'", - "'unions'", - "'until'", "'use'", - "'var'", "'variant'", - "'variation'", - "'verification'", - "'verify'", - "'via'", "'view'", - "'viewpoint'", - "'when'", "'while'", - "'xor'", "'!=='", - "'::>'", "':>>'", - "'==='", "'!='", - "'**'", "'->'", - "'..'", "'.?'", - "'::'", "':='", - "':>'", "'<='", - "'=='", "'=>'", - "'>='", "'??'", - "'@@'", "'#'", - "'$'", "'%'", - "'&'", "'('", - "')'", "'*'", - "'+'", "','", - "'-'", "'.'", - "'/'", "':'", - "';'", "'<'", - "'='", "'>'", - "'?'", "'@'", - "'['", "']'", - "'^'", "'{'", - "'|'", "'}'", - "'~'" ]; - public static readonly symbolicNames: (string | null)[] = [ null, "ABOUT", - "ABSTRACT", - "ACCEPT", "ACTION", - "ACTOR", "AFTER", - "ALIAS", "ALL", - "ALLOCATE", - "ALLOCATION", - "ANALYSIS", - "AND", "AS", - "ASSERT", "ASSIGN", - "ASSOC", "ASSUME", - "AT", "ATTRIBUTE", - "BEHAVIOR", - "BIND", "BINDING", - "BOOL", "BY", - "CALC", "CASE", - "CHAINS", "CLASS", - "CLASSIFIER", - "COMMENT", - "COMPOSITE", - "CONCERN", - "CONJUGATE", - "CONJUGATES", - "CONJUGATION", - "CONNECT", - "CONNECTION", - "CONNECTOR", - "CONST", "CONSTANT", - "CONSTRAINT", - "CROSSES", - "DATATYPE", - "DECIDE", "DEF", - "DEFAULT", - "DEFINED", - "DEPENDENCY", - "DERIVED", - "DIFFERENCES", - "DISJOINING", - "DISJOINT", - "DO", "DOC", - "ELSE", "END", - "ENTRY", "ENUM", - "EVENT", "EXHIBIT", - "EXIT", "EXPOSE", - "EXPR", "FALSE", - "FEATURE", - "FEATURED", - "FEATURING", - "FILTER", "FIRST", - "FLOW", "FOR", - "FORK", "FRAME", - "FROM", "FUNCTION", - "HASTYPE", - "IF", "IMPLIES", - "IMPORT", "IN", - "INCLUDE", - "INDIVIDUAL", - "INOUT", "INTERACTION", - "INTERFACE", - "INTERSECTS", - "INV", "INVERSE", - "INVERTING", - "ISTYPE", "ITEM", - "JOIN", "LANGUAGE", - "LIBRARY", - "LOCALE", "LOOP", - "MEMBER", "MERGE", - "MESSAGE", - "META", "METACLASS", - "METADATA", - "MULTIPLICITY", - "NAMESPACE", - "NEW", "NONUNIQUE", - "NOT", "NULL", - "OBJECTIVE", - "OCCURRENCE", - "OF", "OR", - "ORDERED", - "OUT", "PACKAGE", - "PARALLEL", - "PART", "PERFORM", - "PORT", "PORTION", - "PREDICATE", - "PRIVATE", - "PROTECTED", - "PUBLIC", "REDEFINES", - "REDEFINITION", - "REF", "REFERENCES", - "RENDER", "RENDERING", - "REP", "REQUIRE", - "REQUIREMENT", - "RETURN", "SATISFY", - "SEND", "SNAPSHOT", - "SPECIALIZATION", - "SPECIALIZES", - "STAKEHOLDER", - "STANDARD", - "STATE", "STEP", - "STRUCT", "SUBCLASSIFIER", - "SUBJECT", - "SUBSET", "SUBSETS", - "SUBTYPE", - "SUCCESSION", - "TERMINATE", - "THEN", "TIMESLICE", - "TO", "TRANSITION", - "TRUE", "TYPE", - "TYPED", "TYPING", - "UNIONS", "UNTIL", - "USE", "VAR", - "VARIANT", - "VARIATION", - "VERIFICATION", - "VERIFY", "VIA", - "VIEW", "VIEWPOINT", - "WHEN", "WHILE", - "XOR", "BANG_EQ_EQ", - "COLON_COLON_GT", - "COLON_GT_GT", - "EQ_EQ_EQ", - "BANG_EQ", - "STAR_STAR", - "ARROW", "DOT_DOT", - "DOT_QUESTION", - "COLON_COLON", - "COLON_EQ", - "COLON_GT", - "LE", "EQ_EQ", - "FAT_ARROW", - "GE", "QUESTION_QUESTION", - "AT_AT", "HASH", - "DOLLAR", "PERCENT", - "AMP", "LPAREN", - "RPAREN", "STAR", - "PLUS", "COMMA", - "MINUS", "DOT", - "SLASH", "COLON", - "SEMI", "LT", - "EQ", "GT", - "QUESTION", - "AT_SIGN", - "LBRACK", "RBRACK", - "CARET", "LBRACE", - "PIPE", "RBRACE", - "TILDE", "IDENTIFIER", - "STRING", "DOUBLE_STRING", - "INTEGER", - "REAL", "REGULAR_COMMENT", - "SINGLE_LINE_NOTE", - "WS" ]; - public static readonly modeNames: string[] = [ "DEFAULT_MODE", ]; - - public static readonly ruleNames: string[] = [ - "ABOUT", "ABSTRACT", "ACCEPT", "ACTION", "ACTOR", "AFTER", "ALIAS", "ALL", - "ALLOCATE", "ALLOCATION", "ANALYSIS", "AND", "AS", "ASSERT", "ASSIGN", - "ASSOC", "ASSUME", "AT", "ATTRIBUTE", "BEHAVIOR", "BIND", "BINDING", "BOOL", - "BY", "CALC", "CASE", "CHAINS", "CLASS", "CLASSIFIER", "COMMENT", "COMPOSITE", - "CONCERN", "CONJUGATE", "CONJUGATES", "CONJUGATION", "CONNECT", "CONNECTION", - "CONNECTOR", "CONST", "CONSTANT", "CONSTRAINT", "CROSSES", "DATATYPE", - "DECIDE", "DEF", "DEFAULT", "DEFINED", "DEPENDENCY", "DERIVED", "DIFFERENCES", - "DISJOINING", "DISJOINT", "DO", "DOC", "ELSE", "END", "ENTRY", "ENUM", - "EVENT", "EXHIBIT", "EXIT", "EXPOSE", "EXPR", "FALSE", "FEATURE", "FEATURED", - "FEATURING", "FILTER", "FIRST", "FLOW", "FOR", "FORK", "FRAME", "FROM", - "FUNCTION", "HASTYPE", "IF", "IMPLIES", "IMPORT", "IN", "INCLUDE", "INDIVIDUAL", - "INOUT", "INTERACTION", "INTERFACE", "INTERSECTS", "INV", "INVERSE", "INVERTING", - "ISTYPE", "ITEM", "JOIN", "LANGUAGE", "LIBRARY", "LOCALE", "LOOP", "MEMBER", - "MERGE", "MESSAGE", "META", "METACLASS", "METADATA", "MULTIPLICITY", "NAMESPACE", - "NEW", "NONUNIQUE", "NOT", "NULL", "OBJECTIVE", "OCCURRENCE", "OF", "OR", - "ORDERED", "OUT", "PACKAGE", "PARALLEL", "PART", "PERFORM", "PORT", "PORTION", - "PREDICATE", "PRIVATE", "PROTECTED", "PUBLIC", "REDEFINES", "REDEFINITION", - "REF", "REFERENCES", "RENDER", "RENDERING", "REP", "REQUIRE", "REQUIREMENT", - "RETURN", "SATISFY", "SEND", "SNAPSHOT", "SPECIALIZATION", "SPECIALIZES", - "STAKEHOLDER", "STANDARD", "STATE", "STEP", "STRUCT", "SUBCLASSIFIER", - "SUBJECT", "SUBSET", "SUBSETS", "SUBTYPE", "SUCCESSION", "TERMINATE", - "THEN", "TIMESLICE", "TO", "TRANSITION", "TRUE", "TYPE", "TYPED", "TYPING", - "UNIONS", "UNTIL", "USE", "VAR", "VARIANT", "VARIATION", "VERIFICATION", - "VERIFY", "VIA", "VIEW", "VIEWPOINT", "WHEN", "WHILE", "XOR", "BANG_EQ_EQ", - "COLON_COLON_GT", "COLON_GT_GT", "EQ_EQ_EQ", "BANG_EQ", "STAR_STAR", "ARROW", - "DOT_DOT", "DOT_QUESTION", "COLON_COLON", "COLON_EQ", "COLON_GT", "LE", - "EQ_EQ", "FAT_ARROW", "GE", "QUESTION_QUESTION", "AT_AT", "HASH", "DOLLAR", - "PERCENT", "AMP", "LPAREN", "RPAREN", "STAR", "PLUS", "COMMA", "MINUS", - "DOT", "SLASH", "COLON", "SEMI", "LT", "EQ", "GT", "QUESTION", "AT_SIGN", - "LBRACK", "RBRACK", "CARET", "LBRACE", "PIPE", "RBRACE", "TILDE", "IDENTIFIER", - "STRING", "DOUBLE_STRING", "INTEGER", "REAL", "REGULAR_COMMENT", "SINGLE_LINE_NOTE", - "WS", - ]; - - - constructor(input: CharStream) { - super(input); - this._interp = new LexerATNSimulator(this, SysMLv2Lexer._ATN, SysMLv2Lexer.DecisionsToDFA, new PredictionContextCache()); - } - - public get grammarFileName(): string { return "SysMLv2Lexer.g4"; } - - public get literalNames(): (string | null)[] { return SysMLv2Lexer.literalNames; } - public get symbolicNames(): (string | null)[] { return SysMLv2Lexer.symbolicNames; } - public get ruleNames(): string[] { return SysMLv2Lexer.ruleNames; } - - public get serializedATN(): number[] { return SysMLv2Lexer._serializedATN; } - - public get channelNames(): string[] { return SysMLv2Lexer.channelNames; } - - public get modeNames(): string[] { return SysMLv2Lexer.modeNames; } - - public static readonly _serializedATN: number[] = [4,0,225,1950,6,-1,2, - 0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2, - 9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16, - 7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7, - 23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30, - 2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2, - 38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45, - 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, - 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59, - 2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2, - 67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74, - 7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7, - 81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88, - 2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2, - 96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102, - 2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, - 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114, - 2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120, - 2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126, - 2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132, - 2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138, - 2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144, - 2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150, - 2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156, - 2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162, - 2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168, - 2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, - 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180, - 2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186, - 2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192, - 2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198, - 2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204, - 2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210, - 2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216, - 2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222, - 2,223,7,223,2,224,7,224,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4, - 1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7, - 1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9, - 1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1, - 11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14, - 1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1, - 16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, - 1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1, - 20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22, - 1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,26,1, - 26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28, - 1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1, - 29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31, - 1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, - 32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34, - 1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1, - 35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37, - 1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1, - 38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40, - 1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1, - 42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43, - 1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1, - 46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47, - 1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1, - 49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50, - 1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1, - 52,1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55, - 1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1, - 58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60, - 1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1, - 63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65, - 1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1, - 66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68, - 1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1, - 71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74, - 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1, - 75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78, - 1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1, - 80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82, - 1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1, - 83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85, - 1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1, - 87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88, - 1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1, - 91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93, - 1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1, - 95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97, - 1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1, - 100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1, - 101,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1, - 102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1, - 103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1, - 105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1, - 107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1, - 108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1, - 109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1, - 112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1, - 114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1, - 115,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1, - 117,1,117,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1, - 119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1, - 120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1, - 122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1, - 123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1, - 125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1, - 125,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1, - 127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1, - 129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1, - 130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1, - 132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1, - 133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1, - 135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1, - 136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1, - 137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1, - 138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1, - 139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, - 140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1, - 142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1, - 144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1, - 145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1, - 146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1, - 148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1, - 149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1, - 150,1,150,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1, - 152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1, - 154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1, - 156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1, - 158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1, - 159,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1, - 162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1, - 164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1, - 165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1, - 166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1, - 168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1, - 170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1, - 172,1,172,1,172,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,175,1, - 175,1,175,1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178,1, - 178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182,1,182,1, - 182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185,1,186,1,186,1, - 186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189,1,189,1,190,1,190,1, - 190,1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196,1, - 196,1,197,1,197,1,198,1,198,1,199,1,199,1,200,1,200,1,201,1,201,1,202,1, - 202,1,203,1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208,1, - 208,1,209,1,209,1,210,1,210,1,211,1,211,1,212,1,212,1,213,1,213,1,214,1, - 214,1,215,1,215,1,216,1,216,1,217,1,217,5,217,1850,8,217,10,217,12,217, - 1853,9,217,1,218,1,218,1,218,1,218,5,218,1859,8,218,10,218,12,218,1862, - 9,218,1,218,1,218,1,219,1,219,1,219,1,219,5,219,1870,8,219,10,219,12,219, - 1873,9,219,1,219,1,219,1,220,4,220,1878,8,220,11,220,12,220,1879,1,221, - 5,221,1883,8,221,10,221,12,221,1886,9,221,1,221,1,221,4,221,1890,8,221, - 11,221,12,221,1891,1,221,1,221,3,221,1896,8,221,1,221,4,221,1899,8,221, - 11,221,12,221,1900,3,221,1903,8,221,1,221,4,221,1906,8,221,11,221,12,221, - 1907,1,221,1,221,3,221,1912,8,221,1,221,4,221,1915,8,221,11,221,12,221, - 1916,3,221,1919,8,221,1,222,1,222,1,222,1,222,5,222,1925,8,222,10,222,12, - 222,1928,9,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,5,223,1937,8,223, - 10,223,12,223,1940,9,223,1,223,1,223,1,224,4,224,1945,8,224,11,224,12,224, - 1946,1,224,1,224,1,1926,0,225,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19, - 10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43, - 22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67, - 34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91, - 46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, - 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67, - 135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155, - 78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88, - 177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197, - 99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215, - 108,217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233, - 117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251, - 126,253,127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269, - 135,271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287, - 144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305, - 153,307,154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323, - 162,325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341, - 171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359, - 180,361,181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377, - 189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393,197,395, - 198,397,199,399,200,401,201,403,202,405,203,407,204,409,205,411,206,413, - 207,415,208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431, - 216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447,224,449, - 225,1,0,9,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,2,0,39,39, - 92,92,2,0,34,34,92,92,1,0,48,57,2,0,69,69,101,101,2,0,43,43,45,45,2,0,10, - 10,13,13,3,0,9,10,13,13,32,32,1967,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0, - 0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0, - 0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0, - 29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0, - 0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0, - 51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0, - 0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0, - 73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0, - 0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0, - 95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105, - 1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1, - 0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0, - 0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0, - 0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0, - 0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0, - 157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167, - 1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1, - 0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0, - 0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0, - 0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0, - 0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0, - 219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229, - 1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1, - 0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0, - 0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0, - 0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0, - 0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0, - 281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291, - 1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1, - 0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0, - 0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0, - 0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0, - 0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0, - 343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353, - 1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1, - 0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0, - 0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0, - 0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0, - 0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0, - 405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415, - 1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1, - 0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0, - 0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0, - 0,0,447,1,0,0,0,0,449,1,0,0,0,1,451,1,0,0,0,3,457,1,0,0,0,5,466,1,0,0,0, - 7,473,1,0,0,0,9,480,1,0,0,0,11,486,1,0,0,0,13,492,1,0,0,0,15,498,1,0,0, - 0,17,502,1,0,0,0,19,511,1,0,0,0,21,522,1,0,0,0,23,531,1,0,0,0,25,535,1, - 0,0,0,27,538,1,0,0,0,29,545,1,0,0,0,31,552,1,0,0,0,33,558,1,0,0,0,35,565, - 1,0,0,0,37,568,1,0,0,0,39,578,1,0,0,0,41,587,1,0,0,0,43,592,1,0,0,0,45, - 600,1,0,0,0,47,605,1,0,0,0,49,608,1,0,0,0,51,613,1,0,0,0,53,618,1,0,0,0, - 55,625,1,0,0,0,57,631,1,0,0,0,59,642,1,0,0,0,61,650,1,0,0,0,63,660,1,0, - 0,0,65,668,1,0,0,0,67,678,1,0,0,0,69,689,1,0,0,0,71,701,1,0,0,0,73,709, - 1,0,0,0,75,720,1,0,0,0,77,730,1,0,0,0,79,736,1,0,0,0,81,745,1,0,0,0,83, - 756,1,0,0,0,85,764,1,0,0,0,87,773,1,0,0,0,89,780,1,0,0,0,91,784,1,0,0,0, - 93,792,1,0,0,0,95,800,1,0,0,0,97,811,1,0,0,0,99,819,1,0,0,0,101,831,1,0, - 0,0,103,842,1,0,0,0,105,851,1,0,0,0,107,854,1,0,0,0,109,858,1,0,0,0,111, - 863,1,0,0,0,113,867,1,0,0,0,115,873,1,0,0,0,117,878,1,0,0,0,119,884,1,0, - 0,0,121,892,1,0,0,0,123,897,1,0,0,0,125,904,1,0,0,0,127,909,1,0,0,0,129, - 915,1,0,0,0,131,923,1,0,0,0,133,932,1,0,0,0,135,942,1,0,0,0,137,949,1,0, - 0,0,139,955,1,0,0,0,141,960,1,0,0,0,143,964,1,0,0,0,145,969,1,0,0,0,147, - 975,1,0,0,0,149,980,1,0,0,0,151,989,1,0,0,0,153,997,1,0,0,0,155,1000,1, - 0,0,0,157,1008,1,0,0,0,159,1015,1,0,0,0,161,1018,1,0,0,0,163,1026,1,0,0, - 0,165,1037,1,0,0,0,167,1043,1,0,0,0,169,1055,1,0,0,0,171,1065,1,0,0,0,173, - 1076,1,0,0,0,175,1080,1,0,0,0,177,1088,1,0,0,0,179,1098,1,0,0,0,181,1105, - 1,0,0,0,183,1110,1,0,0,0,185,1115,1,0,0,0,187,1124,1,0,0,0,189,1132,1,0, - 0,0,191,1139,1,0,0,0,193,1144,1,0,0,0,195,1151,1,0,0,0,197,1157,1,0,0,0, - 199,1165,1,0,0,0,201,1170,1,0,0,0,203,1180,1,0,0,0,205,1189,1,0,0,0,207, - 1202,1,0,0,0,209,1212,1,0,0,0,211,1216,1,0,0,0,213,1226,1,0,0,0,215,1230, - 1,0,0,0,217,1235,1,0,0,0,219,1245,1,0,0,0,221,1256,1,0,0,0,223,1259,1,0, - 0,0,225,1262,1,0,0,0,227,1270,1,0,0,0,229,1274,1,0,0,0,231,1282,1,0,0,0, - 233,1291,1,0,0,0,235,1296,1,0,0,0,237,1304,1,0,0,0,239,1309,1,0,0,0,241, - 1317,1,0,0,0,243,1327,1,0,0,0,245,1335,1,0,0,0,247,1345,1,0,0,0,249,1352, - 1,0,0,0,251,1362,1,0,0,0,253,1375,1,0,0,0,255,1379,1,0,0,0,257,1390,1,0, - 0,0,259,1397,1,0,0,0,261,1407,1,0,0,0,263,1411,1,0,0,0,265,1419,1,0,0,0, - 267,1431,1,0,0,0,269,1438,1,0,0,0,271,1446,1,0,0,0,273,1451,1,0,0,0,275, - 1460,1,0,0,0,277,1475,1,0,0,0,279,1487,1,0,0,0,281,1499,1,0,0,0,283,1508, - 1,0,0,0,285,1514,1,0,0,0,287,1519,1,0,0,0,289,1526,1,0,0,0,291,1540,1,0, - 0,0,293,1548,1,0,0,0,295,1555,1,0,0,0,297,1563,1,0,0,0,299,1571,1,0,0,0, - 301,1582,1,0,0,0,303,1592,1,0,0,0,305,1597,1,0,0,0,307,1607,1,0,0,0,309, - 1610,1,0,0,0,311,1621,1,0,0,0,313,1626,1,0,0,0,315,1631,1,0,0,0,317,1637, - 1,0,0,0,319,1644,1,0,0,0,321,1651,1,0,0,0,323,1657,1,0,0,0,325,1661,1,0, - 0,0,327,1665,1,0,0,0,329,1673,1,0,0,0,331,1683,1,0,0,0,333,1696,1,0,0,0, - 335,1703,1,0,0,0,337,1707,1,0,0,0,339,1712,1,0,0,0,341,1722,1,0,0,0,343, - 1727,1,0,0,0,345,1733,1,0,0,0,347,1737,1,0,0,0,349,1741,1,0,0,0,351,1745, - 1,0,0,0,353,1749,1,0,0,0,355,1753,1,0,0,0,357,1756,1,0,0,0,359,1759,1,0, - 0,0,361,1762,1,0,0,0,363,1765,1,0,0,0,365,1768,1,0,0,0,367,1771,1,0,0,0, - 369,1774,1,0,0,0,371,1777,1,0,0,0,373,1780,1,0,0,0,375,1783,1,0,0,0,377, - 1786,1,0,0,0,379,1789,1,0,0,0,381,1792,1,0,0,0,383,1795,1,0,0,0,385,1797, - 1,0,0,0,387,1799,1,0,0,0,389,1801,1,0,0,0,391,1803,1,0,0,0,393,1805,1,0, - 0,0,395,1807,1,0,0,0,397,1809,1,0,0,0,399,1811,1,0,0,0,401,1813,1,0,0,0, - 403,1815,1,0,0,0,405,1817,1,0,0,0,407,1819,1,0,0,0,409,1821,1,0,0,0,411, - 1823,1,0,0,0,413,1825,1,0,0,0,415,1827,1,0,0,0,417,1829,1,0,0,0,419,1831, - 1,0,0,0,421,1833,1,0,0,0,423,1835,1,0,0,0,425,1837,1,0,0,0,427,1839,1,0, - 0,0,429,1841,1,0,0,0,431,1843,1,0,0,0,433,1845,1,0,0,0,435,1847,1,0,0,0, - 437,1854,1,0,0,0,439,1865,1,0,0,0,441,1877,1,0,0,0,443,1918,1,0,0,0,445, - 1920,1,0,0,0,447,1932,1,0,0,0,449,1944,1,0,0,0,451,452,5,97,0,0,452,453, - 5,98,0,0,453,454,5,111,0,0,454,455,5,117,0,0,455,456,5,116,0,0,456,2,1, - 0,0,0,457,458,5,97,0,0,458,459,5,98,0,0,459,460,5,115,0,0,460,461,5,116, - 0,0,461,462,5,114,0,0,462,463,5,97,0,0,463,464,5,99,0,0,464,465,5,116,0, - 0,465,4,1,0,0,0,466,467,5,97,0,0,467,468,5,99,0,0,468,469,5,99,0,0,469, - 470,5,101,0,0,470,471,5,112,0,0,471,472,5,116,0,0,472,6,1,0,0,0,473,474, - 5,97,0,0,474,475,5,99,0,0,475,476,5,116,0,0,476,477,5,105,0,0,477,478,5, - 111,0,0,478,479,5,110,0,0,479,8,1,0,0,0,480,481,5,97,0,0,481,482,5,99,0, - 0,482,483,5,116,0,0,483,484,5,111,0,0,484,485,5,114,0,0,485,10,1,0,0,0, - 486,487,5,97,0,0,487,488,5,102,0,0,488,489,5,116,0,0,489,490,5,101,0,0, - 490,491,5,114,0,0,491,12,1,0,0,0,492,493,5,97,0,0,493,494,5,108,0,0,494, - 495,5,105,0,0,495,496,5,97,0,0,496,497,5,115,0,0,497,14,1,0,0,0,498,499, - 5,97,0,0,499,500,5,108,0,0,500,501,5,108,0,0,501,16,1,0,0,0,502,503,5,97, - 0,0,503,504,5,108,0,0,504,505,5,108,0,0,505,506,5,111,0,0,506,507,5,99, - 0,0,507,508,5,97,0,0,508,509,5,116,0,0,509,510,5,101,0,0,510,18,1,0,0,0, - 511,512,5,97,0,0,512,513,5,108,0,0,513,514,5,108,0,0,514,515,5,111,0,0, - 515,516,5,99,0,0,516,517,5,97,0,0,517,518,5,116,0,0,518,519,5,105,0,0,519, - 520,5,111,0,0,520,521,5,110,0,0,521,20,1,0,0,0,522,523,5,97,0,0,523,524, - 5,110,0,0,524,525,5,97,0,0,525,526,5,108,0,0,526,527,5,121,0,0,527,528, - 5,115,0,0,528,529,5,105,0,0,529,530,5,115,0,0,530,22,1,0,0,0,531,532,5, - 97,0,0,532,533,5,110,0,0,533,534,5,100,0,0,534,24,1,0,0,0,535,536,5,97, - 0,0,536,537,5,115,0,0,537,26,1,0,0,0,538,539,5,97,0,0,539,540,5,115,0,0, - 540,541,5,115,0,0,541,542,5,101,0,0,542,543,5,114,0,0,543,544,5,116,0,0, - 544,28,1,0,0,0,545,546,5,97,0,0,546,547,5,115,0,0,547,548,5,115,0,0,548, - 549,5,105,0,0,549,550,5,103,0,0,550,551,5,110,0,0,551,30,1,0,0,0,552,553, - 5,97,0,0,553,554,5,115,0,0,554,555,5,115,0,0,555,556,5,111,0,0,556,557, - 5,99,0,0,557,32,1,0,0,0,558,559,5,97,0,0,559,560,5,115,0,0,560,561,5,115, - 0,0,561,562,5,117,0,0,562,563,5,109,0,0,563,564,5,101,0,0,564,34,1,0,0, - 0,565,566,5,97,0,0,566,567,5,116,0,0,567,36,1,0,0,0,568,569,5,97,0,0,569, - 570,5,116,0,0,570,571,5,116,0,0,571,572,5,114,0,0,572,573,5,105,0,0,573, - 574,5,98,0,0,574,575,5,117,0,0,575,576,5,116,0,0,576,577,5,101,0,0,577, - 38,1,0,0,0,578,579,5,98,0,0,579,580,5,101,0,0,580,581,5,104,0,0,581,582, - 5,97,0,0,582,583,5,118,0,0,583,584,5,105,0,0,584,585,5,111,0,0,585,586, - 5,114,0,0,586,40,1,0,0,0,587,588,5,98,0,0,588,589,5,105,0,0,589,590,5,110, - 0,0,590,591,5,100,0,0,591,42,1,0,0,0,592,593,5,98,0,0,593,594,5,105,0,0, - 594,595,5,110,0,0,595,596,5,100,0,0,596,597,5,105,0,0,597,598,5,110,0,0, - 598,599,5,103,0,0,599,44,1,0,0,0,600,601,5,98,0,0,601,602,5,111,0,0,602, - 603,5,111,0,0,603,604,5,108,0,0,604,46,1,0,0,0,605,606,5,98,0,0,606,607, - 5,121,0,0,607,48,1,0,0,0,608,609,5,99,0,0,609,610,5,97,0,0,610,611,5,108, - 0,0,611,612,5,99,0,0,612,50,1,0,0,0,613,614,5,99,0,0,614,615,5,97,0,0,615, - 616,5,115,0,0,616,617,5,101,0,0,617,52,1,0,0,0,618,619,5,99,0,0,619,620, - 5,104,0,0,620,621,5,97,0,0,621,622,5,105,0,0,622,623,5,110,0,0,623,624, - 5,115,0,0,624,54,1,0,0,0,625,626,5,99,0,0,626,627,5,108,0,0,627,628,5,97, - 0,0,628,629,5,115,0,0,629,630,5,115,0,0,630,56,1,0,0,0,631,632,5,99,0,0, - 632,633,5,108,0,0,633,634,5,97,0,0,634,635,5,115,0,0,635,636,5,115,0,0, - 636,637,5,105,0,0,637,638,5,102,0,0,638,639,5,105,0,0,639,640,5,101,0,0, - 640,641,5,114,0,0,641,58,1,0,0,0,642,643,5,99,0,0,643,644,5,111,0,0,644, - 645,5,109,0,0,645,646,5,109,0,0,646,647,5,101,0,0,647,648,5,110,0,0,648, - 649,5,116,0,0,649,60,1,0,0,0,650,651,5,99,0,0,651,652,5,111,0,0,652,653, - 5,109,0,0,653,654,5,112,0,0,654,655,5,111,0,0,655,656,5,115,0,0,656,657, - 5,105,0,0,657,658,5,116,0,0,658,659,5,101,0,0,659,62,1,0,0,0,660,661,5, - 99,0,0,661,662,5,111,0,0,662,663,5,110,0,0,663,664,5,99,0,0,664,665,5,101, - 0,0,665,666,5,114,0,0,666,667,5,110,0,0,667,64,1,0,0,0,668,669,5,99,0,0, - 669,670,5,111,0,0,670,671,5,110,0,0,671,672,5,106,0,0,672,673,5,117,0,0, - 673,674,5,103,0,0,674,675,5,97,0,0,675,676,5,116,0,0,676,677,5,101,0,0, - 677,66,1,0,0,0,678,679,5,99,0,0,679,680,5,111,0,0,680,681,5,110,0,0,681, - 682,5,106,0,0,682,683,5,117,0,0,683,684,5,103,0,0,684,685,5,97,0,0,685, - 686,5,116,0,0,686,687,5,101,0,0,687,688,5,115,0,0,688,68,1,0,0,0,689,690, - 5,99,0,0,690,691,5,111,0,0,691,692,5,110,0,0,692,693,5,106,0,0,693,694, - 5,117,0,0,694,695,5,103,0,0,695,696,5,97,0,0,696,697,5,116,0,0,697,698, - 5,105,0,0,698,699,5,111,0,0,699,700,5,110,0,0,700,70,1,0,0,0,701,702,5, - 99,0,0,702,703,5,111,0,0,703,704,5,110,0,0,704,705,5,110,0,0,705,706,5, - 101,0,0,706,707,5,99,0,0,707,708,5,116,0,0,708,72,1,0,0,0,709,710,5,99, - 0,0,710,711,5,111,0,0,711,712,5,110,0,0,712,713,5,110,0,0,713,714,5,101, - 0,0,714,715,5,99,0,0,715,716,5,116,0,0,716,717,5,105,0,0,717,718,5,111, - 0,0,718,719,5,110,0,0,719,74,1,0,0,0,720,721,5,99,0,0,721,722,5,111,0,0, - 722,723,5,110,0,0,723,724,5,110,0,0,724,725,5,101,0,0,725,726,5,99,0,0, - 726,727,5,116,0,0,727,728,5,111,0,0,728,729,5,114,0,0,729,76,1,0,0,0,730, - 731,5,99,0,0,731,732,5,111,0,0,732,733,5,110,0,0,733,734,5,115,0,0,734, - 735,5,116,0,0,735,78,1,0,0,0,736,737,5,99,0,0,737,738,5,111,0,0,738,739, - 5,110,0,0,739,740,5,115,0,0,740,741,5,116,0,0,741,742,5,97,0,0,742,743, - 5,110,0,0,743,744,5,116,0,0,744,80,1,0,0,0,745,746,5,99,0,0,746,747,5,111, - 0,0,747,748,5,110,0,0,748,749,5,115,0,0,749,750,5,116,0,0,750,751,5,114, - 0,0,751,752,5,97,0,0,752,753,5,105,0,0,753,754,5,110,0,0,754,755,5,116, - 0,0,755,82,1,0,0,0,756,757,5,99,0,0,757,758,5,114,0,0,758,759,5,111,0,0, - 759,760,5,115,0,0,760,761,5,115,0,0,761,762,5,101,0,0,762,763,5,115,0,0, - 763,84,1,0,0,0,764,765,5,100,0,0,765,766,5,97,0,0,766,767,5,116,0,0,767, - 768,5,97,0,0,768,769,5,116,0,0,769,770,5,121,0,0,770,771,5,112,0,0,771, - 772,5,101,0,0,772,86,1,0,0,0,773,774,5,100,0,0,774,775,5,101,0,0,775,776, - 5,99,0,0,776,777,5,105,0,0,777,778,5,100,0,0,778,779,5,101,0,0,779,88,1, - 0,0,0,780,781,5,100,0,0,781,782,5,101,0,0,782,783,5,102,0,0,783,90,1,0, - 0,0,784,785,5,100,0,0,785,786,5,101,0,0,786,787,5,102,0,0,787,788,5,97, - 0,0,788,789,5,117,0,0,789,790,5,108,0,0,790,791,5,116,0,0,791,92,1,0,0, - 0,792,793,5,100,0,0,793,794,5,101,0,0,794,795,5,102,0,0,795,796,5,105,0, - 0,796,797,5,110,0,0,797,798,5,101,0,0,798,799,5,100,0,0,799,94,1,0,0,0, - 800,801,5,100,0,0,801,802,5,101,0,0,802,803,5,112,0,0,803,804,5,101,0,0, - 804,805,5,110,0,0,805,806,5,100,0,0,806,807,5,101,0,0,807,808,5,110,0,0, - 808,809,5,99,0,0,809,810,5,121,0,0,810,96,1,0,0,0,811,812,5,100,0,0,812, - 813,5,101,0,0,813,814,5,114,0,0,814,815,5,105,0,0,815,816,5,118,0,0,816, - 817,5,101,0,0,817,818,5,100,0,0,818,98,1,0,0,0,819,820,5,100,0,0,820,821, - 5,105,0,0,821,822,5,102,0,0,822,823,5,102,0,0,823,824,5,101,0,0,824,825, - 5,114,0,0,825,826,5,101,0,0,826,827,5,110,0,0,827,828,5,99,0,0,828,829, - 5,101,0,0,829,830,5,115,0,0,830,100,1,0,0,0,831,832,5,100,0,0,832,833,5, - 105,0,0,833,834,5,115,0,0,834,835,5,106,0,0,835,836,5,111,0,0,836,837,5, - 105,0,0,837,838,5,110,0,0,838,839,5,105,0,0,839,840,5,110,0,0,840,841,5, - 103,0,0,841,102,1,0,0,0,842,843,5,100,0,0,843,844,5,105,0,0,844,845,5,115, - 0,0,845,846,5,106,0,0,846,847,5,111,0,0,847,848,5,105,0,0,848,849,5,110, - 0,0,849,850,5,116,0,0,850,104,1,0,0,0,851,852,5,100,0,0,852,853,5,111,0, - 0,853,106,1,0,0,0,854,855,5,100,0,0,855,856,5,111,0,0,856,857,5,99,0,0, - 857,108,1,0,0,0,858,859,5,101,0,0,859,860,5,108,0,0,860,861,5,115,0,0,861, - 862,5,101,0,0,862,110,1,0,0,0,863,864,5,101,0,0,864,865,5,110,0,0,865,866, - 5,100,0,0,866,112,1,0,0,0,867,868,5,101,0,0,868,869,5,110,0,0,869,870,5, - 116,0,0,870,871,5,114,0,0,871,872,5,121,0,0,872,114,1,0,0,0,873,874,5,101, - 0,0,874,875,5,110,0,0,875,876,5,117,0,0,876,877,5,109,0,0,877,116,1,0,0, - 0,878,879,5,101,0,0,879,880,5,118,0,0,880,881,5,101,0,0,881,882,5,110,0, - 0,882,883,5,116,0,0,883,118,1,0,0,0,884,885,5,101,0,0,885,886,5,120,0,0, - 886,887,5,104,0,0,887,888,5,105,0,0,888,889,5,98,0,0,889,890,5,105,0,0, - 890,891,5,116,0,0,891,120,1,0,0,0,892,893,5,101,0,0,893,894,5,120,0,0,894, - 895,5,105,0,0,895,896,5,116,0,0,896,122,1,0,0,0,897,898,5,101,0,0,898,899, - 5,120,0,0,899,900,5,112,0,0,900,901,5,111,0,0,901,902,5,115,0,0,902,903, - 5,101,0,0,903,124,1,0,0,0,904,905,5,101,0,0,905,906,5,120,0,0,906,907,5, - 112,0,0,907,908,5,114,0,0,908,126,1,0,0,0,909,910,5,102,0,0,910,911,5,97, - 0,0,911,912,5,108,0,0,912,913,5,115,0,0,913,914,5,101,0,0,914,128,1,0,0, - 0,915,916,5,102,0,0,916,917,5,101,0,0,917,918,5,97,0,0,918,919,5,116,0, - 0,919,920,5,117,0,0,920,921,5,114,0,0,921,922,5,101,0,0,922,130,1,0,0,0, - 923,924,5,102,0,0,924,925,5,101,0,0,925,926,5,97,0,0,926,927,5,116,0,0, - 927,928,5,117,0,0,928,929,5,114,0,0,929,930,5,101,0,0,930,931,5,100,0,0, - 931,132,1,0,0,0,932,933,5,102,0,0,933,934,5,101,0,0,934,935,5,97,0,0,935, - 936,5,116,0,0,936,937,5,117,0,0,937,938,5,114,0,0,938,939,5,105,0,0,939, - 940,5,110,0,0,940,941,5,103,0,0,941,134,1,0,0,0,942,943,5,102,0,0,943,944, - 5,105,0,0,944,945,5,108,0,0,945,946,5,116,0,0,946,947,5,101,0,0,947,948, - 5,114,0,0,948,136,1,0,0,0,949,950,5,102,0,0,950,951,5,105,0,0,951,952,5, - 114,0,0,952,953,5,115,0,0,953,954,5,116,0,0,954,138,1,0,0,0,955,956,5,102, - 0,0,956,957,5,108,0,0,957,958,5,111,0,0,958,959,5,119,0,0,959,140,1,0,0, - 0,960,961,5,102,0,0,961,962,5,111,0,0,962,963,5,114,0,0,963,142,1,0,0,0, - 964,965,5,102,0,0,965,966,5,111,0,0,966,967,5,114,0,0,967,968,5,107,0,0, - 968,144,1,0,0,0,969,970,5,102,0,0,970,971,5,114,0,0,971,972,5,97,0,0,972, - 973,5,109,0,0,973,974,5,101,0,0,974,146,1,0,0,0,975,976,5,102,0,0,976,977, - 5,114,0,0,977,978,5,111,0,0,978,979,5,109,0,0,979,148,1,0,0,0,980,981,5, - 102,0,0,981,982,5,117,0,0,982,983,5,110,0,0,983,984,5,99,0,0,984,985,5, - 116,0,0,985,986,5,105,0,0,986,987,5,111,0,0,987,988,5,110,0,0,988,150,1, - 0,0,0,989,990,5,104,0,0,990,991,5,97,0,0,991,992,5,115,0,0,992,993,5,116, - 0,0,993,994,5,121,0,0,994,995,5,112,0,0,995,996,5,101,0,0,996,152,1,0,0, - 0,997,998,5,105,0,0,998,999,5,102,0,0,999,154,1,0,0,0,1000,1001,5,105,0, - 0,1001,1002,5,109,0,0,1002,1003,5,112,0,0,1003,1004,5,108,0,0,1004,1005, - 5,105,0,0,1005,1006,5,101,0,0,1006,1007,5,115,0,0,1007,156,1,0,0,0,1008, - 1009,5,105,0,0,1009,1010,5,109,0,0,1010,1011,5,112,0,0,1011,1012,5,111, - 0,0,1012,1013,5,114,0,0,1013,1014,5,116,0,0,1014,158,1,0,0,0,1015,1016, - 5,105,0,0,1016,1017,5,110,0,0,1017,160,1,0,0,0,1018,1019,5,105,0,0,1019, - 1020,5,110,0,0,1020,1021,5,99,0,0,1021,1022,5,108,0,0,1022,1023,5,117,0, - 0,1023,1024,5,100,0,0,1024,1025,5,101,0,0,1025,162,1,0,0,0,1026,1027,5, - 105,0,0,1027,1028,5,110,0,0,1028,1029,5,100,0,0,1029,1030,5,105,0,0,1030, - 1031,5,118,0,0,1031,1032,5,105,0,0,1032,1033,5,100,0,0,1033,1034,5,117, - 0,0,1034,1035,5,97,0,0,1035,1036,5,108,0,0,1036,164,1,0,0,0,1037,1038,5, - 105,0,0,1038,1039,5,110,0,0,1039,1040,5,111,0,0,1040,1041,5,117,0,0,1041, - 1042,5,116,0,0,1042,166,1,0,0,0,1043,1044,5,105,0,0,1044,1045,5,110,0,0, - 1045,1046,5,116,0,0,1046,1047,5,101,0,0,1047,1048,5,114,0,0,1048,1049,5, - 97,0,0,1049,1050,5,99,0,0,1050,1051,5,116,0,0,1051,1052,5,105,0,0,1052, - 1053,5,111,0,0,1053,1054,5,110,0,0,1054,168,1,0,0,0,1055,1056,5,105,0,0, - 1056,1057,5,110,0,0,1057,1058,5,116,0,0,1058,1059,5,101,0,0,1059,1060,5, - 114,0,0,1060,1061,5,102,0,0,1061,1062,5,97,0,0,1062,1063,5,99,0,0,1063, - 1064,5,101,0,0,1064,170,1,0,0,0,1065,1066,5,105,0,0,1066,1067,5,110,0,0, - 1067,1068,5,116,0,0,1068,1069,5,101,0,0,1069,1070,5,114,0,0,1070,1071,5, - 115,0,0,1071,1072,5,101,0,0,1072,1073,5,99,0,0,1073,1074,5,116,0,0,1074, - 1075,5,115,0,0,1075,172,1,0,0,0,1076,1077,5,105,0,0,1077,1078,5,110,0,0, - 1078,1079,5,118,0,0,1079,174,1,0,0,0,1080,1081,5,105,0,0,1081,1082,5,110, - 0,0,1082,1083,5,118,0,0,1083,1084,5,101,0,0,1084,1085,5,114,0,0,1085,1086, - 5,115,0,0,1086,1087,5,101,0,0,1087,176,1,0,0,0,1088,1089,5,105,0,0,1089, - 1090,5,110,0,0,1090,1091,5,118,0,0,1091,1092,5,101,0,0,1092,1093,5,114, - 0,0,1093,1094,5,116,0,0,1094,1095,5,105,0,0,1095,1096,5,110,0,0,1096,1097, - 5,103,0,0,1097,178,1,0,0,0,1098,1099,5,105,0,0,1099,1100,5,115,0,0,1100, - 1101,5,116,0,0,1101,1102,5,121,0,0,1102,1103,5,112,0,0,1103,1104,5,101, - 0,0,1104,180,1,0,0,0,1105,1106,5,105,0,0,1106,1107,5,116,0,0,1107,1108, - 5,101,0,0,1108,1109,5,109,0,0,1109,182,1,0,0,0,1110,1111,5,106,0,0,1111, - 1112,5,111,0,0,1112,1113,5,105,0,0,1113,1114,5,110,0,0,1114,184,1,0,0,0, - 1115,1116,5,108,0,0,1116,1117,5,97,0,0,1117,1118,5,110,0,0,1118,1119,5, - 103,0,0,1119,1120,5,117,0,0,1120,1121,5,97,0,0,1121,1122,5,103,0,0,1122, - 1123,5,101,0,0,1123,186,1,0,0,0,1124,1125,5,108,0,0,1125,1126,5,105,0,0, - 1126,1127,5,98,0,0,1127,1128,5,114,0,0,1128,1129,5,97,0,0,1129,1130,5,114, - 0,0,1130,1131,5,121,0,0,1131,188,1,0,0,0,1132,1133,5,108,0,0,1133,1134, - 5,111,0,0,1134,1135,5,99,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137, - 1138,5,101,0,0,1138,190,1,0,0,0,1139,1140,5,108,0,0,1140,1141,5,111,0,0, - 1141,1142,5,111,0,0,1142,1143,5,112,0,0,1143,192,1,0,0,0,1144,1145,5,109, - 0,0,1145,1146,5,101,0,0,1146,1147,5,109,0,0,1147,1148,5,98,0,0,1148,1149, - 5,101,0,0,1149,1150,5,114,0,0,1150,194,1,0,0,0,1151,1152,5,109,0,0,1152, - 1153,5,101,0,0,1153,1154,5,114,0,0,1154,1155,5,103,0,0,1155,1156,5,101, - 0,0,1156,196,1,0,0,0,1157,1158,5,109,0,0,1158,1159,5,101,0,0,1159,1160, - 5,115,0,0,1160,1161,5,115,0,0,1161,1162,5,97,0,0,1162,1163,5,103,0,0,1163, - 1164,5,101,0,0,1164,198,1,0,0,0,1165,1166,5,109,0,0,1166,1167,5,101,0,0, - 1167,1168,5,116,0,0,1168,1169,5,97,0,0,1169,200,1,0,0,0,1170,1171,5,109, - 0,0,1171,1172,5,101,0,0,1172,1173,5,116,0,0,1173,1174,5,97,0,0,1174,1175, - 5,99,0,0,1175,1176,5,108,0,0,1176,1177,5,97,0,0,1177,1178,5,115,0,0,1178, - 1179,5,115,0,0,1179,202,1,0,0,0,1180,1181,5,109,0,0,1181,1182,5,101,0,0, - 1182,1183,5,116,0,0,1183,1184,5,97,0,0,1184,1185,5,100,0,0,1185,1186,5, - 97,0,0,1186,1187,5,116,0,0,1187,1188,5,97,0,0,1188,204,1,0,0,0,1189,1190, - 5,109,0,0,1190,1191,5,117,0,0,1191,1192,5,108,0,0,1192,1193,5,116,0,0,1193, - 1194,5,105,0,0,1194,1195,5,112,0,0,1195,1196,5,108,0,0,1196,1197,5,105, - 0,0,1197,1198,5,99,0,0,1198,1199,5,105,0,0,1199,1200,5,116,0,0,1200,1201, - 5,121,0,0,1201,206,1,0,0,0,1202,1203,5,110,0,0,1203,1204,5,97,0,0,1204, - 1205,5,109,0,0,1205,1206,5,101,0,0,1206,1207,5,115,0,0,1207,1208,5,112, - 0,0,1208,1209,5,97,0,0,1209,1210,5,99,0,0,1210,1211,5,101,0,0,1211,208, - 1,0,0,0,1212,1213,5,110,0,0,1213,1214,5,101,0,0,1214,1215,5,119,0,0,1215, - 210,1,0,0,0,1216,1217,5,110,0,0,1217,1218,5,111,0,0,1218,1219,5,110,0,0, - 1219,1220,5,117,0,0,1220,1221,5,110,0,0,1221,1222,5,105,0,0,1222,1223,5, - 113,0,0,1223,1224,5,117,0,0,1224,1225,5,101,0,0,1225,212,1,0,0,0,1226,1227, - 5,110,0,0,1227,1228,5,111,0,0,1228,1229,5,116,0,0,1229,214,1,0,0,0,1230, - 1231,5,110,0,0,1231,1232,5,117,0,0,1232,1233,5,108,0,0,1233,1234,5,108, - 0,0,1234,216,1,0,0,0,1235,1236,5,111,0,0,1236,1237,5,98,0,0,1237,1238,5, - 106,0,0,1238,1239,5,101,0,0,1239,1240,5,99,0,0,1240,1241,5,116,0,0,1241, - 1242,5,105,0,0,1242,1243,5,118,0,0,1243,1244,5,101,0,0,1244,218,1,0,0,0, - 1245,1246,5,111,0,0,1246,1247,5,99,0,0,1247,1248,5,99,0,0,1248,1249,5,117, - 0,0,1249,1250,5,114,0,0,1250,1251,5,114,0,0,1251,1252,5,101,0,0,1252,1253, - 5,110,0,0,1253,1254,5,99,0,0,1254,1255,5,101,0,0,1255,220,1,0,0,0,1256, - 1257,5,111,0,0,1257,1258,5,102,0,0,1258,222,1,0,0,0,1259,1260,5,111,0,0, - 1260,1261,5,114,0,0,1261,224,1,0,0,0,1262,1263,5,111,0,0,1263,1264,5,114, - 0,0,1264,1265,5,100,0,0,1265,1266,5,101,0,0,1266,1267,5,114,0,0,1267,1268, - 5,101,0,0,1268,1269,5,100,0,0,1269,226,1,0,0,0,1270,1271,5,111,0,0,1271, - 1272,5,117,0,0,1272,1273,5,116,0,0,1273,228,1,0,0,0,1274,1275,5,112,0,0, - 1275,1276,5,97,0,0,1276,1277,5,99,0,0,1277,1278,5,107,0,0,1278,1279,5,97, - 0,0,1279,1280,5,103,0,0,1280,1281,5,101,0,0,1281,230,1,0,0,0,1282,1283, - 5,112,0,0,1283,1284,5,97,0,0,1284,1285,5,114,0,0,1285,1286,5,97,0,0,1286, - 1287,5,108,0,0,1287,1288,5,108,0,0,1288,1289,5,101,0,0,1289,1290,5,108, - 0,0,1290,232,1,0,0,0,1291,1292,5,112,0,0,1292,1293,5,97,0,0,1293,1294,5, - 114,0,0,1294,1295,5,116,0,0,1295,234,1,0,0,0,1296,1297,5,112,0,0,1297,1298, - 5,101,0,0,1298,1299,5,114,0,0,1299,1300,5,102,0,0,1300,1301,5,111,0,0,1301, - 1302,5,114,0,0,1302,1303,5,109,0,0,1303,236,1,0,0,0,1304,1305,5,112,0,0, - 1305,1306,5,111,0,0,1306,1307,5,114,0,0,1307,1308,5,116,0,0,1308,238,1, - 0,0,0,1309,1310,5,112,0,0,1310,1311,5,111,0,0,1311,1312,5,114,0,0,1312, - 1313,5,116,0,0,1313,1314,5,105,0,0,1314,1315,5,111,0,0,1315,1316,5,110, - 0,0,1316,240,1,0,0,0,1317,1318,5,112,0,0,1318,1319,5,114,0,0,1319,1320, - 5,101,0,0,1320,1321,5,100,0,0,1321,1322,5,105,0,0,1322,1323,5,99,0,0,1323, - 1324,5,97,0,0,1324,1325,5,116,0,0,1325,1326,5,101,0,0,1326,242,1,0,0,0, - 1327,1328,5,112,0,0,1328,1329,5,114,0,0,1329,1330,5,105,0,0,1330,1331,5, - 118,0,0,1331,1332,5,97,0,0,1332,1333,5,116,0,0,1333,1334,5,101,0,0,1334, - 244,1,0,0,0,1335,1336,5,112,0,0,1336,1337,5,114,0,0,1337,1338,5,111,0,0, - 1338,1339,5,116,0,0,1339,1340,5,101,0,0,1340,1341,5,99,0,0,1341,1342,5, - 116,0,0,1342,1343,5,101,0,0,1343,1344,5,100,0,0,1344,246,1,0,0,0,1345,1346, - 5,112,0,0,1346,1347,5,117,0,0,1347,1348,5,98,0,0,1348,1349,5,108,0,0,1349, - 1350,5,105,0,0,1350,1351,5,99,0,0,1351,248,1,0,0,0,1352,1353,5,114,0,0, - 1353,1354,5,101,0,0,1354,1355,5,100,0,0,1355,1356,5,101,0,0,1356,1357,5, - 102,0,0,1357,1358,5,105,0,0,1358,1359,5,110,0,0,1359,1360,5,101,0,0,1360, - 1361,5,115,0,0,1361,250,1,0,0,0,1362,1363,5,114,0,0,1363,1364,5,101,0,0, - 1364,1365,5,100,0,0,1365,1366,5,101,0,0,1366,1367,5,102,0,0,1367,1368,5, - 105,0,0,1368,1369,5,110,0,0,1369,1370,5,105,0,0,1370,1371,5,116,0,0,1371, - 1372,5,105,0,0,1372,1373,5,111,0,0,1373,1374,5,110,0,0,1374,252,1,0,0,0, - 1375,1376,5,114,0,0,1376,1377,5,101,0,0,1377,1378,5,102,0,0,1378,254,1, - 0,0,0,1379,1380,5,114,0,0,1380,1381,5,101,0,0,1381,1382,5,102,0,0,1382, - 1383,5,101,0,0,1383,1384,5,114,0,0,1384,1385,5,101,0,0,1385,1386,5,110, - 0,0,1386,1387,5,99,0,0,1387,1388,5,101,0,0,1388,1389,5,115,0,0,1389,256, - 1,0,0,0,1390,1391,5,114,0,0,1391,1392,5,101,0,0,1392,1393,5,110,0,0,1393, - 1394,5,100,0,0,1394,1395,5,101,0,0,1395,1396,5,114,0,0,1396,258,1,0,0,0, - 1397,1398,5,114,0,0,1398,1399,5,101,0,0,1399,1400,5,110,0,0,1400,1401,5, - 100,0,0,1401,1402,5,101,0,0,1402,1403,5,114,0,0,1403,1404,5,105,0,0,1404, - 1405,5,110,0,0,1405,1406,5,103,0,0,1406,260,1,0,0,0,1407,1408,5,114,0,0, - 1408,1409,5,101,0,0,1409,1410,5,112,0,0,1410,262,1,0,0,0,1411,1412,5,114, - 0,0,1412,1413,5,101,0,0,1413,1414,5,113,0,0,1414,1415,5,117,0,0,1415,1416, - 5,105,0,0,1416,1417,5,114,0,0,1417,1418,5,101,0,0,1418,264,1,0,0,0,1419, - 1420,5,114,0,0,1420,1421,5,101,0,0,1421,1422,5,113,0,0,1422,1423,5,117, - 0,0,1423,1424,5,105,0,0,1424,1425,5,114,0,0,1425,1426,5,101,0,0,1426,1427, - 5,109,0,0,1427,1428,5,101,0,0,1428,1429,5,110,0,0,1429,1430,5,116,0,0,1430, - 266,1,0,0,0,1431,1432,5,114,0,0,1432,1433,5,101,0,0,1433,1434,5,116,0,0, - 1434,1435,5,117,0,0,1435,1436,5,114,0,0,1436,1437,5,110,0,0,1437,268,1, - 0,0,0,1438,1439,5,115,0,0,1439,1440,5,97,0,0,1440,1441,5,116,0,0,1441,1442, - 5,105,0,0,1442,1443,5,115,0,0,1443,1444,5,102,0,0,1444,1445,5,121,0,0,1445, - 270,1,0,0,0,1446,1447,5,115,0,0,1447,1448,5,101,0,0,1448,1449,5,110,0,0, - 1449,1450,5,100,0,0,1450,272,1,0,0,0,1451,1452,5,115,0,0,1452,1453,5,110, - 0,0,1453,1454,5,97,0,0,1454,1455,5,112,0,0,1455,1456,5,115,0,0,1456,1457, - 5,104,0,0,1457,1458,5,111,0,0,1458,1459,5,116,0,0,1459,274,1,0,0,0,1460, - 1461,5,115,0,0,1461,1462,5,112,0,0,1462,1463,5,101,0,0,1463,1464,5,99,0, - 0,1464,1465,5,105,0,0,1465,1466,5,97,0,0,1466,1467,5,108,0,0,1467,1468, - 5,105,0,0,1468,1469,5,122,0,0,1469,1470,5,97,0,0,1470,1471,5,116,0,0,1471, - 1472,5,105,0,0,1472,1473,5,111,0,0,1473,1474,5,110,0,0,1474,276,1,0,0,0, - 1475,1476,5,115,0,0,1476,1477,5,112,0,0,1477,1478,5,101,0,0,1478,1479,5, - 99,0,0,1479,1480,5,105,0,0,1480,1481,5,97,0,0,1481,1482,5,108,0,0,1482, - 1483,5,105,0,0,1483,1484,5,122,0,0,1484,1485,5,101,0,0,1485,1486,5,115, - 0,0,1486,278,1,0,0,0,1487,1488,5,115,0,0,1488,1489,5,116,0,0,1489,1490, - 5,97,0,0,1490,1491,5,107,0,0,1491,1492,5,101,0,0,1492,1493,5,104,0,0,1493, - 1494,5,111,0,0,1494,1495,5,108,0,0,1495,1496,5,100,0,0,1496,1497,5,101, - 0,0,1497,1498,5,114,0,0,1498,280,1,0,0,0,1499,1500,5,115,0,0,1500,1501, - 5,116,0,0,1501,1502,5,97,0,0,1502,1503,5,110,0,0,1503,1504,5,100,0,0,1504, - 1505,5,97,0,0,1505,1506,5,114,0,0,1506,1507,5,100,0,0,1507,282,1,0,0,0, - 1508,1509,5,115,0,0,1509,1510,5,116,0,0,1510,1511,5,97,0,0,1511,1512,5, - 116,0,0,1512,1513,5,101,0,0,1513,284,1,0,0,0,1514,1515,5,115,0,0,1515,1516, - 5,116,0,0,1516,1517,5,101,0,0,1517,1518,5,112,0,0,1518,286,1,0,0,0,1519, - 1520,5,115,0,0,1520,1521,5,116,0,0,1521,1522,5,114,0,0,1522,1523,5,117, - 0,0,1523,1524,5,99,0,0,1524,1525,5,116,0,0,1525,288,1,0,0,0,1526,1527,5, - 115,0,0,1527,1528,5,117,0,0,1528,1529,5,98,0,0,1529,1530,5,99,0,0,1530, - 1531,5,108,0,0,1531,1532,5,97,0,0,1532,1533,5,115,0,0,1533,1534,5,115,0, - 0,1534,1535,5,105,0,0,1535,1536,5,102,0,0,1536,1537,5,105,0,0,1537,1538, - 5,101,0,0,1538,1539,5,114,0,0,1539,290,1,0,0,0,1540,1541,5,115,0,0,1541, - 1542,5,117,0,0,1542,1543,5,98,0,0,1543,1544,5,106,0,0,1544,1545,5,101,0, - 0,1545,1546,5,99,0,0,1546,1547,5,116,0,0,1547,292,1,0,0,0,1548,1549,5,115, - 0,0,1549,1550,5,117,0,0,1550,1551,5,98,0,0,1551,1552,5,115,0,0,1552,1553, - 5,101,0,0,1553,1554,5,116,0,0,1554,294,1,0,0,0,1555,1556,5,115,0,0,1556, - 1557,5,117,0,0,1557,1558,5,98,0,0,1558,1559,5,115,0,0,1559,1560,5,101,0, - 0,1560,1561,5,116,0,0,1561,1562,5,115,0,0,1562,296,1,0,0,0,1563,1564,5, - 115,0,0,1564,1565,5,117,0,0,1565,1566,5,98,0,0,1566,1567,5,116,0,0,1567, - 1568,5,121,0,0,1568,1569,5,112,0,0,1569,1570,5,101,0,0,1570,298,1,0,0,0, - 1571,1572,5,115,0,0,1572,1573,5,117,0,0,1573,1574,5,99,0,0,1574,1575,5, - 99,0,0,1575,1576,5,101,0,0,1576,1577,5,115,0,0,1577,1578,5,115,0,0,1578, - 1579,5,105,0,0,1579,1580,5,111,0,0,1580,1581,5,110,0,0,1581,300,1,0,0,0, - 1582,1583,5,116,0,0,1583,1584,5,101,0,0,1584,1585,5,114,0,0,1585,1586,5, - 109,0,0,1586,1587,5,105,0,0,1587,1588,5,110,0,0,1588,1589,5,97,0,0,1589, - 1590,5,116,0,0,1590,1591,5,101,0,0,1591,302,1,0,0,0,1592,1593,5,116,0,0, - 1593,1594,5,104,0,0,1594,1595,5,101,0,0,1595,1596,5,110,0,0,1596,304,1, - 0,0,0,1597,1598,5,116,0,0,1598,1599,5,105,0,0,1599,1600,5,109,0,0,1600, - 1601,5,101,0,0,1601,1602,5,115,0,0,1602,1603,5,108,0,0,1603,1604,5,105, - 0,0,1604,1605,5,99,0,0,1605,1606,5,101,0,0,1606,306,1,0,0,0,1607,1608,5, - 116,0,0,1608,1609,5,111,0,0,1609,308,1,0,0,0,1610,1611,5,116,0,0,1611,1612, - 5,114,0,0,1612,1613,5,97,0,0,1613,1614,5,110,0,0,1614,1615,5,115,0,0,1615, - 1616,5,105,0,0,1616,1617,5,116,0,0,1617,1618,5,105,0,0,1618,1619,5,111, - 0,0,1619,1620,5,110,0,0,1620,310,1,0,0,0,1621,1622,5,116,0,0,1622,1623, - 5,114,0,0,1623,1624,5,117,0,0,1624,1625,5,101,0,0,1625,312,1,0,0,0,1626, - 1627,5,116,0,0,1627,1628,5,121,0,0,1628,1629,5,112,0,0,1629,1630,5,101, - 0,0,1630,314,1,0,0,0,1631,1632,5,116,0,0,1632,1633,5,121,0,0,1633,1634, - 5,112,0,0,1634,1635,5,101,0,0,1635,1636,5,100,0,0,1636,316,1,0,0,0,1637, - 1638,5,116,0,0,1638,1639,5,121,0,0,1639,1640,5,112,0,0,1640,1641,5,105, - 0,0,1641,1642,5,110,0,0,1642,1643,5,103,0,0,1643,318,1,0,0,0,1644,1645, - 5,117,0,0,1645,1646,5,110,0,0,1646,1647,5,105,0,0,1647,1648,5,111,0,0,1648, - 1649,5,110,0,0,1649,1650,5,115,0,0,1650,320,1,0,0,0,1651,1652,5,117,0,0, - 1652,1653,5,110,0,0,1653,1654,5,116,0,0,1654,1655,5,105,0,0,1655,1656,5, - 108,0,0,1656,322,1,0,0,0,1657,1658,5,117,0,0,1658,1659,5,115,0,0,1659,1660, - 5,101,0,0,1660,324,1,0,0,0,1661,1662,5,118,0,0,1662,1663,5,97,0,0,1663, - 1664,5,114,0,0,1664,326,1,0,0,0,1665,1666,5,118,0,0,1666,1667,5,97,0,0, - 1667,1668,5,114,0,0,1668,1669,5,105,0,0,1669,1670,5,97,0,0,1670,1671,5, - 110,0,0,1671,1672,5,116,0,0,1672,328,1,0,0,0,1673,1674,5,118,0,0,1674,1675, - 5,97,0,0,1675,1676,5,114,0,0,1676,1677,5,105,0,0,1677,1678,5,97,0,0,1678, - 1679,5,116,0,0,1679,1680,5,105,0,0,1680,1681,5,111,0,0,1681,1682,5,110, - 0,0,1682,330,1,0,0,0,1683,1684,5,118,0,0,1684,1685,5,101,0,0,1685,1686, - 5,114,0,0,1686,1687,5,105,0,0,1687,1688,5,102,0,0,1688,1689,5,105,0,0,1689, - 1690,5,99,0,0,1690,1691,5,97,0,0,1691,1692,5,116,0,0,1692,1693,5,105,0, - 0,1693,1694,5,111,0,0,1694,1695,5,110,0,0,1695,332,1,0,0,0,1696,1697,5, - 118,0,0,1697,1698,5,101,0,0,1698,1699,5,114,0,0,1699,1700,5,105,0,0,1700, - 1701,5,102,0,0,1701,1702,5,121,0,0,1702,334,1,0,0,0,1703,1704,5,118,0,0, - 1704,1705,5,105,0,0,1705,1706,5,97,0,0,1706,336,1,0,0,0,1707,1708,5,118, - 0,0,1708,1709,5,105,0,0,1709,1710,5,101,0,0,1710,1711,5,119,0,0,1711,338, - 1,0,0,0,1712,1713,5,118,0,0,1713,1714,5,105,0,0,1714,1715,5,101,0,0,1715, - 1716,5,119,0,0,1716,1717,5,112,0,0,1717,1718,5,111,0,0,1718,1719,5,105, - 0,0,1719,1720,5,110,0,0,1720,1721,5,116,0,0,1721,340,1,0,0,0,1722,1723, - 5,119,0,0,1723,1724,5,104,0,0,1724,1725,5,101,0,0,1725,1726,5,110,0,0,1726, - 342,1,0,0,0,1727,1728,5,119,0,0,1728,1729,5,104,0,0,1729,1730,5,105,0,0, - 1730,1731,5,108,0,0,1731,1732,5,101,0,0,1732,344,1,0,0,0,1733,1734,5,120, - 0,0,1734,1735,5,111,0,0,1735,1736,5,114,0,0,1736,346,1,0,0,0,1737,1738, - 5,33,0,0,1738,1739,5,61,0,0,1739,1740,5,61,0,0,1740,348,1,0,0,0,1741,1742, - 5,58,0,0,1742,1743,5,58,0,0,1743,1744,5,62,0,0,1744,350,1,0,0,0,1745,1746, - 5,58,0,0,1746,1747,5,62,0,0,1747,1748,5,62,0,0,1748,352,1,0,0,0,1749,1750, - 5,61,0,0,1750,1751,5,61,0,0,1751,1752,5,61,0,0,1752,354,1,0,0,0,1753,1754, - 5,33,0,0,1754,1755,5,61,0,0,1755,356,1,0,0,0,1756,1757,5,42,0,0,1757,1758, - 5,42,0,0,1758,358,1,0,0,0,1759,1760,5,45,0,0,1760,1761,5,62,0,0,1761,360, - 1,0,0,0,1762,1763,5,46,0,0,1763,1764,5,46,0,0,1764,362,1,0,0,0,1765,1766, - 5,46,0,0,1766,1767,5,63,0,0,1767,364,1,0,0,0,1768,1769,5,58,0,0,1769,1770, - 5,58,0,0,1770,366,1,0,0,0,1771,1772,5,58,0,0,1772,1773,5,61,0,0,1773,368, - 1,0,0,0,1774,1775,5,58,0,0,1775,1776,5,62,0,0,1776,370,1,0,0,0,1777,1778, - 5,60,0,0,1778,1779,5,61,0,0,1779,372,1,0,0,0,1780,1781,5,61,0,0,1781,1782, - 5,61,0,0,1782,374,1,0,0,0,1783,1784,5,61,0,0,1784,1785,5,62,0,0,1785,376, - 1,0,0,0,1786,1787,5,62,0,0,1787,1788,5,61,0,0,1788,378,1,0,0,0,1789,1790, - 5,63,0,0,1790,1791,5,63,0,0,1791,380,1,0,0,0,1792,1793,5,64,0,0,1793,1794, - 5,64,0,0,1794,382,1,0,0,0,1795,1796,5,35,0,0,1796,384,1,0,0,0,1797,1798, - 5,36,0,0,1798,386,1,0,0,0,1799,1800,5,37,0,0,1800,388,1,0,0,0,1801,1802, - 5,38,0,0,1802,390,1,0,0,0,1803,1804,5,40,0,0,1804,392,1,0,0,0,1805,1806, - 5,41,0,0,1806,394,1,0,0,0,1807,1808,5,42,0,0,1808,396,1,0,0,0,1809,1810, - 5,43,0,0,1810,398,1,0,0,0,1811,1812,5,44,0,0,1812,400,1,0,0,0,1813,1814, - 5,45,0,0,1814,402,1,0,0,0,1815,1816,5,46,0,0,1816,404,1,0,0,0,1817,1818, - 5,47,0,0,1818,406,1,0,0,0,1819,1820,5,58,0,0,1820,408,1,0,0,0,1821,1822, - 5,59,0,0,1822,410,1,0,0,0,1823,1824,5,60,0,0,1824,412,1,0,0,0,1825,1826, - 5,61,0,0,1826,414,1,0,0,0,1827,1828,5,62,0,0,1828,416,1,0,0,0,1829,1830, - 5,63,0,0,1830,418,1,0,0,0,1831,1832,5,64,0,0,1832,420,1,0,0,0,1833,1834, - 5,91,0,0,1834,422,1,0,0,0,1835,1836,5,93,0,0,1836,424,1,0,0,0,1837,1838, - 5,94,0,0,1838,426,1,0,0,0,1839,1840,5,123,0,0,1840,428,1,0,0,0,1841,1842, - 5,124,0,0,1842,430,1,0,0,0,1843,1844,5,125,0,0,1844,432,1,0,0,0,1845,1846, - 5,126,0,0,1846,434,1,0,0,0,1847,1851,7,0,0,0,1848,1850,7,1,0,0,1849,1848, - 1,0,0,0,1850,1853,1,0,0,0,1851,1849,1,0,0,0,1851,1852,1,0,0,0,1852,436, - 1,0,0,0,1853,1851,1,0,0,0,1854,1860,5,39,0,0,1855,1856,5,92,0,0,1856,1859, - 9,0,0,0,1857,1859,8,2,0,0,1858,1855,1,0,0,0,1858,1857,1,0,0,0,1859,1862, - 1,0,0,0,1860,1858,1,0,0,0,1860,1861,1,0,0,0,1861,1863,1,0,0,0,1862,1860, - 1,0,0,0,1863,1864,5,39,0,0,1864,438,1,0,0,0,1865,1871,5,34,0,0,1866,1867, - 5,92,0,0,1867,1870,9,0,0,0,1868,1870,8,3,0,0,1869,1866,1,0,0,0,1869,1868, - 1,0,0,0,1870,1873,1,0,0,0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1874, - 1,0,0,0,1873,1871,1,0,0,0,1874,1875,5,34,0,0,1875,440,1,0,0,0,1876,1878, - 7,4,0,0,1877,1876,1,0,0,0,1878,1879,1,0,0,0,1879,1877,1,0,0,0,1879,1880, - 1,0,0,0,1880,442,1,0,0,0,1881,1883,7,4,0,0,1882,1881,1,0,0,0,1883,1886, - 1,0,0,0,1884,1882,1,0,0,0,1884,1885,1,0,0,0,1885,1887,1,0,0,0,1886,1884, - 1,0,0,0,1887,1889,5,46,0,0,1888,1890,7,4,0,0,1889,1888,1,0,0,0,1890,1891, - 1,0,0,0,1891,1889,1,0,0,0,1891,1892,1,0,0,0,1892,1902,1,0,0,0,1893,1895, - 7,5,0,0,1894,1896,7,6,0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896,1898, - 1,0,0,0,1897,1899,7,4,0,0,1898,1897,1,0,0,0,1899,1900,1,0,0,0,1900,1898, - 1,0,0,0,1900,1901,1,0,0,0,1901,1903,1,0,0,0,1902,1893,1,0,0,0,1902,1903, - 1,0,0,0,1903,1919,1,0,0,0,1904,1906,7,4,0,0,1905,1904,1,0,0,0,1906,1907, - 1,0,0,0,1907,1905,1,0,0,0,1907,1908,1,0,0,0,1908,1909,1,0,0,0,1909,1911, - 7,5,0,0,1910,1912,7,6,0,0,1911,1910,1,0,0,0,1911,1912,1,0,0,0,1912,1914, - 1,0,0,0,1913,1915,7,4,0,0,1914,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1914, - 1,0,0,0,1916,1917,1,0,0,0,1917,1919,1,0,0,0,1918,1884,1,0,0,0,1918,1905, - 1,0,0,0,1919,444,1,0,0,0,1920,1921,5,47,0,0,1921,1922,5,42,0,0,1922,1926, - 1,0,0,0,1923,1925,9,0,0,0,1924,1923,1,0,0,0,1925,1928,1,0,0,0,1926,1927, - 1,0,0,0,1926,1924,1,0,0,0,1927,1929,1,0,0,0,1928,1926,1,0,0,0,1929,1930, - 5,42,0,0,1930,1931,5,47,0,0,1931,446,1,0,0,0,1932,1933,5,47,0,0,1933,1934, - 5,47,0,0,1934,1938,1,0,0,0,1935,1937,8,7,0,0,1936,1935,1,0,0,0,1937,1940, - 1,0,0,0,1938,1936,1,0,0,0,1938,1939,1,0,0,0,1939,1941,1,0,0,0,1940,1938, - 1,0,0,0,1941,1942,6,223,0,0,1942,448,1,0,0,0,1943,1945,7,8,0,0,1944,1943, - 1,0,0,0,1945,1946,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947,1948, - 1,0,0,0,1948,1949,6,224,0,0,1949,450,1,0,0,0,19,0,1851,1858,1860,1869,1871, - 1879,1884,1891,1895,1900,1902,1907,1911,1916,1918,1926,1938,1946,1,6,0, - 0]; - - private static __ATN: ATN; - public static get _ATN(): ATN { - if (!SysMLv2Lexer.__ATN) { - SysMLv2Lexer.__ATN = new ATNDeserializer().deserialize(SysMLv2Lexer._serializedATN); - } - - return SysMLv2Lexer.__ATN; - } - - - static DecisionsToDFA = SysMLv2Lexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); -} \ No newline at end of file diff --git a/src/parser/generated/grammar/SysMLv2Parser.interp b/src/parser/generated/grammar/SysMLv2Parser.interp deleted file mode 100644 index e8cab56..0000000 --- a/src/parser/generated/grammar/SysMLv2Parser.interp +++ /dev/null @@ -1,956 +0,0 @@ -token literal names: -null -'about' -'abstract' -'accept' -'action' -'actor' -'after' -'alias' -'all' -'allocate' -'allocation' -'analysis' -'and' -'as' -'assert' -'assign' -'assoc' -'assume' -'at' -'attribute' -'behavior' -'bind' -'binding' -'bool' -'by' -'calc' -'case' -'chains' -'class' -'classifier' -'comment' -'composite' -'concern' -'conjugate' -'conjugates' -'conjugation' -'connect' -'connection' -'connector' -'const' -'constant' -'constraint' -'crosses' -'datatype' -'decide' -'def' -'default' -'defined' -'dependency' -'derived' -'differences' -'disjoining' -'disjoint' -'do' -'doc' -'else' -'end' -'entry' -'enum' -'event' -'exhibit' -'exit' -'expose' -'expr' -'false' -'feature' -'featured' -'featuring' -'filter' -'first' -'flow' -'for' -'fork' -'frame' -'from' -'function' -'hastype' -'if' -'implies' -'import' -'in' -'include' -'individual' -'inout' -'interaction' -'interface' -'intersects' -'inv' -'inverse' -'inverting' -'istype' -'item' -'join' -'language' -'library' -'locale' -'loop' -'member' -'merge' -'message' -'meta' -'metaclass' -'metadata' -'multiplicity' -'namespace' -'new' -'nonunique' -'not' -'null' -'objective' -'occurrence' -'of' -'or' -'ordered' -'out' -'package' -'parallel' -'part' -'perform' -'port' -'portion' -'predicate' -'private' -'protected' -'public' -'redefines' -'redefinition' -'ref' -'references' -'render' -'rendering' -'rep' -'require' -'requirement' -'return' -'satisfy' -'send' -'snapshot' -'specialization' -'specializes' -'stakeholder' -'standard' -'state' -'step' -'struct' -'subclassifier' -'subject' -'subset' -'subsets' -'subtype' -'succession' -'terminate' -'then' -'timeslice' -'to' -'transition' -'true' -'type' -'typed' -'typing' -'unions' -'until' -'use' -'var' -'variant' -'variation' -'verification' -'verify' -'via' -'view' -'viewpoint' -'when' -'while' -'xor' -'!==' -'::>' -':>>' -'===' -'!=' -'**' -'->' -'..' -'.?' -'::' -':=' -':>' -'<=' -'==' -'=>' -'>=' -'??' -'@@' -'#' -'$' -'%' -'&' -'(' -')' -'*' -'+' -',' -'-' -'.' -'/' -':' -';' -'<' -'=' -'>' -'?' -'@' -'[' -']' -'^' -'{' -'|' -'}' -'~' -null -null -null -null -null -null -null -null - -token symbolic names: -null -ABOUT -ABSTRACT -ACCEPT -ACTION -ACTOR -AFTER -ALIAS -ALL -ALLOCATE -ALLOCATION -ANALYSIS -AND -AS -ASSERT -ASSIGN -ASSOC -ASSUME -AT -ATTRIBUTE -BEHAVIOR -BIND -BINDING -BOOL -BY -CALC -CASE -CHAINS -CLASS -CLASSIFIER -COMMENT -COMPOSITE -CONCERN -CONJUGATE -CONJUGATES -CONJUGATION -CONNECT -CONNECTION -CONNECTOR -CONST -CONSTANT -CONSTRAINT -CROSSES -DATATYPE -DECIDE -DEF -DEFAULT -DEFINED -DEPENDENCY -DERIVED -DIFFERENCES -DISJOINING -DISJOINT -DO -DOC -ELSE -END -ENTRY -ENUM -EVENT -EXHIBIT -EXIT -EXPOSE -EXPR -FALSE -FEATURE -FEATURED -FEATURING -FILTER -FIRST -FLOW -FOR -FORK -FRAME -FROM -FUNCTION -HASTYPE -IF -IMPLIES -IMPORT -IN -INCLUDE -INDIVIDUAL -INOUT -INTERACTION -INTERFACE -INTERSECTS -INV -INVERSE -INVERTING -ISTYPE -ITEM -JOIN -LANGUAGE -LIBRARY -LOCALE -LOOP -MEMBER -MERGE -MESSAGE -META -METACLASS -METADATA -MULTIPLICITY -NAMESPACE -NEW -NONUNIQUE -NOT -NULL -OBJECTIVE -OCCURRENCE -OF -OR -ORDERED -OUT -PACKAGE -PARALLEL -PART -PERFORM -PORT -PORTION -PREDICATE -PRIVATE -PROTECTED -PUBLIC -REDEFINES -REDEFINITION -REF -REFERENCES -RENDER -RENDERING -REP -REQUIRE -REQUIREMENT -RETURN -SATISFY -SEND -SNAPSHOT -SPECIALIZATION -SPECIALIZES -STAKEHOLDER -STANDARD -STATE -STEP -STRUCT -SUBCLASSIFIER -SUBJECT -SUBSET -SUBSETS -SUBTYPE -SUCCESSION -TERMINATE -THEN -TIMESLICE -TO -TRANSITION -TRUE -TYPE -TYPED -TYPING -UNIONS -UNTIL -USE -VAR -VARIANT -VARIATION -VERIFICATION -VERIFY -VIA -VIEW -VIEWPOINT -WHEN -WHILE -XOR -BANG_EQ_EQ -COLON_COLON_GT -COLON_GT_GT -EQ_EQ_EQ -BANG_EQ -STAR_STAR -ARROW -DOT_DOT -DOT_QUESTION -COLON_COLON -COLON_EQ -COLON_GT -LE -EQ_EQ -FAT_ARROW -GE -QUESTION_QUESTION -AT_AT -HASH -DOLLAR -PERCENT -AMP -LPAREN -RPAREN -STAR -PLUS -COMMA -MINUS -DOT -SLASH -COLON -SEMI -LT -EQ -GT -QUESTION -AT_SIGN -LBRACK -RBRACK -CARET -LBRACE -PIPE -RBRACE -TILDE -IDENTIFIER -STRING -DOUBLE_STRING -INTEGER -REAL -REGULAR_COMMENT -SINGLE_LINE_NOTE -WS - -rule names: -ownedExpression -typeReference -sequenceExpressionList -baseExpression -nullExpression -featureReferenceExpression -metadataAccessExpression -invocationExpression -constructorExpression -bodyExpression -argumentList -positionalArgumentList -namedArgumentList -namedArgument -literalExpression -literalBoolean -literalString -literalInteger -literalReal -literalInfinity -argumentMember -argumentExpressionMember -name -identification -relationshipBody -relationshipOwnedElement -ownedRelatedElement -dependency -annotation -ownedAnnotation -annotatingElement -comment -documentation -textualRepresentation -rootNamespace -namespace -namespaceDeclaration -namespaceBody -namespaceBodyElement -memberPrefix -visibilityIndicator -namespaceMember -nonFeatureMember -namespaceFeatureMember -aliasMember -qualifiedName -importRule -importDeclaration -membershipImport -namespaceImport -filterPackage -filterPackageMember -memberElement -nonFeatureElement -featureElement -type -typePrefix -typeDeclaration -specializationPart -conjugationPart -typeRelationshipPart -disjoiningPart -unioningPart -intersectingPart -differencingPart -typeBody -typeBodyElement -specialization -ownedSpecialization -specificType -generalType -conjugation -ownedConjugation -disjoining -ownedDisjoining -unioning -intersecting -differencing -featureMember -typeFeatureMember -ownedFeatureMember -classifier -classifierDeclaration -superclassingPart -subclassification -ownedSubclassification -feature -endFeaturePrefix -basicFeaturePrefix -featurePrefix -ownedCrossFeatureMember -ownedCrossFeature -featureDirection -featureDeclaration -featureIdentification -featureRelationshipPart -chainingPart -invertingPart -typeFeaturingPart -featureSpecializationPart -multiplicityPart -featureSpecialization -typings -typedBy -subsettings -subsets -references -crosses -redefinitions -redefines -featureTyping -ownedFeatureTyping -subsetting -ownedSubsetting -ownedReferenceSubsetting -ownedCrossSubsetting -redefinition -ownedRedefinition -ownedFeatureChain -featureChain -ownedFeatureChaining -featureInverting -ownedFeatureInverting -typeFeaturing -ownedTypeFeaturing -dataType -class -structure -association -associationStructure -connector -connectorDeclaration -binaryConnectorDeclaration -naryConnectorDeclaration -connectorEndMember -connectorEnd -ownedCrossMultiplicityMember -ownedCrossMultiplicity -bindingConnector -bindingConnectorDeclaration -succession -successionDeclaration -behavior -step -function -functionBody -functionBodyPart -returnFeatureMember -resultExpressionMember -expression -predicate -booleanExpression -invariant -ownedExpressionMember -metadataReference -typeReferenceMember -typeResultMember -referenceTyping -emptyResultMember -sequenceOperatorExpression -sequenceExpressionListMember -bodyArgumentMember -bodyArgument -bodyArgumentValue -functionReferenceArgumentMember -functionReferenceArgument -functionReferenceArgumentValue -functionReferenceExpression -functionReferenceMember -functionReference -featureChainMember -ownedFeatureChainMember -featureReferenceMember -featureReference -elementReferenceMember -constructorResultMember -constructorResult -instantiatedTypeMember -instantiatedTypeReference -namedArgumentMember -parameterRedefinition -expressionBodyMember -expressionBody -booleanValue -realValue -interaction -flow -successionFlow -flowDeclaration -payloadFeatureMember -payloadFeature -payloadFeatureSpecializationPart -flowEndMember -flowEnd -flowFeatureMember -flowFeature -flowFeatureRedefinition -valuePart -featureValue -multiplicity -multiplicitySubset -multiplicityRange -ownedMultiplicity -ownedMultiplicityRange -multiplicityBounds -multiplicityExpressionMember -metaclass -prefixMetadataAnnotation -prefixMetadataMember -prefixMetadataFeature -metadataFeature -metadataFeatureDeclaration -metadataBody -metadataBodyElement -metadataBodyFeatureMember -metadataBodyFeature -package -libraryPackage -packageDeclaration -packageBody -elementFilterMember -dependencyDeclaration -annotatingMember -packageBodyElement -packageMember -definitionElement -usageElement -basicDefinitionPrefix -definitionExtensionKeyword -definitionPrefix -definition -definitionDeclaration -definitionBody -definitionBodyItem -definitionBodyItemContent -definitionMember -variantUsageMember -nonOccurrenceUsageMember -occurrenceUsageMember -structureUsageMember -behaviorUsageMember -refPrefix -basicUsagePrefix -endUsagePrefix -usageExtensionKeyword -unextendedUsagePrefix -usagePrefix -usage -usageDeclaration -usageCompletion -usageBody -defaultReferenceUsage -referenceUsage -endFeatureUsage -variantReference -nonOccurrenceUsageElement -occurrenceUsageElement -structureUsageElement -behaviorUsageElement -variantUsageElement -subclassificationPart -attributeDefinition -attributeUsage -enumerationDefinition -enumerationBody -enumerationUsageMember -enumeratedValue -enumerationUsage -occurrenceDefinitionPrefix -occurrenceDefinition -individualDefinition -emptyMultiplicityMember -occurrenceUsagePrefix -occurrenceUsage -individualUsage -portionUsage -portionKind -eventOccurrenceUsage -sourceSuccessionMember -sourceSuccession -sourceEndMember -sourceEnd -itemDefinition -itemUsage -partDefinition -partUsage -portDefinition -conjugatedPortDefinitionMember -conjugatedPortDefinition -portUsage -conjugatedPortTyping -connectionDefinition -connectionUsage -connectorPart -binaryConnectorPart -naryConnectorPart -bindingConnectorAsUsage -successionAsUsage -interfaceDefinition -interfaceBody -interfaceBodyItem -interfaceNonOccurrenceUsageMember -interfaceNonOccurrenceUsageElement -interfaceOccurrenceUsageMember -interfaceOccurrenceUsageElement -defaultInterfaceEnd -interfaceUsage -interfaceUsageDeclaration -interfacePart -binaryInterfacePart -naryInterfacePart -interfaceEndMember -interfaceEnd -allocationDefinition -allocationUsage -allocationUsageDeclaration -flowDefinition -message -messageDeclaration -messageEventMember -messageEvent -flowUsage -successionFlowUsage -flowPayloadFeatureMember -flowPayloadFeature -flowEndSubsetting -featureChainPrefix -actionDefinition -actionBody -actionBodyItem -nonBehaviorBodyItem -actionBehaviorMember -initialNodeMember -actionNodeMember -actionTargetSuccessionMember -guardedSuccessionMember -actionUsage -actionUsageDeclaration -performActionUsage -performActionUsageDeclaration -actionNode -actionNodeUsageDeclaration -actionNodePrefix -controlNode -controlNodePrefix -mergeNode -decisionNode -joinNode -forkNode -acceptNode -acceptNodeDeclaration -acceptParameterPart -payloadParameterMember -payloadParameter -triggerValuePart -triggerFeatureValue -triggerExpression -sendNode -sendNodeDeclaration -senderReceiverPart -nodeParameterMember -nodeParameter -featureBinding -emptyParameterMember -assignmentNode -assignmentNodeDeclaration -assignmentTargetMember -assignmentTargetParameter -assignmentTargetBinding -terminateNode -ifNode -expressionParameterMember -actionBodyParameterMember -actionBodyParameter -ifNodeParameterMember -whileLoopNode -forLoopNode -forVariableDeclarationMember -forVariableDeclaration -actionTargetSuccession -targetSuccession -guardedTargetSuccession -defaultTargetSuccession -guardedSuccession -stateDefinition -stateDefBody -stateBodyItem -entryActionMember -doActionMember -exitActionMember -entryTransitionMember -stateActionUsage -statePerformActionUsage -stateAcceptActionUsage -stateSendActionUsage -stateAssignmentActionUsage -transitionUsageMember -targetTransitionUsageMember -stateUsage -stateUsageBody -exhibitStateUsage -transitionUsage -targetTransitionUsage -triggerActionMember -triggerAction -guardExpressionMember -effectBehaviorMember -effectBehaviorUsage -transitionPerformActionUsage -transitionAcceptActionUsage -transitionSendActionUsage -transitionAssignmentActionUsage -transitionSuccessionMember -transitionSuccession -emptyEndMember -calculationDefinition -calculationUsage -calculationBody -calculationBodyPart -calculationBodyItem -returnParameterMember -constraintDefinition -constraintUsage -assertConstraintUsage -constraintUsageDeclaration -requirementDefinition -requirementBody -requirementBodyItem -subjectMember -subjectUsage -requirementConstraintMember -requirementKind -requirementConstraintUsage -framedConcernMember -framedConcernUsage -actorMember -actorUsage -stakeholderMember -stakeholderUsage -requirementUsage -satisfyRequirementUsage -satisfactionSubjectMember -satisfactionParameter -satisfactionFeatureValue -satisfactionReferenceExpression -concernDefinition -concernUsage -caseDefinition -caseUsage -caseBody -caseBodyItem -objectiveMember -objectiveRequirementUsage -analysisCaseDefinition -analysisCaseUsage -verificationCaseDefinition -verificationCaseUsage -requirementVerificationMember -requirementVerificationUsage -useCaseDefinition -useCaseUsage -includeUseCaseUsage -viewDefinition -viewDefinitionBody -viewDefinitionBodyItem -viewRenderingMember -viewRenderingUsage -viewUsage -viewBody -viewBodyItem -expose -membershipExpose -namespaceExpose -viewpointDefinition -viewpointUsage -renderingDefinition -renderingUsage -metadataDefinition -prefixMetadataUsage -metadataUsage -metadataUsageDeclaration -metadataBodyUsageMember -metadataBodyUsage -extendedDefinition -extendedUsage -filterPackageImportDeclaration -namespaceImportDirect -calculationUsageDeclaration -emptyActionUsage_ -emptyFeature_ -emptyMultiplicity_ -emptyUsage_ -filterPackageImport -nonFeatureChainPrimaryExpression -portConjugation - - -atn: -[4, 1, 225, 4720, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1006, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1062, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1069, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1085, 8, 0, 5, 0, 1087, 8, 0, 10, 0, 12, 0, 1090, 9, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 1097, 8, 2, 10, 2, 12, 2, 1100, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1108, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1114, 8, 3, 1, 3, 3, 3, 1117, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 1122, 8, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 3, 10, 1144, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 5, 11, 1151, 8, 11, 10, 11, 12, 11, 1154, 9, 11, 1, 12, 1, 12, 1, 12, 5, 12, 1159, 8, 12, 10, 12, 12, 12, 1162, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1173, 8, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1201, 8, 23, 1, 24, 1, 24, 1, 24, 5, 24, 1206, 8, 24, 10, 24, 12, 24, 1209, 9, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1214, 8, 24, 10, 24, 12, 24, 1217, 9, 24, 1, 24, 3, 24, 1220, 8, 24, 1, 25, 1, 25, 3, 25, 1224, 8, 25, 1, 26, 1, 26, 3, 26, 1228, 8, 26, 1, 27, 5, 27, 1231, 8, 27, 10, 27, 12, 27, 1234, 9, 27, 1, 27, 1, 27, 3, 27, 1238, 8, 27, 1, 27, 3, 27, 1241, 8, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1246, 8, 27, 10, 27, 12, 27, 1249, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1255, 8, 27, 10, 27, 12, 27, 1258, 9, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1263, 8, 27, 10, 27, 12, 27, 1266, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1272, 8, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 1282, 8, 30, 1, 31, 1, 31, 3, 31, 1286, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 1292, 8, 31, 10, 31, 12, 31, 1295, 9, 31, 3, 31, 1297, 8, 31, 3, 31, 1299, 8, 31, 1, 31, 1, 31, 3, 31, 1303, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 1309, 8, 32, 1, 32, 1, 32, 3, 32, 1313, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 1319, 8, 33, 3, 33, 1321, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 5, 34, 1328, 8, 34, 10, 34, 12, 34, 1331, 9, 34, 1, 34, 1, 34, 1, 35, 5, 35, 1336, 8, 35, 10, 35, 12, 35, 1339, 9, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 1346, 8, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1351, 8, 37, 10, 37, 12, 37, 1354, 9, 37, 1, 37, 3, 37, 1357, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1362, 8, 38, 1, 39, 3, 39, 1365, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 3, 41, 1371, 8, 41, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1385, 8, 44, 1, 44, 3, 44, 1388, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 1396, 8, 45, 1, 45, 1, 45, 1, 45, 5, 45, 1401, 8, 45, 10, 45, 12, 45, 1404, 9, 45, 1, 45, 1, 45, 1, 46, 3, 46, 1409, 8, 46, 1, 46, 1, 46, 3, 46, 1413, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1420, 8, 47, 1, 48, 1, 48, 1, 48, 3, 48, 1425, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1432, 8, 49, 1, 49, 3, 49, 1435, 8, 49, 1, 50, 1, 50, 4, 50, 1439, 8, 50, 11, 50, 12, 50, 1440, 1, 50, 1, 50, 4, 50, 1445, 8, 50, 11, 50, 12, 50, 1446, 3, 50, 1449, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 3, 52, 1457, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1485, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1497, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 3, 56, 1505, 8, 56, 1, 56, 5, 56, 1508, 8, 56, 10, 56, 12, 56, 1511, 9, 56, 1, 57, 3, 57, 1514, 8, 57, 1, 57, 3, 57, 1517, 8, 57, 1, 57, 3, 57, 1520, 8, 57, 1, 57, 1, 57, 4, 57, 1524, 8, 57, 11, 57, 12, 57, 1525, 1, 57, 5, 57, 1529, 8, 57, 10, 57, 12, 57, 1532, 9, 57, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1538, 8, 58, 10, 58, 12, 58, 1541, 9, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1550, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 1557, 8, 61, 10, 61, 12, 61, 1560, 9, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1566, 8, 62, 10, 62, 12, 62, 1569, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 1575, 8, 63, 10, 63, 12, 63, 1578, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1584, 8, 64, 10, 64, 12, 64, 1587, 9, 64, 1, 65, 1, 65, 1, 65, 5, 65, 1592, 8, 65, 10, 65, 12, 65, 1595, 9, 65, 1, 65, 3, 65, 1598, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1604, 8, 66, 1, 67, 1, 67, 3, 67, 1608, 8, 67, 3, 67, 1610, 8, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 5, 69, 1623, 8, 69, 10, 69, 12, 69, 1626, 9, 69, 1, 70, 1, 70, 1, 70, 5, 70, 1631, 8, 70, 10, 70, 12, 70, 1634, 9, 70, 1, 71, 1, 71, 3, 71, 1638, 8, 71, 3, 71, 1640, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 1646, 8, 71, 10, 71, 12, 71, 1649, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 1655, 8, 71, 10, 71, 12, 71, 1658, 9, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 5, 72, 1665, 8, 72, 10, 72, 12, 72, 1668, 9, 72, 1, 73, 1, 73, 3, 73, 1672, 8, 73, 3, 73, 1674, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 1680, 8, 73, 10, 73, 12, 73, 1683, 9, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 1689, 8, 73, 10, 73, 12, 73, 1692, 9, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 1699, 8, 74, 10, 74, 12, 74, 1702, 9, 74, 1, 75, 1, 75, 1, 75, 5, 75, 1707, 8, 75, 10, 75, 12, 75, 1710, 9, 75, 1, 76, 1, 76, 1, 76, 5, 76, 1715, 8, 76, 10, 76, 12, 76, 1718, 9, 76, 1, 77, 1, 77, 1, 77, 5, 77, 1723, 8, 77, 10, 77, 12, 77, 1726, 9, 77, 1, 78, 1, 78, 3, 78, 1730, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 3, 82, 1745, 8, 82, 1, 82, 3, 82, 1748, 8, 82, 1, 82, 3, 82, 1751, 8, 82, 1, 82, 1, 82, 3, 82, 1755, 8, 82, 1, 82, 5, 82, 1758, 8, 82, 10, 82, 12, 82, 1761, 9, 82, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 1767, 8, 83, 10, 83, 12, 83, 1770, 9, 83, 1, 84, 1, 84, 3, 84, 1774, 8, 84, 3, 84, 1776, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 3, 86, 1789, 8, 86, 1, 86, 3, 86, 1792, 8, 86, 1, 86, 1, 86, 3, 86, 1796, 8, 86, 1, 86, 1, 86, 3, 86, 1800, 8, 86, 1, 86, 3, 86, 1803, 8, 86, 1, 86, 1, 86, 1, 87, 3, 87, 1808, 8, 87, 1, 87, 1, 87, 1, 88, 3, 88, 1813, 8, 88, 1, 88, 3, 88, 1816, 8, 88, 1, 88, 3, 88, 1819, 8, 88, 1, 88, 3, 88, 1822, 8, 88, 1, 88, 3, 88, 1825, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1831, 8, 89, 1, 89, 5, 89, 1834, 8, 89, 10, 89, 12, 89, 1837, 9, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1846, 8, 91, 3, 91, 1848, 8, 91, 1, 92, 1, 92, 1, 93, 3, 93, 1853, 8, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1858, 8, 93, 1, 93, 1, 93, 3, 93, 1862, 8, 93, 1, 93, 5, 93, 1865, 8, 93, 10, 93, 12, 93, 1868, 9, 93, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1874, 8, 94, 1, 94, 3, 94, 1877, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1883, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 5, 96, 1889, 8, 96, 10, 96, 12, 96, 1892, 9, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 1903, 8, 98, 10, 98, 12, 98, 1906, 9, 98, 1, 99, 4, 99, 1909, 8, 99, 11, 99, 12, 99, 1910, 1, 99, 3, 99, 1914, 8, 99, 1, 99, 5, 99, 1917, 8, 99, 10, 99, 12, 99, 1920, 9, 99, 1, 99, 1, 99, 5, 99, 1924, 8, 99, 10, 99, 12, 99, 1927, 9, 99, 3, 99, 1929, 8, 99, 1, 100, 1, 100, 1, 100, 3, 100, 1934, 8, 100, 1, 100, 1, 100, 3, 100, 1938, 8, 100, 3, 100, 1940, 8, 100, 1, 100, 1, 100, 3, 100, 1944, 8, 100, 1, 100, 1, 100, 3, 100, 1948, 8, 100, 3, 100, 1950, 8, 100, 3, 100, 1952, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1959, 8, 101, 1, 102, 1, 102, 1, 102, 5, 102, 1964, 8, 102, 10, 102, 12, 102, 1967, 9, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1974, 8, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 5, 104, 1981, 8, 104, 10, 104, 12, 104, 1984, 9, 104, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 5, 108, 1998, 8, 108, 10, 108, 12, 108, 2001, 9, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 2008, 8, 110, 3, 110, 2010, 8, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 2017, 8, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 2024, 8, 110, 1, 111, 1, 111, 1, 111, 5, 111, 2029, 8, 111, 10, 111, 12, 111, 2032, 9, 111, 1, 112, 1, 112, 3, 112, 2036, 8, 112, 3, 112, 2038, 8, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 5, 113, 2049, 8, 113, 10, 113, 12, 113, 2052, 9, 113, 1, 114, 1, 114, 1, 114, 5, 114, 2057, 8, 114, 10, 114, 12, 114, 2060, 9, 114, 1, 115, 1, 115, 1, 115, 5, 115, 2065, 8, 115, 10, 115, 12, 115, 2068, 9, 115, 1, 116, 1, 116, 3, 116, 2072, 8, 116, 3, 116, 2074, 8, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 5, 117, 2085, 8, 117, 10, 117, 12, 117, 2088, 9, 117, 1, 118, 1, 118, 1, 118, 1, 118, 4, 118, 2094, 8, 118, 11, 118, 12, 118, 2095, 3, 118, 2098, 8, 118, 1, 119, 1, 119, 1, 119, 4, 119, 2103, 8, 119, 11, 119, 12, 119, 2104, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 2111, 8, 121, 3, 121, 2113, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 2119, 8, 121, 10, 121, 12, 121, 2122, 9, 121, 1, 121, 1, 121, 1, 121, 1, 121, 5, 121, 2128, 8, 121, 10, 121, 12, 121, 2131, 9, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 5, 122, 2138, 8, 122, 10, 122, 12, 122, 2141, 9, 122, 1, 123, 1, 123, 3, 123, 2145, 8, 123, 1, 123, 3, 123, 2148, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 3, 130, 2186, 8, 130, 1, 130, 3, 130, 2189, 8, 130, 1, 130, 3, 130, 2192, 8, 130, 1, 130, 1, 130, 1, 131, 1, 131, 3, 131, 2198, 8, 131, 1, 132, 3, 132, 2201, 8, 132, 1, 132, 1, 132, 1, 132, 3, 132, 2206, 8, 132, 3, 132, 2208, 8, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 3, 133, 2215, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 2223, 8, 133, 10, 133, 12, 133, 2226, 9, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 3, 135, 2233, 8, 135, 1, 135, 1, 135, 1, 135, 3, 135, 2238, 8, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2257, 8, 139, 1, 139, 3, 139, 2260, 8, 139, 1, 139, 3, 139, 2263, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2269, 8, 139, 3, 139, 2271, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2284, 8, 141, 1, 141, 3, 141, 2287, 8, 141, 1, 141, 3, 141, 2290, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2296, 8, 141, 3, 141, 2298, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2309, 8, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 2323, 8, 145, 1, 146, 1, 146, 5, 146, 2327, 8, 146, 10, 146, 12, 146, 2330, 9, 146, 1, 146, 3, 146, 2333, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2346, 8, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 2359, 8, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 3, 152, 2366, 8, 152, 1, 152, 1, 152, 3, 152, 2370, 8, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, 1, 155, 1, 155, 1, 156, 1, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, 2413, 8, 170, 10, 170, 12, 170, 2416, 9, 170, 1, 171, 1, 171, 3, 171, 2420, 8, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 5, 177, 2435, 8, 177, 10, 177, 12, 177, 2438, 9, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 3, 184, 2455, 8, 184, 1, 184, 1, 184, 1, 184, 3, 184, 2460, 8, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 3, 188, 2480, 8, 188, 1, 188, 1, 188, 3, 188, 2484, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2491, 8, 188, 1, 188, 3, 188, 2494, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2501, 8, 188, 1, 188, 3, 188, 2504, 8, 188, 1, 188, 1, 188, 3, 188, 2508, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2515, 8, 188, 3, 188, 2517, 8, 188, 1, 189, 1, 189, 1, 190, 3, 190, 2522, 8, 190, 1, 190, 1, 190, 3, 190, 2526, 8, 190, 1, 190, 1, 190, 3, 190, 2530, 8, 190, 1, 190, 1, 190, 3, 190, 2534, 8, 190, 1, 190, 1, 190, 3, 190, 2538, 8, 190, 3, 190, 2540, 8, 190, 1, 191, 4, 191, 2543, 8, 191, 11, 191, 12, 191, 2544, 1, 191, 3, 191, 2548, 8, 191, 1, 191, 5, 191, 2551, 8, 191, 10, 191, 12, 191, 2554, 9, 191, 1, 191, 1, 191, 4, 191, 2558, 8, 191, 11, 191, 12, 191, 2559, 3, 191, 2562, 8, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 5, 193, 2569, 8, 193, 10, 193, 12, 193, 2572, 9, 193, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2586, 8, 198, 3, 198, 2588, 8, 198, 1, 198, 1, 198, 1, 199, 1, 199, 3, 199, 2594, 8, 199, 1, 200, 1, 200, 3, 200, 2598, 8, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 3, 201, 2605, 8, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 2618, 8, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 3, 205, 2625, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2636, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2642, 8, 208, 1, 209, 1, 209, 1, 210, 5, 210, 2647, 8, 210, 10, 210, 12, 210, 2650, 9, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 5, 210, 2658, 8, 210, 10, 210, 12, 210, 2661, 9, 210, 3, 210, 2663, 8, 210, 1, 210, 1, 210, 1, 211, 3, 211, 2668, 8, 211, 1, 211, 1, 211, 1, 211, 3, 211, 2673, 8, 211, 3, 211, 2675, 8, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 5, 212, 2682, 8, 212, 10, 212, 12, 212, 2685, 9, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 5, 212, 2693, 8, 212, 10, 212, 12, 212, 2696, 9, 212, 1, 212, 3, 212, 2699, 8, 212, 1, 213, 1, 213, 1, 213, 1, 213, 3, 213, 2705, 8, 213, 1, 214, 1, 214, 1, 215, 3, 215, 2710, 8, 215, 1, 215, 3, 215, 2713, 8, 215, 1, 215, 1, 215, 3, 215, 2717, 8, 215, 1, 215, 3, 215, 2720, 8, 215, 1, 215, 1, 215, 1, 216, 5, 216, 2725, 8, 216, 10, 216, 12, 216, 2728, 9, 216, 1, 216, 1, 216, 1, 216, 1, 217, 3, 217, 2734, 8, 217, 1, 217, 1, 217, 5, 217, 2738, 8, 217, 10, 217, 12, 217, 2741, 9, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 3, 218, 2748, 8, 218, 1, 219, 1, 219, 1, 219, 5, 219, 2753, 8, 219, 10, 219, 12, 219, 2756, 9, 219, 1, 219, 3, 219, 2759, 8, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 3, 221, 2767, 8, 221, 1, 221, 3, 221, 2770, 8, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2775, 8, 221, 10, 221, 12, 221, 2778, 9, 221, 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2784, 8, 221, 10, 221, 12, 221, 2787, 9, 221, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 2795, 8, 223, 1, 224, 1, 224, 1, 224, 3, 224, 2800, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 2832, 8, 225, 1, 226, 1, 226, 3, 226, 2836, 8, 226, 1, 227, 1, 227, 1, 228, 1, 228, 1, 229, 3, 229, 2843, 8, 229, 1, 229, 5, 229, 2846, 8, 229, 10, 229, 12, 229, 2849, 9, 229, 1, 230, 1, 230, 1, 230, 1, 231, 3, 231, 2855, 8, 231, 1, 231, 3, 231, 2858, 8, 231, 1, 232, 1, 232, 1, 232, 5, 232, 2863, 8, 232, 10, 232, 12, 232, 2866, 9, 232, 1, 232, 3, 232, 2869, 8, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 2876, 8, 233, 1, 233, 1, 233, 1, 233, 3, 233, 2881, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 2888, 8, 234, 1, 234, 3, 234, 2891, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 2901, 8, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 241, 3, 241, 2923, 8, 241, 1, 241, 3, 241, 2926, 8, 241, 1, 241, 3, 241, 2929, 8, 241, 1, 241, 3, 241, 2932, 8, 241, 1, 242, 1, 242, 3, 242, 2936, 8, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 245, 1, 245, 3, 245, 2945, 8, 245, 1, 246, 1, 246, 5, 246, 2949, 8, 246, 10, 246, 12, 246, 2952, 9, 246, 1, 247, 3, 247, 2955, 8, 247, 1, 247, 1, 247, 1, 248, 1, 248, 3, 248, 2961, 8, 248, 1, 248, 3, 248, 2964, 8, 248, 1, 249, 3, 249, 2967, 8, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 3, 252, 2978, 8, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 5, 254, 2989, 8, 254, 10, 254, 12, 254, 2992, 9, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 3004, 8, 255, 1, 256, 1, 256, 3, 256, 3008, 8, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 3025, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 3043, 8, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 3066, 8, 259, 1, 260, 1, 260, 1, 260, 1, 260, 5, 260, 3072, 8, 260, 10, 260, 12, 260, 3075, 9, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 5, 263, 3087, 8, 263, 10, 263, 12, 263, 3090, 9, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 5, 264, 3101, 8, 264, 10, 264, 12, 264, 3104, 9, 264, 1, 264, 3, 264, 3107, 8, 264, 1, 265, 1, 265, 1, 265, 1, 266, 3, 266, 3113, 8, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 3, 268, 3122, 8, 268, 1, 268, 1, 268, 3, 268, 3126, 8, 268, 1, 268, 5, 268, 3129, 8, 268, 10, 268, 12, 268, 3132, 9, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 3, 270, 3140, 8, 270, 1, 270, 1, 270, 5, 270, 3144, 8, 270, 10, 270, 12, 270, 3147, 9, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 272, 1, 272, 3, 272, 3157, 8, 272, 1, 272, 3, 272, 3160, 8, 272, 1, 272, 5, 272, 3163, 8, 272, 10, 272, 12, 272, 3166, 9, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 5, 274, 3175, 8, 274, 10, 274, 12, 274, 3178, 9, 274, 1, 274, 1, 274, 1, 275, 1, 275, 3, 275, 3184, 8, 275, 1, 275, 1, 275, 5, 275, 3188, 8, 275, 10, 275, 12, 275, 3191, 9, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 3201, 8, 277, 1, 277, 1, 277, 3, 277, 3205, 8, 277, 3, 277, 3207, 8, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 280, 1, 280, 1, 281, 3, 281, 3219, 8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 3, 292, 3264, 8, 292, 1, 292, 3, 292, 3267, 8, 292, 1, 292, 1, 292, 3, 292, 3271, 8, 292, 1, 292, 1, 292, 3, 292, 3275, 8, 292, 1, 292, 1, 292, 1, 293, 1, 293, 3, 293, 3281, 8, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 5, 295, 3293, 8, 295, 10, 295, 12, 295, 3296, 9, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 3, 296, 3303, 8, 296, 3, 296, 3305, 8, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 3, 297, 3316, 8, 297, 3, 297, 3318, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 5, 299, 3335, 8, 299, 10, 299, 12, 299, 3338, 9, 299, 1, 299, 3, 299, 3341, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 3347, 8, 300, 1, 300, 1, 300, 1, 300, 3, 300, 3352, 8, 300, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 3362, 8, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 3, 304, 3370, 8, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 3, 307, 3381, 8, 307, 1, 307, 3, 307, 3384, 8, 307, 1, 307, 1, 307, 3, 307, 3388, 8, 307, 1, 307, 3, 307, 3391, 8, 307, 1, 308, 1, 308, 3, 308, 3395, 8, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 5, 310, 3407, 8, 310, 10, 310, 12, 310, 3410, 9, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 312, 3, 312, 3417, 8, 312, 1, 312, 1, 312, 1, 312, 3, 312, 3422, 8, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 3, 315, 3437, 8, 315, 1, 315, 1, 315, 3, 315, 3441, 8, 315, 1, 315, 1, 315, 3, 315, 3445, 8, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 3, 318, 3458, 8, 318, 1, 318, 3, 318, 3461, 8, 318, 1, 318, 1, 318, 3, 318, 3465, 8, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 3472, 8, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 3478, 8, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 3, 325, 3501, 8, 325, 1, 326, 1, 326, 1, 326, 4, 326, 3506, 8, 326, 11, 326, 12, 326, 3507, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 5, 328, 3522, 8, 328, 10, 328, 12, 328, 3525, 9, 328, 1, 328, 3, 328, 3528, 8, 328, 1, 329, 1, 329, 1, 329, 5, 329, 3533, 8, 329, 10, 329, 12, 329, 3536, 9, 329, 1, 329, 3, 329, 3539, 8, 329, 1, 329, 1, 329, 5, 329, 3543, 8, 329, 10, 329, 12, 329, 3546, 9, 329, 1, 329, 3, 329, 3549, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 3, 330, 3557, 8, 330, 1, 330, 3, 330, 3560, 8, 330, 1, 331, 1, 331, 3, 331, 3564, 8, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 3, 337, 3586, 8, 337, 1, 337, 3, 337, 3589, 8, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 3, 339, 3598, 8, 339, 1, 339, 1, 339, 3, 339, 3602, 8, 339, 3, 339, 3604, 8, 339, 1, 339, 3, 339, 3607, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 3617, 8, 340, 1, 341, 1, 341, 3, 341, 3621, 8, 341, 1, 342, 1, 342, 3, 342, 3625, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 3631, 8, 343, 1, 344, 1, 344, 3, 344, 3635, 8, 344, 1, 344, 3, 344, 3638, 8, 344, 1, 344, 5, 344, 3641, 8, 344, 10, 344, 12, 344, 3644, 9, 344, 1, 345, 1, 345, 1, 345, 3, 345, 3649, 8, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 3, 346, 3656, 8, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 3, 347, 3663, 8, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 3, 348, 3670, 8, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 3, 350, 3679, 8, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 3, 351, 3687, 8, 351, 1, 352, 1, 352, 1, 353, 1, 353, 3, 353, 3693, 8, 353, 1, 353, 3, 353, 3696, 8, 353, 1, 353, 3, 353, 3699, 8, 353, 1, 354, 1, 354, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 1, 356, 3, 356, 3709, 8, 356, 1, 357, 1, 357, 1, 357, 3, 357, 3714, 8, 357, 1, 357, 1, 357, 1, 357, 3, 357, 3719, 8, 357, 1, 357, 1, 357, 1, 357, 3, 357, 3724, 8, 357, 1, 357, 1, 357, 1, 358, 3, 358, 3729, 8, 358, 1, 358, 1, 358, 1, 358, 3, 358, 3734, 8, 358, 1, 359, 1, 359, 1, 359, 1, 359, 3, 359, 3740, 8, 359, 1, 359, 1, 359, 1, 359, 1, 359, 3, 359, 3746, 8, 359, 1, 360, 1, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 3, 365, 3761, 8, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 3, 367, 3774, 8, 367, 1, 368, 1, 368, 1, 369, 1, 369, 3, 369, 3780, 8, 369, 1, 369, 1, 369, 3, 369, 3784, 8, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 3, 370, 3795, 8, 370, 3, 370, 3797, 8, 370, 1, 371, 1, 371, 1, 372, 1, 372, 1, 373, 1, 373, 3, 373, 3805, 8, 373, 3, 373, 3807, 8, 373, 1, 373, 1, 373, 5, 373, 3811, 8, 373, 10, 373, 12, 373, 3814, 9, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 3825, 8, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 3832, 8, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 3, 377, 3842, 8, 377, 1, 378, 3, 378, 3845, 8, 378, 1, 379, 1, 379, 1, 379, 3, 379, 3850, 8, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 3, 383, 3867, 8, 383, 3, 383, 3869, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 3, 385, 3886, 8, 385, 1, 385, 1, 385, 5, 385, 3890, 8, 385, 10, 385, 12, 385, 3893, 9, 385, 1, 385, 3, 385, 3896, 8, 385, 1, 386, 1, 386, 3, 386, 3900, 8, 386, 1, 386, 1, 386, 5, 386, 3904, 8, 386, 10, 386, 12, 386, 3907, 9, 386, 1, 386, 1, 386, 1, 386, 5, 386, 3912, 8, 386, 10, 386, 12, 386, 3915, 9, 386, 1, 386, 1, 386, 3, 386, 3919, 8, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 3, 390, 3937, 8, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 1, 391, 3, 391, 3948, 8, 391, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 3, 399, 3975, 8, 399, 1, 399, 1, 399, 5, 399, 3979, 8, 399, 10, 399, 12, 399, 3982, 9, 399, 1, 399, 3, 399, 3985, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 3991, 8, 400, 1, 400, 1, 400, 3, 400, 3995, 8, 400, 3, 400, 3997, 8, 400, 1, 400, 3, 400, 4000, 8, 400, 1, 400, 1, 400, 1, 401, 1, 401, 3, 401, 4006, 8, 401, 1, 401, 3, 401, 4009, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 4016, 8, 401, 1, 401, 3, 401, 4019, 8, 401, 1, 401, 3, 401, 4022, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 4033, 8, 402, 1, 402, 3, 402, 4036, 8, 402, 1, 402, 3, 402, 4039, 8, 402, 1, 402, 1, 402, 1, 402, 3, 402, 4044, 8, 402, 1, 402, 3, 402, 4047, 8, 402, 1, 402, 1, 402, 3, 402, 4051, 8, 402, 3, 402, 4053, 8, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 1, 405, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 4075, 8, 407, 1, 408, 1, 408, 1, 408, 5, 408, 4080, 8, 408, 10, 408, 12, 408, 4083, 9, 408, 1, 408, 3, 408, 4086, 8, 408, 1, 409, 1, 409, 1, 409, 5, 409, 4091, 8, 409, 10, 409, 12, 409, 4094, 9, 409, 1, 409, 3, 409, 4097, 8, 409, 1, 410, 1, 410, 1, 410, 5, 410, 4102, 8, 410, 10, 410, 12, 410, 4105, 9, 410, 1, 410, 3, 410, 4108, 8, 410, 1, 411, 1, 411, 1, 411, 5, 411, 4113, 8, 411, 10, 411, 12, 411, 4116, 9, 411, 1, 411, 3, 411, 4119, 8, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 3, 417, 4144, 8, 417, 1, 418, 5, 418, 4147, 8, 418, 10, 418, 12, 418, 4150, 9, 418, 1, 418, 3, 418, 4153, 8, 418, 1, 419, 1, 419, 3, 419, 4157, 8, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 3, 423, 4177, 8, 423, 1, 423, 1, 423, 3, 423, 4181, 8, 423, 1, 423, 1, 423, 3, 423, 4185, 8, 423, 1, 423, 1, 423, 1, 424, 3, 424, 4190, 8, 424, 1, 424, 3, 424, 4193, 8, 424, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 5, 426, 4204, 8, 426, 10, 426, 12, 426, 4207, 9, 426, 1, 426, 3, 426, 4210, 8, 426, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 1, 427, 3, 427, 4219, 8, 427, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 5, 429, 4226, 8, 429, 10, 429, 12, 429, 4229, 9, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 432, 1, 432, 3, 432, 4241, 8, 432, 1, 432, 1, 432, 1, 432, 5, 432, 4246, 8, 432, 10, 432, 12, 432, 4249, 9, 432, 1, 432, 1, 432, 4, 432, 4253, 8, 432, 11, 432, 12, 432, 4254, 3, 432, 4257, 8, 432, 1, 432, 1, 432, 1, 432, 3, 432, 4262, 8, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 3, 434, 4270, 8, 434, 1, 434, 1, 434, 1, 434, 5, 434, 4275, 8, 434, 10, 434, 12, 434, 4278, 9, 434, 1, 434, 1, 434, 4, 434, 4282, 8, 434, 11, 434, 12, 434, 4283, 3, 434, 4286, 8, 434, 1, 434, 1, 434, 1, 434, 3, 434, 4291, 8, 434, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 5, 436, 4298, 8, 436, 10, 436, 12, 436, 4301, 9, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 5, 438, 4310, 8, 438, 10, 438, 12, 438, 4313, 9, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 3, 440, 4325, 8, 440, 3, 440, 4327, 8, 440, 1, 440, 1, 440, 1, 440, 3, 440, 4332, 8, 440, 1, 440, 1, 440, 3, 440, 4336, 8, 440, 3, 440, 4338, 8, 440, 1, 440, 3, 440, 4341, 8, 440, 1, 440, 1, 440, 3, 440, 4345, 8, 440, 1, 440, 1, 440, 1, 441, 1, 441, 1, 442, 1, 442, 1, 443, 1, 443, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 5, 449, 4382, 8, 449, 10, 449, 12, 449, 4385, 9, 449, 1, 449, 3, 449, 4388, 8, 449, 1, 449, 3, 449, 4391, 8, 449, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 3, 450, 4398, 8, 450, 1, 451, 1, 451, 1, 451, 1, 451, 1, 452, 5, 452, 4405, 8, 452, 10, 452, 12, 452, 4408, 9, 452, 1, 452, 1, 452, 1, 452, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 5, 458, 4441, 8, 458, 10, 458, 12, 458, 4444, 9, 458, 1, 458, 1, 458, 1, 458, 5, 458, 4449, 8, 458, 10, 458, 12, 458, 4452, 9, 458, 1, 458, 1, 458, 4, 458, 4456, 8, 458, 11, 458, 12, 458, 4457, 3, 458, 4460, 8, 458, 1, 458, 1, 458, 1, 458, 3, 458, 4465, 8, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 461, 1, 461, 1, 461, 1, 461, 3, 461, 4484, 8, 461, 1, 461, 1, 461, 1, 461, 3, 461, 4489, 8, 461, 3, 461, 4491, 8, 461, 1, 461, 3, 461, 4494, 8, 461, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 463, 5, 463, 4507, 8, 463, 10, 463, 12, 463, 4510, 9, 463, 1, 463, 3, 463, 4513, 8, 463, 1, 464, 1, 464, 1, 464, 3, 464, 4518, 8, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 3, 466, 4526, 8, 466, 1, 466, 1, 466, 1, 466, 5, 466, 4531, 8, 466, 10, 466, 12, 466, 4534, 9, 466, 1, 466, 1, 466, 4, 466, 4538, 8, 466, 11, 466, 12, 466, 4539, 3, 466, 4542, 8, 466, 1, 466, 3, 466, 4545, 8, 466, 1, 467, 1, 467, 1, 467, 3, 467, 4550, 8, 467, 1, 467, 3, 467, 4553, 8, 467, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 5, 468, 4560, 8, 468, 10, 468, 12, 468, 4563, 9, 468, 1, 468, 3, 468, 4566, 8, 468, 1, 469, 1, 469, 1, 469, 1, 469, 3, 469, 4572, 8, 469, 1, 470, 1, 470, 1, 470, 3, 470, 4577, 8, 470, 1, 470, 1, 470, 1, 471, 1, 471, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 477, 3, 477, 4606, 8, 477, 1, 477, 5, 477, 4609, 8, 477, 10, 477, 12, 477, 4612, 9, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 478, 1, 478, 1, 479, 5, 479, 4621, 8, 479, 10, 479, 12, 479, 4624, 9, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 5, 479, 4632, 8, 479, 10, 479, 12, 479, 4635, 9, 479, 3, 479, 4637, 8, 479, 1, 479, 1, 479, 1, 480, 3, 480, 4642, 8, 480, 1, 480, 1, 480, 1, 480, 3, 480, 4647, 8, 480, 3, 480, 4649, 8, 480, 1, 480, 1, 480, 1, 481, 1, 481, 1, 482, 3, 482, 4656, 8, 482, 1, 482, 3, 482, 4659, 8, 482, 1, 482, 1, 482, 3, 482, 4663, 8, 482, 1, 482, 3, 482, 4666, 8, 482, 1, 482, 1, 482, 1, 483, 3, 483, 4671, 8, 483, 1, 483, 4, 483, 4674, 8, 483, 11, 483, 12, 483, 4675, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 4, 484, 4683, 8, 484, 11, 484, 12, 484, 4684, 1, 484, 1, 484, 1, 485, 1, 485, 3, 485, 4691, 8, 485, 1, 486, 1, 486, 1, 486, 1, 486, 1, 486, 3, 486, 4698, 8, 486, 1, 487, 3, 487, 4701, 8, 487, 1, 487, 3, 487, 4704, 8, 487, 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 491, 1, 491, 1, 492, 1, 492, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 0, 1, 0, 495, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 0, 27, 4, 0, 107, 107, 199, 199, 201, 201, 217, 217, 2, 0, 191, 191, 210, 210, 3, 0, 174, 174, 177, 178, 187, 187, 4, 0, 186, 186, 189, 189, 206, 206, 208, 208, 2, 0, 199, 199, 201, 201, 3, 0, 194, 194, 198, 198, 203, 203, 2, 0, 179, 179, 213, 213, 3, 0, 76, 76, 90, 90, 210, 210, 2, 0, 64, 64, 156, 156, 1, 0, 218, 219, 1, 0, 122, 124, 2, 0, 139, 139, 185, 185, 2, 0, 34, 34, 217, 217, 2, 0, 31, 31, 120, 120, 2, 0, 39, 39, 163, 163, 3, 0, 80, 80, 83, 83, 114, 114, 2, 0, 148, 148, 185, 185, 2, 0, 128, 128, 175, 175, 2, 0, 42, 42, 188, 188, 2, 0, 125, 125, 176, 176, 1, 0, 221, 222, 2, 0, 184, 184, 207, 207, 2, 0, 102, 102, 210, 210, 2, 0, 2, 2, 165, 165, 2, 0, 137, 137, 153, 153, 2, 0, 6, 6, 18, 18, 2, 0, 17, 17, 132, 132, 4968, 0, 1005, 1, 0, 0, 0, 2, 1091, 1, 0, 0, 0, 4, 1093, 1, 0, 0, 0, 6, 1116, 1, 0, 0, 0, 8, 1121, 1, 0, 0, 0, 10, 1123, 1, 0, 0, 0, 12, 1125, 1, 0, 0, 0, 14, 1129, 1, 0, 0, 0, 16, 1132, 1, 0, 0, 0, 18, 1136, 1, 0, 0, 0, 20, 1140, 1, 0, 0, 0, 22, 1147, 1, 0, 0, 0, 24, 1155, 1, 0, 0, 0, 26, 1163, 1, 0, 0, 0, 28, 1172, 1, 0, 0, 0, 30, 1174, 1, 0, 0, 0, 32, 1176, 1, 0, 0, 0, 34, 1178, 1, 0, 0, 0, 36, 1180, 1, 0, 0, 0, 38, 1182, 1, 0, 0, 0, 40, 1184, 1, 0, 0, 0, 42, 1186, 1, 0, 0, 0, 44, 1188, 1, 0, 0, 0, 46, 1200, 1, 0, 0, 0, 48, 1219, 1, 0, 0, 0, 50, 1223, 1, 0, 0, 0, 52, 1227, 1, 0, 0, 0, 54, 1271, 1, 0, 0, 0, 56, 1273, 1, 0, 0, 0, 58, 1275, 1, 0, 0, 0, 60, 1281, 1, 0, 0, 0, 62, 1298, 1, 0, 0, 0, 64, 1306, 1, 0, 0, 0, 66, 1320, 1, 0, 0, 0, 68, 1329, 1, 0, 0, 0, 70, 1337, 1, 0, 0, 0, 72, 1343, 1, 0, 0, 0, 74, 1356, 1, 0, 0, 0, 76, 1361, 1, 0, 0, 0, 78, 1364, 1, 0, 0, 0, 80, 1366, 1, 0, 0, 0, 82, 1370, 1, 0, 0, 0, 84, 1372, 1, 0, 0, 0, 86, 1375, 1, 0, 0, 0, 88, 1378, 1, 0, 0, 0, 90, 1395, 1, 0, 0, 0, 92, 1408, 1, 0, 0, 0, 94, 1419, 1, 0, 0, 0, 96, 1421, 1, 0, 0, 0, 98, 1434, 1, 0, 0, 0, 100, 1448, 1, 0, 0, 0, 102, 1450, 1, 0, 0, 0, 104, 1456, 1, 0, 0, 0, 106, 1484, 1, 0, 0, 0, 108, 1496, 1, 0, 0, 0, 110, 1498, 1, 0, 0, 0, 112, 1504, 1, 0, 0, 0, 114, 1513, 1, 0, 0, 0, 116, 1533, 1, 0, 0, 0, 118, 1542, 1, 0, 0, 0, 120, 1549, 1, 0, 0, 0, 122, 1551, 1, 0, 0, 0, 124, 1561, 1, 0, 0, 0, 126, 1570, 1, 0, 0, 0, 128, 1579, 1, 0, 0, 0, 130, 1597, 1, 0, 0, 0, 132, 1603, 1, 0, 0, 0, 134, 1609, 1, 0, 0, 0, 136, 1617, 1, 0, 0, 0, 138, 1619, 1, 0, 0, 0, 140, 1627, 1, 0, 0, 0, 142, 1639, 1, 0, 0, 0, 144, 1661, 1, 0, 0, 0, 146, 1673, 1, 0, 0, 0, 148, 1695, 1, 0, 0, 0, 150, 1703, 1, 0, 0, 0, 152, 1711, 1, 0, 0, 0, 154, 1719, 1, 0, 0, 0, 156, 1729, 1, 0, 0, 0, 158, 1731, 1, 0, 0, 0, 160, 1735, 1, 0, 0, 0, 162, 1738, 1, 0, 0, 0, 164, 1744, 1, 0, 0, 0, 166, 1762, 1, 0, 0, 0, 168, 1775, 1, 0, 0, 0, 170, 1783, 1, 0, 0, 0, 172, 1799, 1, 0, 0, 0, 174, 1807, 1, 0, 0, 0, 176, 1812, 1, 0, 0, 0, 178, 1830, 1, 0, 0, 0, 180, 1838, 1, 0, 0, 0, 182, 1847, 1, 0, 0, 0, 184, 1849, 1, 0, 0, 0, 186, 1852, 1, 0, 0, 0, 188, 1876, 1, 0, 0, 0, 190, 1882, 1, 0, 0, 0, 192, 1884, 1, 0, 0, 0, 194, 1893, 1, 0, 0, 0, 196, 1897, 1, 0, 0, 0, 198, 1928, 1, 0, 0, 0, 200, 1951, 1, 0, 0, 0, 202, 1958, 1, 0, 0, 0, 204, 1960, 1, 0, 0, 0, 206, 1973, 1, 0, 0, 0, 208, 1977, 1, 0, 0, 0, 210, 1985, 1, 0, 0, 0, 212, 1988, 1, 0, 0, 0, 214, 1991, 1, 0, 0, 0, 216, 1994, 1, 0, 0, 0, 218, 2002, 1, 0, 0, 0, 220, 2023, 1, 0, 0, 0, 222, 2025, 1, 0, 0, 0, 224, 2037, 1, 0, 0, 0, 226, 2045, 1, 0, 0, 0, 228, 2053, 1, 0, 0, 0, 230, 2061, 1, 0, 0, 0, 232, 2073, 1, 0, 0, 0, 234, 2081, 1, 0, 0, 0, 236, 2097, 1, 0, 0, 0, 238, 2099, 1, 0, 0, 0, 240, 2106, 1, 0, 0, 0, 242, 2112, 1, 0, 0, 0, 244, 2134, 1, 0, 0, 0, 246, 2142, 1, 0, 0, 0, 248, 2154, 1, 0, 0, 0, 250, 2156, 1, 0, 0, 0, 252, 2161, 1, 0, 0, 0, 254, 2166, 1, 0, 0, 0, 256, 2171, 1, 0, 0, 0, 258, 2176, 1, 0, 0, 0, 260, 2182, 1, 0, 0, 0, 262, 2197, 1, 0, 0, 0, 264, 2207, 1, 0, 0, 0, 266, 2214, 1, 0, 0, 0, 268, 2229, 1, 0, 0, 0, 270, 2232, 1, 0, 0, 0, 272, 2241, 1, 0, 0, 0, 274, 2243, 1, 0, 0, 0, 276, 2245, 1, 0, 0, 0, 278, 2270, 1, 0, 0, 0, 280, 2272, 1, 0, 0, 0, 282, 2297, 1, 0, 0, 0, 284, 2299, 1, 0, 0, 0, 286, 2304, 1, 0, 0, 0, 288, 2312, 1, 0, 0, 0, 290, 2322, 1, 0, 0, 0, 292, 2328, 1, 0, 0, 0, 294, 2334, 1, 0, 0, 0, 296, 2338, 1, 0, 0, 0, 298, 2341, 1, 0, 0, 0, 300, 2349, 1, 0, 0, 0, 302, 2354, 1, 0, 0, 0, 304, 2362, 1, 0, 0, 0, 306, 2373, 1, 0, 0, 0, 308, 2375, 1, 0, 0, 0, 310, 2377, 1, 0, 0, 0, 312, 2379, 1, 0, 0, 0, 314, 2381, 1, 0, 0, 0, 316, 2383, 1, 0, 0, 0, 318, 2385, 1, 0, 0, 0, 320, 2389, 1, 0, 0, 0, 322, 2391, 1, 0, 0, 0, 324, 2393, 1, 0, 0, 0, 326, 2395, 1, 0, 0, 0, 328, 2397, 1, 0, 0, 0, 330, 2399, 1, 0, 0, 0, 332, 2401, 1, 0, 0, 0, 334, 2403, 1, 0, 0, 0, 336, 2405, 1, 0, 0, 0, 338, 2407, 1, 0, 0, 0, 340, 2409, 1, 0, 0, 0, 342, 2419, 1, 0, 0, 0, 344, 2421, 1, 0, 0, 0, 346, 2423, 1, 0, 0, 0, 348, 2425, 1, 0, 0, 0, 350, 2427, 1, 0, 0, 0, 352, 2429, 1, 0, 0, 0, 354, 2431, 1, 0, 0, 0, 356, 2439, 1, 0, 0, 0, 358, 2441, 1, 0, 0, 0, 360, 2443, 1, 0, 0, 0, 362, 2445, 1, 0, 0, 0, 364, 2447, 1, 0, 0, 0, 366, 2451, 1, 0, 0, 0, 368, 2459, 1, 0, 0, 0, 370, 2461, 1, 0, 0, 0, 372, 2466, 1, 0, 0, 0, 374, 2471, 1, 0, 0, 0, 376, 2516, 1, 0, 0, 0, 378, 2518, 1, 0, 0, 0, 380, 2539, 1, 0, 0, 0, 382, 2561, 1, 0, 0, 0, 384, 2563, 1, 0, 0, 0, 386, 2565, 1, 0, 0, 0, 388, 2573, 1, 0, 0, 0, 390, 2575, 1, 0, 0, 0, 392, 2577, 1, 0, 0, 0, 394, 2579, 1, 0, 0, 0, 396, 2587, 1, 0, 0, 0, 398, 2593, 1, 0, 0, 0, 400, 2595, 1, 0, 0, 0, 402, 2602, 1, 0, 0, 0, 404, 2609, 1, 0, 0, 0, 406, 2611, 1, 0, 0, 0, 408, 2613, 1, 0, 0, 0, 410, 2624, 1, 0, 0, 0, 412, 2626, 1, 0, 0, 0, 414, 2635, 1, 0, 0, 0, 416, 2641, 1, 0, 0, 0, 418, 2643, 1, 0, 0, 0, 420, 2648, 1, 0, 0, 0, 422, 2674, 1, 0, 0, 0, 424, 2698, 1, 0, 0, 0, 426, 2704, 1, 0, 0, 0, 428, 2706, 1, 0, 0, 0, 430, 2709, 1, 0, 0, 0, 432, 2726, 1, 0, 0, 0, 434, 2733, 1, 0, 0, 0, 436, 2745, 1, 0, 0, 0, 438, 2758, 1, 0, 0, 0, 440, 2760, 1, 0, 0, 0, 442, 2769, 1, 0, 0, 0, 444, 2788, 1, 0, 0, 0, 446, 2794, 1, 0, 0, 0, 448, 2796, 1, 0, 0, 0, 450, 2831, 1, 0, 0, 0, 452, 2835, 1, 0, 0, 0, 454, 2837, 1, 0, 0, 0, 456, 2839, 1, 0, 0, 0, 458, 2842, 1, 0, 0, 0, 460, 2850, 1, 0, 0, 0, 462, 2854, 1, 0, 0, 0, 464, 2868, 1, 0, 0, 0, 466, 2880, 1, 0, 0, 0, 468, 2900, 1, 0, 0, 0, 470, 2902, 1, 0, 0, 0, 472, 2905, 1, 0, 0, 0, 474, 2909, 1, 0, 0, 0, 476, 2912, 1, 0, 0, 0, 478, 2915, 1, 0, 0, 0, 480, 2918, 1, 0, 0, 0, 482, 2922, 1, 0, 0, 0, 484, 2933, 1, 0, 0, 0, 486, 2937, 1, 0, 0, 0, 488, 2940, 1, 0, 0, 0, 490, 2944, 1, 0, 0, 0, 492, 2946, 1, 0, 0, 0, 494, 2954, 1, 0, 0, 0, 496, 2963, 1, 0, 0, 0, 498, 2966, 1, 0, 0, 0, 500, 2970, 1, 0, 0, 0, 502, 2972, 1, 0, 0, 0, 504, 2977, 1, 0, 0, 0, 506, 2982, 1, 0, 0, 0, 508, 2986, 1, 0, 0, 0, 510, 3003, 1, 0, 0, 0, 512, 3007, 1, 0, 0, 0, 514, 3024, 1, 0, 0, 0, 516, 3042, 1, 0, 0, 0, 518, 3065, 1, 0, 0, 0, 520, 3067, 1, 0, 0, 0, 522, 3076, 1, 0, 0, 0, 524, 3081, 1, 0, 0, 0, 526, 3088, 1, 0, 0, 0, 528, 3106, 1, 0, 0, 0, 530, 3108, 1, 0, 0, 0, 532, 3112, 1, 0, 0, 0, 534, 3116, 1, 0, 0, 0, 536, 3121, 1, 0, 0, 0, 538, 3133, 1, 0, 0, 0, 540, 3139, 1, 0, 0, 0, 542, 3152, 1, 0, 0, 0, 544, 3154, 1, 0, 0, 0, 546, 3167, 1, 0, 0, 0, 548, 3171, 1, 0, 0, 0, 550, 3181, 1, 0, 0, 0, 552, 3194, 1, 0, 0, 0, 554, 3196, 1, 0, 0, 0, 556, 3210, 1, 0, 0, 0, 558, 3213, 1, 0, 0, 0, 560, 3215, 1, 0, 0, 0, 562, 3218, 1, 0, 0, 0, 564, 3220, 1, 0, 0, 0, 566, 3225, 1, 0, 0, 0, 568, 3229, 1, 0, 0, 0, 570, 3234, 1, 0, 0, 0, 572, 3238, 1, 0, 0, 0, 574, 3244, 1, 0, 0, 0, 576, 3246, 1, 0, 0, 0, 578, 3248, 1, 0, 0, 0, 580, 3252, 1, 0, 0, 0, 582, 3255, 1, 0, 0, 0, 584, 3260, 1, 0, 0, 0, 586, 3280, 1, 0, 0, 0, 588, 3282, 1, 0, 0, 0, 590, 3286, 1, 0, 0, 0, 592, 3299, 1, 0, 0, 0, 594, 3312, 1, 0, 0, 0, 596, 3325, 1, 0, 0, 0, 598, 3340, 1, 0, 0, 0, 600, 3351, 1, 0, 0, 0, 602, 3353, 1, 0, 0, 0, 604, 3361, 1, 0, 0, 0, 606, 3363, 1, 0, 0, 0, 608, 3369, 1, 0, 0, 0, 610, 3371, 1, 0, 0, 0, 612, 3374, 1, 0, 0, 0, 614, 3390, 1, 0, 0, 0, 616, 3394, 1, 0, 0, 0, 618, 3396, 1, 0, 0, 0, 620, 3400, 1, 0, 0, 0, 622, 3413, 1, 0, 0, 0, 624, 3416, 1, 0, 0, 0, 626, 3425, 1, 0, 0, 0, 628, 3430, 1, 0, 0, 0, 630, 3444, 1, 0, 0, 0, 632, 3446, 1, 0, 0, 0, 634, 3451, 1, 0, 0, 0, 636, 3477, 1, 0, 0, 0, 638, 3479, 1, 0, 0, 0, 640, 3481, 1, 0, 0, 0, 642, 3483, 1, 0, 0, 0, 644, 3488, 1, 0, 0, 0, 646, 3494, 1, 0, 0, 0, 648, 3496, 1, 0, 0, 0, 650, 3500, 1, 0, 0, 0, 652, 3505, 1, 0, 0, 0, 654, 3512, 1, 0, 0, 0, 656, 3527, 1, 0, 0, 0, 658, 3548, 1, 0, 0, 0, 660, 3559, 1, 0, 0, 0, 662, 3563, 1, 0, 0, 0, 664, 3565, 1, 0, 0, 0, 666, 3570, 1, 0, 0, 0, 668, 3573, 1, 0, 0, 0, 670, 3576, 1, 0, 0, 0, 672, 3579, 1, 0, 0, 0, 674, 3585, 1, 0, 0, 0, 676, 3590, 1, 0, 0, 0, 678, 3603, 1, 0, 0, 0, 680, 3616, 1, 0, 0, 0, 682, 3618, 1, 0, 0, 0, 684, 3622, 1, 0, 0, 0, 686, 3630, 1, 0, 0, 0, 688, 3632, 1, 0, 0, 0, 690, 3645, 1, 0, 0, 0, 692, 3652, 1, 0, 0, 0, 694, 3659, 1, 0, 0, 0, 696, 3666, 1, 0, 0, 0, 698, 3673, 1, 0, 0, 0, 700, 3678, 1, 0, 0, 0, 702, 3683, 1, 0, 0, 0, 704, 3688, 1, 0, 0, 0, 706, 3698, 1, 0, 0, 0, 708, 3700, 1, 0, 0, 0, 710, 3702, 1, 0, 0, 0, 712, 3708, 1, 0, 0, 0, 714, 3710, 1, 0, 0, 0, 716, 3728, 1, 0, 0, 0, 718, 3745, 1, 0, 0, 0, 720, 3747, 1, 0, 0, 0, 722, 3749, 1, 0, 0, 0, 724, 3751, 1, 0, 0, 0, 726, 3753, 1, 0, 0, 0, 728, 3755, 1, 0, 0, 0, 730, 3760, 1, 0, 0, 0, 732, 3768, 1, 0, 0, 0, 734, 3773, 1, 0, 0, 0, 736, 3775, 1, 0, 0, 0, 738, 3777, 1, 0, 0, 0, 740, 3787, 1, 0, 0, 0, 742, 3798, 1, 0, 0, 0, 744, 3800, 1, 0, 0, 0, 746, 3806, 1, 0, 0, 0, 748, 3817, 1, 0, 0, 0, 750, 3819, 1, 0, 0, 0, 752, 3833, 1, 0, 0, 0, 754, 3841, 1, 0, 0, 0, 756, 3844, 1, 0, 0, 0, 758, 3849, 1, 0, 0, 0, 760, 3853, 1, 0, 0, 0, 762, 3857, 1, 0, 0, 0, 764, 3861, 1, 0, 0, 0, 766, 3868, 1, 0, 0, 0, 768, 3877, 1, 0, 0, 0, 770, 3895, 1, 0, 0, 0, 772, 3918, 1, 0, 0, 0, 774, 3920, 1, 0, 0, 0, 776, 3924, 1, 0, 0, 0, 778, 3928, 1, 0, 0, 0, 780, 3932, 1, 0, 0, 0, 782, 3947, 1, 0, 0, 0, 784, 3949, 1, 0, 0, 0, 786, 3952, 1, 0, 0, 0, 788, 3955, 1, 0, 0, 0, 790, 3958, 1, 0, 0, 0, 792, 3961, 1, 0, 0, 0, 794, 3964, 1, 0, 0, 0, 796, 3967, 1, 0, 0, 0, 798, 3984, 1, 0, 0, 0, 800, 3986, 1, 0, 0, 0, 802, 4003, 1, 0, 0, 0, 804, 4027, 1, 0, 0, 0, 806, 4058, 1, 0, 0, 0, 808, 4061, 1, 0, 0, 0, 810, 4063, 1, 0, 0, 0, 812, 4066, 1, 0, 0, 0, 814, 4074, 1, 0, 0, 0, 816, 4076, 1, 0, 0, 0, 818, 4087, 1, 0, 0, 0, 820, 4098, 1, 0, 0, 0, 822, 4109, 1, 0, 0, 0, 824, 4120, 1, 0, 0, 0, 826, 4122, 1, 0, 0, 0, 828, 4125, 1, 0, 0, 0, 830, 4127, 1, 0, 0, 0, 832, 4133, 1, 0, 0, 0, 834, 4143, 1, 0, 0, 0, 836, 4148, 1, 0, 0, 0, 838, 4156, 1, 0, 0, 0, 840, 4158, 1, 0, 0, 0, 842, 4162, 1, 0, 0, 0, 844, 4168, 1, 0, 0, 0, 846, 4173, 1, 0, 0, 0, 848, 4189, 1, 0, 0, 0, 850, 4194, 1, 0, 0, 0, 852, 4209, 1, 0, 0, 0, 854, 4218, 1, 0, 0, 0, 856, 4220, 1, 0, 0, 0, 858, 4223, 1, 0, 0, 0, 860, 4232, 1, 0, 0, 0, 862, 4236, 1, 0, 0, 0, 864, 4261, 1, 0, 0, 0, 866, 4263, 1, 0, 0, 0, 868, 4290, 1, 0, 0, 0, 870, 4292, 1, 0, 0, 0, 872, 4295, 1, 0, 0, 0, 874, 4304, 1, 0, 0, 0, 876, 4307, 1, 0, 0, 0, 878, 4316, 1, 0, 0, 0, 880, 4321, 1, 0, 0, 0, 882, 4348, 1, 0, 0, 0, 884, 4350, 1, 0, 0, 0, 886, 4352, 1, 0, 0, 0, 888, 4354, 1, 0, 0, 0, 890, 4356, 1, 0, 0, 0, 892, 4362, 1, 0, 0, 0, 894, 4367, 1, 0, 0, 0, 896, 4373, 1, 0, 0, 0, 898, 4390, 1, 0, 0, 0, 900, 4397, 1, 0, 0, 0, 902, 4399, 1, 0, 0, 0, 904, 4406, 1, 0, 0, 0, 906, 4412, 1, 0, 0, 0, 908, 4418, 1, 0, 0, 0, 910, 4423, 1, 0, 0, 0, 912, 4429, 1, 0, 0, 0, 914, 4434, 1, 0, 0, 0, 916, 4464, 1, 0, 0, 0, 918, 4466, 1, 0, 0, 0, 920, 4473, 1, 0, 0, 0, 922, 4479, 1, 0, 0, 0, 924, 4497, 1, 0, 0, 0, 926, 4512, 1, 0, 0, 0, 928, 4517, 1, 0, 0, 0, 930, 4519, 1, 0, 0, 0, 932, 4544, 1, 0, 0, 0, 934, 4546, 1, 0, 0, 0, 936, 4565, 1, 0, 0, 0, 938, 4571, 1, 0, 0, 0, 940, 4573, 1, 0, 0, 0, 942, 4580, 1, 0, 0, 0, 944, 4582, 1, 0, 0, 0, 946, 4584, 1, 0, 0, 0, 948, 4590, 1, 0, 0, 0, 950, 4595, 1, 0, 0, 0, 952, 4600, 1, 0, 0, 0, 954, 4605, 1, 0, 0, 0, 956, 4617, 1, 0, 0, 0, 958, 4622, 1, 0, 0, 0, 960, 4648, 1, 0, 0, 0, 962, 4652, 1, 0, 0, 0, 964, 4655, 1, 0, 0, 0, 966, 4670, 1, 0, 0, 0, 968, 4680, 1, 0, 0, 0, 970, 4690, 1, 0, 0, 0, 972, 4692, 1, 0, 0, 0, 974, 4700, 1, 0, 0, 0, 976, 4705, 1, 0, 0, 0, 978, 4707, 1, 0, 0, 0, 980, 4709, 1, 0, 0, 0, 982, 4711, 1, 0, 0, 0, 984, 4713, 1, 0, 0, 0, 986, 4715, 1, 0, 0, 0, 988, 4717, 1, 0, 0, 0, 990, 991, 6, 0, -1, 0, 991, 992, 5, 77, 0, 0, 992, 993, 3, 0, 0, 0, 993, 994, 5, 209, 0, 0, 994, 995, 3, 0, 0, 0, 995, 996, 5, 55, 0, 0, 996, 997, 3, 0, 0, 28, 997, 1006, 1, 0, 0, 0, 998, 999, 7, 0, 0, 0, 999, 1006, 3, 0, 0, 14, 1000, 1001, 7, 1, 0, 0, 1001, 1006, 3, 2, 1, 0, 1002, 1003, 5, 8, 0, 0, 1003, 1006, 3, 2, 1, 0, 1004, 1006, 3, 6, 3, 0, 1005, 990, 1, 0, 0, 0, 1005, 998, 1, 0, 0, 0, 1005, 1000, 1, 0, 0, 0, 1005, 1002, 1, 0, 0, 0, 1005, 1004, 1, 0, 0, 0, 1006, 1088, 1, 0, 0, 0, 1007, 1008, 10, 27, 0, 0, 1008, 1009, 5, 190, 0, 0, 1009, 1087, 3, 0, 0, 28, 1010, 1011, 10, 26, 0, 0, 1011, 1012, 5, 78, 0, 0, 1012, 1087, 3, 0, 0, 27, 1013, 1014, 10, 25, 0, 0, 1014, 1015, 5, 112, 0, 0, 1015, 1087, 3, 0, 0, 26, 1016, 1017, 10, 24, 0, 0, 1017, 1018, 5, 12, 0, 0, 1018, 1087, 3, 0, 0, 25, 1019, 1020, 10, 23, 0, 0, 1020, 1021, 5, 173, 0, 0, 1021, 1087, 3, 0, 0, 24, 1022, 1023, 10, 22, 0, 0, 1023, 1024, 5, 215, 0, 0, 1024, 1087, 3, 0, 0, 23, 1025, 1026, 10, 21, 0, 0, 1026, 1027, 5, 195, 0, 0, 1027, 1087, 3, 0, 0, 22, 1028, 1029, 10, 20, 0, 0, 1029, 1030, 7, 2, 0, 0, 1030, 1087, 3, 0, 0, 21, 1031, 1032, 10, 19, 0, 0, 1032, 1033, 7, 3, 0, 0, 1033, 1087, 3, 0, 0, 20, 1034, 1035, 10, 18, 0, 0, 1035, 1036, 5, 181, 0, 0, 1036, 1087, 3, 0, 0, 19, 1037, 1038, 10, 17, 0, 0, 1038, 1039, 7, 4, 0, 0, 1039, 1087, 3, 0, 0, 18, 1040, 1041, 10, 16, 0, 0, 1041, 1042, 7, 5, 0, 0, 1042, 1087, 3, 0, 0, 17, 1043, 1044, 10, 15, 0, 0, 1044, 1045, 7, 6, 0, 0, 1045, 1087, 3, 0, 0, 15, 1046, 1047, 10, 12, 0, 0, 1047, 1048, 7, 7, 0, 0, 1048, 1087, 3, 2, 1, 0, 1049, 1050, 10, 11, 0, 0, 1050, 1051, 5, 13, 0, 0, 1051, 1087, 3, 2, 1, 0, 1052, 1053, 10, 10, 0, 0, 1053, 1054, 5, 191, 0, 0, 1054, 1087, 3, 2, 1, 0, 1055, 1056, 10, 9, 0, 0, 1056, 1057, 5, 100, 0, 0, 1057, 1087, 3, 2, 1, 0, 1058, 1059, 10, 8, 0, 0, 1059, 1061, 5, 211, 0, 0, 1060, 1062, 3, 4, 2, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1087, 5, 212, 0, 0, 1064, 1065, 10, 7, 0, 0, 1065, 1066, 5, 192, 0, 0, 1066, 1068, 5, 196, 0, 0, 1067, 1069, 3, 4, 2, 0, 1068, 1067, 1, 0, 0, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1087, 5, 197, 0, 0, 1071, 1072, 10, 6, 0, 0, 1072, 1087, 3, 20, 10, 0, 1073, 1074, 10, 5, 0, 0, 1074, 1075, 5, 202, 0, 0, 1075, 1087, 3, 90, 45, 0, 1076, 1077, 10, 4, 0, 0, 1077, 1078, 5, 182, 0, 0, 1078, 1087, 3, 18, 9, 0, 1079, 1080, 10, 3, 0, 0, 1080, 1081, 5, 180, 0, 0, 1081, 1084, 3, 90, 45, 0, 1082, 1085, 3, 18, 9, 0, 1083, 1085, 3, 20, 10, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1083, 1, 0, 0, 0, 1085, 1087, 1, 0, 0, 0, 1086, 1007, 1, 0, 0, 0, 1086, 1010, 1, 0, 0, 0, 1086, 1013, 1, 0, 0, 0, 1086, 1016, 1, 0, 0, 0, 1086, 1019, 1, 0, 0, 0, 1086, 1022, 1, 0, 0, 0, 1086, 1025, 1, 0, 0, 0, 1086, 1028, 1, 0, 0, 0, 1086, 1031, 1, 0, 0, 0, 1086, 1034, 1, 0, 0, 0, 1086, 1037, 1, 0, 0, 0, 1086, 1040, 1, 0, 0, 0, 1086, 1043, 1, 0, 0, 0, 1086, 1046, 1, 0, 0, 0, 1086, 1049, 1, 0, 0, 0, 1086, 1052, 1, 0, 0, 0, 1086, 1055, 1, 0, 0, 0, 1086, 1058, 1, 0, 0, 0, 1086, 1064, 1, 0, 0, 0, 1086, 1071, 1, 0, 0, 0, 1086, 1073, 1, 0, 0, 0, 1086, 1076, 1, 0, 0, 0, 1086, 1079, 1, 0, 0, 0, 1087, 1090, 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1, 1, 0, 0, 0, 1090, 1088, 1, 0, 0, 0, 1091, 1092, 3, 90, 45, 0, 1092, 3, 1, 0, 0, 0, 1093, 1098, 3, 0, 0, 0, 1094, 1095, 5, 200, 0, 0, 1095, 1097, 3, 0, 0, 0, 1096, 1094, 1, 0, 0, 0, 1097, 1100, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 5, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1101, 1117, 3, 8, 4, 0, 1102, 1117, 3, 28, 14, 0, 1103, 1107, 3, 90, 45, 0, 1104, 1108, 3, 20, 10, 0, 1105, 1106, 5, 202, 0, 0, 1106, 1108, 5, 102, 0, 0, 1107, 1104, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1117, 1, 0, 0, 0, 1109, 1117, 3, 16, 8, 0, 1110, 1117, 3, 18, 9, 0, 1111, 1113, 5, 196, 0, 0, 1112, 1114, 3, 4, 2, 0, 1113, 1112, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1115, 1, 0, 0, 0, 1115, 1117, 5, 197, 0, 0, 1116, 1101, 1, 0, 0, 0, 1116, 1102, 1, 0, 0, 0, 1116, 1103, 1, 0, 0, 0, 1116, 1109, 1, 0, 0, 0, 1116, 1110, 1, 0, 0, 0, 1116, 1111, 1, 0, 0, 0, 1117, 7, 1, 0, 0, 0, 1118, 1122, 5, 108, 0, 0, 1119, 1120, 5, 196, 0, 0, 1120, 1122, 5, 197, 0, 0, 1121, 1118, 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1122, 9, 1, 0, 0, 0, 1123, 1124, 3, 90, 45, 0, 1124, 11, 1, 0, 0, 0, 1125, 1126, 3, 90, 45, 0, 1126, 1127, 5, 202, 0, 0, 1127, 1128, 5, 102, 0, 0, 1128, 13, 1, 0, 0, 0, 1129, 1130, 3, 90, 45, 0, 1130, 1131, 3, 20, 10, 0, 1131, 15, 1, 0, 0, 0, 1132, 1133, 5, 105, 0, 0, 1133, 1134, 3, 90, 45, 0, 1134, 1135, 3, 20, 10, 0, 1135, 17, 1, 0, 0, 0, 1136, 1137, 5, 214, 0, 0, 1137, 1138, 3, 292, 146, 0, 1138, 1139, 5, 216, 0, 0, 1139, 19, 1, 0, 0, 0, 1140, 1143, 5, 196, 0, 0, 1141, 1144, 3, 22, 11, 0, 1142, 1144, 3, 24, 12, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 5, 197, 0, 0, 1146, 21, 1, 0, 0, 0, 1147, 1152, 3, 0, 0, 0, 1148, 1149, 5, 200, 0, 0, 1149, 1151, 3, 0, 0, 0, 1150, 1148, 1, 0, 0, 0, 1151, 1154, 1, 0, 0, 0, 1152, 1150, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 23, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1155, 1160, 3, 26, 13, 0, 1156, 1157, 5, 200, 0, 0, 1157, 1159, 3, 26, 13, 0, 1158, 1156, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1158, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 25, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1163, 1164, 3, 90, 45, 0, 1164, 1165, 5, 207, 0, 0, 1165, 1166, 3, 0, 0, 0, 1166, 27, 1, 0, 0, 0, 1167, 1173, 3, 30, 15, 0, 1168, 1173, 3, 32, 16, 0, 1169, 1173, 3, 34, 17, 0, 1170, 1173, 3, 36, 18, 0, 1171, 1173, 3, 38, 19, 0, 1172, 1167, 1, 0, 0, 0, 1172, 1168, 1, 0, 0, 0, 1172, 1169, 1, 0, 0, 0, 1172, 1170, 1, 0, 0, 0, 1172, 1171, 1, 0, 0, 0, 1173, 29, 1, 0, 0, 0, 1174, 1175, 7, 8, 0, 0, 1175, 31, 1, 0, 0, 0, 1176, 1177, 5, 220, 0, 0, 1177, 33, 1, 0, 0, 0, 1178, 1179, 5, 221, 0, 0, 1179, 35, 1, 0, 0, 0, 1180, 1181, 5, 222, 0, 0, 1181, 37, 1, 0, 0, 0, 1182, 1183, 5, 198, 0, 0, 1183, 39, 1, 0, 0, 0, 1184, 1185, 3, 0, 0, 0, 1185, 41, 1, 0, 0, 0, 1186, 1187, 3, 0, 0, 0, 1187, 43, 1, 0, 0, 0, 1188, 1189, 7, 9, 0, 0, 1189, 45, 1, 0, 0, 0, 1190, 1191, 5, 206, 0, 0, 1191, 1192, 3, 44, 22, 0, 1192, 1193, 5, 208, 0, 0, 1193, 1194, 3, 44, 22, 0, 1194, 1201, 1, 0, 0, 0, 1195, 1196, 5, 206, 0, 0, 1196, 1197, 3, 44, 22, 0, 1197, 1198, 5, 208, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, 1201, 3, 44, 22, 0, 1200, 1190, 1, 0, 0, 0, 1200, 1195, 1, 0, 0, 0, 1200, 1199, 1, 0, 0, 0, 1201, 47, 1, 0, 0, 0, 1202, 1220, 5, 205, 0, 0, 1203, 1207, 5, 214, 0, 0, 1204, 1206, 3, 50, 25, 0, 1205, 1204, 1, 0, 0, 0, 1206, 1209, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1210, 1, 0, 0, 0, 1209, 1207, 1, 0, 0, 0, 1210, 1220, 5, 216, 0, 0, 1211, 1215, 5, 214, 0, 0, 1212, 1214, 3, 58, 29, 0, 1213, 1212, 1, 0, 0, 0, 1214, 1217, 1, 0, 0, 0, 1215, 1213, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1218, 1220, 5, 216, 0, 0, 1219, 1202, 1, 0, 0, 0, 1219, 1203, 1, 0, 0, 0, 1219, 1211, 1, 0, 0, 0, 1220, 49, 1, 0, 0, 0, 1221, 1224, 3, 52, 26, 0, 1222, 1224, 3, 58, 29, 0, 1223, 1221, 1, 0, 0, 0, 1223, 1222, 1, 0, 0, 0, 1224, 51, 1, 0, 0, 0, 1225, 1228, 3, 106, 53, 0, 1226, 1228, 3, 108, 54, 0, 1227, 1225, 1, 0, 0, 0, 1227, 1226, 1, 0, 0, 0, 1228, 53, 1, 0, 0, 0, 1229, 1231, 3, 414, 207, 0, 1230, 1229, 1, 0, 0, 0, 1231, 1234, 1, 0, 0, 0, 1232, 1230, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1235, 1, 0, 0, 0, 1234, 1232, 1, 0, 0, 0, 1235, 1240, 5, 48, 0, 0, 1236, 1238, 3, 46, 23, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1241, 5, 74, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1247, 3, 90, 45, 0, 1243, 1244, 5, 200, 0, 0, 1244, 1246, 3, 90, 45, 0, 1245, 1243, 1, 0, 0, 0, 1246, 1249, 1, 0, 0, 0, 1247, 1245, 1, 0, 0, 0, 1247, 1248, 1, 0, 0, 0, 1248, 1250, 1, 0, 0, 0, 1249, 1247, 1, 0, 0, 0, 1250, 1251, 5, 154, 0, 0, 1251, 1256, 3, 90, 45, 0, 1252, 1253, 5, 200, 0, 0, 1253, 1255, 3, 90, 45, 0, 1254, 1252, 1, 0, 0, 0, 1255, 1258, 1, 0, 0, 0, 1256, 1254, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1259, 1, 0, 0, 0, 1258, 1256, 1, 0, 0, 0, 1259, 1260, 3, 48, 24, 0, 1260, 1272, 1, 0, 0, 0, 1261, 1263, 3, 414, 207, 0, 1262, 1261, 1, 0, 0, 0, 1263, 1266, 1, 0, 0, 0, 1264, 1262, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1267, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1267, 1268, 5, 48, 0, 0, 1268, 1269, 3, 442, 221, 0, 1269, 1270, 3, 48, 24, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1232, 1, 0, 0, 0, 1271, 1264, 1, 0, 0, 0, 1272, 55, 1, 0, 0, 0, 1273, 1274, 3, 90, 45, 0, 1274, 57, 1, 0, 0, 0, 1275, 1276, 3, 60, 30, 0, 1276, 59, 1, 0, 0, 0, 1277, 1282, 3, 62, 31, 0, 1278, 1282, 3, 64, 32, 0, 1279, 1282, 3, 66, 33, 0, 1280, 1282, 3, 420, 210, 0, 1281, 1277, 1, 0, 0, 0, 1281, 1278, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1280, 1, 0, 0, 0, 1282, 61, 1, 0, 0, 0, 1283, 1285, 5, 30, 0, 0, 1284, 1286, 3, 46, 23, 0, 1285, 1284, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1296, 1, 0, 0, 0, 1287, 1288, 5, 1, 0, 0, 1288, 1293, 3, 56, 28, 0, 1289, 1290, 5, 200, 0, 0, 1290, 1292, 3, 56, 28, 0, 1291, 1289, 1, 0, 0, 0, 1292, 1295, 1, 0, 0, 0, 1293, 1291, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1283, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1302, 1, 0, 0, 0, 1300, 1301, 5, 95, 0, 0, 1301, 1303, 5, 220, 0, 0, 1302, 1300, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1305, 5, 223, 0, 0, 1305, 63, 1, 0, 0, 0, 1306, 1308, 5, 54, 0, 0, 1307, 1309, 3, 46, 23, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1312, 1, 0, 0, 0, 1310, 1311, 5, 95, 0, 0, 1311, 1313, 5, 220, 0, 0, 1312, 1310, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 5, 223, 0, 0, 1315, 65, 1, 0, 0, 0, 1316, 1318, 5, 131, 0, 0, 1317, 1319, 3, 46, 23, 0, 1318, 1317, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1321, 1, 0, 0, 0, 1320, 1316, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1323, 5, 93, 0, 0, 1323, 1324, 5, 220, 0, 0, 1324, 1325, 5, 223, 0, 0, 1325, 67, 1, 0, 0, 0, 1326, 1328, 3, 446, 223, 0, 1327, 1326, 1, 0, 0, 0, 1328, 1331, 1, 0, 0, 0, 1329, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1332, 1, 0, 0, 0, 1331, 1329, 1, 0, 0, 0, 1332, 1333, 5, 0, 0, 1, 1333, 69, 1, 0, 0, 0, 1334, 1336, 3, 416, 208, 0, 1335, 1334, 1, 0, 0, 0, 1336, 1339, 1, 0, 0, 0, 1337, 1335, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1340, 1, 0, 0, 0, 1339, 1337, 1, 0, 0, 0, 1340, 1341, 3, 72, 36, 0, 1341, 1342, 3, 74, 37, 0, 1342, 71, 1, 0, 0, 0, 1343, 1345, 5, 104, 0, 0, 1344, 1346, 3, 46, 23, 0, 1345, 1344, 1, 0, 0, 0, 1345, 1346, 1, 0, 0, 0, 1346, 73, 1, 0, 0, 0, 1347, 1357, 5, 205, 0, 0, 1348, 1352, 5, 214, 0, 0, 1349, 1351, 3, 76, 38, 0, 1350, 1349, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1355, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1357, 5, 216, 0, 0, 1356, 1347, 1, 0, 0, 0, 1356, 1348, 1, 0, 0, 0, 1357, 75, 1, 0, 0, 0, 1358, 1362, 3, 82, 41, 0, 1359, 1362, 3, 88, 44, 0, 1360, 1362, 3, 92, 46, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1359, 1, 0, 0, 0, 1361, 1360, 1, 0, 0, 0, 1362, 77, 1, 0, 0, 0, 1363, 1365, 3, 80, 40, 0, 1364, 1363, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 79, 1, 0, 0, 0, 1366, 1367, 7, 10, 0, 0, 1367, 81, 1, 0, 0, 0, 1368, 1371, 3, 84, 42, 0, 1369, 1371, 3, 86, 43, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1369, 1, 0, 0, 0, 1371, 83, 1, 0, 0, 0, 1372, 1373, 3, 78, 39, 0, 1373, 1374, 3, 104, 52, 0, 1374, 85, 1, 0, 0, 0, 1375, 1376, 3, 78, 39, 0, 1376, 1377, 3, 108, 54, 0, 1377, 87, 1, 0, 0, 0, 1378, 1379, 3, 78, 39, 0, 1379, 1384, 5, 7, 0, 0, 1380, 1381, 5, 206, 0, 0, 1381, 1382, 3, 44, 22, 0, 1382, 1383, 5, 208, 0, 0, 1383, 1385, 1, 0, 0, 0, 1384, 1380, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1388, 3, 44, 22, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1390, 5, 71, 0, 0, 1390, 1391, 3, 90, 45, 0, 1391, 1392, 3, 48, 24, 0, 1392, 89, 1, 0, 0, 0, 1393, 1394, 5, 193, 0, 0, 1394, 1396, 5, 183, 0, 0, 1395, 1393, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1402, 1, 0, 0, 0, 1397, 1398, 3, 44, 22, 0, 1398, 1399, 5, 183, 0, 0, 1399, 1401, 1, 0, 0, 0, 1400, 1397, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1405, 1406, 3, 44, 22, 0, 1406, 91, 1, 0, 0, 0, 1407, 1409, 3, 80, 40, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 5, 79, 0, 0, 1411, 1413, 5, 8, 0, 0, 1412, 1411, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 3, 94, 47, 0, 1415, 1416, 3, 48, 24, 0, 1416, 93, 1, 0, 0, 0, 1417, 1420, 3, 96, 48, 0, 1418, 1420, 3, 98, 49, 0, 1419, 1417, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 95, 1, 0, 0, 0, 1421, 1424, 3, 90, 45, 0, 1422, 1423, 5, 183, 0, 0, 1423, 1425, 5, 179, 0, 0, 1424, 1422, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 97, 1, 0, 0, 0, 1426, 1427, 3, 90, 45, 0, 1427, 1428, 5, 183, 0, 0, 1428, 1431, 5, 198, 0, 0, 1429, 1430, 5, 183, 0, 0, 1430, 1432, 5, 179, 0, 0, 1431, 1429, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1435, 1, 0, 0, 0, 1433, 1435, 3, 100, 50, 0, 1434, 1426, 1, 0, 0, 0, 1434, 1433, 1, 0, 0, 0, 1435, 99, 1, 0, 0, 0, 1436, 1438, 3, 970, 485, 0, 1437, 1439, 3, 102, 51, 0, 1438, 1437, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1438, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1449, 1, 0, 0, 0, 1442, 1444, 3, 984, 492, 0, 1443, 1445, 3, 102, 51, 0, 1444, 1443, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1449, 1, 0, 0, 0, 1448, 1436, 1, 0, 0, 0, 1448, 1442, 1, 0, 0, 0, 1449, 101, 1, 0, 0, 0, 1450, 1451, 5, 211, 0, 0, 1451, 1452, 3, 0, 0, 0, 1452, 1453, 5, 212, 0, 0, 1453, 103, 1, 0, 0, 0, 1454, 1457, 3, 60, 30, 0, 1455, 1457, 3, 106, 53, 0, 1456, 1454, 1, 0, 0, 0, 1456, 1455, 1, 0, 0, 0, 1457, 105, 1, 0, 0, 0, 1458, 1485, 3, 54, 27, 0, 1459, 1485, 3, 70, 35, 0, 1460, 1485, 3, 110, 55, 0, 1461, 1485, 3, 162, 81, 0, 1462, 1485, 3, 250, 125, 0, 1463, 1485, 3, 252, 126, 0, 1464, 1485, 3, 254, 127, 0, 1465, 1485, 3, 412, 206, 0, 1466, 1485, 3, 256, 128, 0, 1467, 1485, 3, 258, 129, 0, 1468, 1485, 3, 370, 185, 0, 1469, 1485, 3, 284, 142, 0, 1470, 1485, 3, 288, 144, 0, 1471, 1485, 3, 300, 150, 0, 1472, 1485, 3, 398, 199, 0, 1473, 1485, 3, 432, 216, 0, 1474, 1485, 3, 434, 217, 0, 1475, 1485, 3, 134, 67, 0, 1476, 1485, 3, 142, 71, 0, 1477, 1485, 3, 168, 84, 0, 1478, 1485, 3, 146, 73, 0, 1479, 1485, 3, 242, 121, 0, 1480, 1485, 3, 220, 110, 0, 1481, 1485, 3, 224, 112, 0, 1482, 1485, 3, 232, 116, 0, 1483, 1485, 3, 246, 123, 0, 1484, 1458, 1, 0, 0, 0, 1484, 1459, 1, 0, 0, 0, 1484, 1460, 1, 0, 0, 0, 1484, 1461, 1, 0, 0, 0, 1484, 1462, 1, 0, 0, 0, 1484, 1463, 1, 0, 0, 0, 1484, 1464, 1, 0, 0, 0, 1484, 1465, 1, 0, 0, 0, 1484, 1466, 1, 0, 0, 0, 1484, 1467, 1, 0, 0, 0, 1484, 1468, 1, 0, 0, 0, 1484, 1469, 1, 0, 0, 0, 1484, 1470, 1, 0, 0, 0, 1484, 1471, 1, 0, 0, 0, 1484, 1472, 1, 0, 0, 0, 1484, 1473, 1, 0, 0, 0, 1484, 1474, 1, 0, 0, 0, 1484, 1475, 1, 0, 0, 0, 1484, 1476, 1, 0, 0, 0, 1484, 1477, 1, 0, 0, 0, 1484, 1478, 1, 0, 0, 0, 1484, 1479, 1, 0, 0, 0, 1484, 1480, 1, 0, 0, 0, 1484, 1481, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1483, 1, 0, 0, 0, 1485, 107, 1, 0, 0, 0, 1486, 1497, 3, 172, 86, 0, 1487, 1497, 3, 286, 143, 0, 1488, 1497, 3, 298, 149, 0, 1489, 1497, 3, 302, 151, 0, 1490, 1497, 3, 304, 152, 0, 1491, 1497, 3, 260, 130, 0, 1492, 1497, 3, 276, 138, 0, 1493, 1497, 3, 280, 140, 0, 1494, 1497, 3, 372, 186, 0, 1495, 1497, 3, 374, 187, 0, 1496, 1486, 1, 0, 0, 0, 1496, 1487, 1, 0, 0, 0, 1496, 1488, 1, 0, 0, 0, 1496, 1489, 1, 0, 0, 0, 1496, 1490, 1, 0, 0, 0, 1496, 1491, 1, 0, 0, 0, 1496, 1492, 1, 0, 0, 0, 1496, 1493, 1, 0, 0, 0, 1496, 1494, 1, 0, 0, 0, 1496, 1495, 1, 0, 0, 0, 1497, 109, 1, 0, 0, 0, 1498, 1499, 3, 112, 56, 0, 1499, 1500, 5, 157, 0, 0, 1500, 1501, 3, 114, 57, 0, 1501, 1502, 3, 130, 65, 0, 1502, 111, 1, 0, 0, 0, 1503, 1505, 5, 2, 0, 0, 1504, 1503, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1509, 1, 0, 0, 0, 1506, 1508, 3, 416, 208, 0, 1507, 1506, 1, 0, 0, 0, 1508, 1511, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 113, 1, 0, 0, 0, 1511, 1509, 1, 0, 0, 0, 1512, 1514, 5, 8, 0, 0, 1513, 1512, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1516, 1, 0, 0, 0, 1515, 1517, 3, 46, 23, 0, 1516, 1515, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1519, 1, 0, 0, 0, 1518, 1520, 3, 404, 202, 0, 1519, 1518, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1523, 1, 0, 0, 0, 1521, 1524, 3, 116, 58, 0, 1522, 1524, 3, 118, 59, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1522, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1523, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1530, 1, 0, 0, 0, 1527, 1529, 3, 120, 60, 0, 1528, 1527, 1, 0, 0, 0, 1529, 1532, 1, 0, 0, 0, 1530, 1528, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 115, 1, 0, 0, 0, 1532, 1530, 1, 0, 0, 0, 1533, 1534, 7, 11, 0, 0, 1534, 1539, 3, 136, 68, 0, 1535, 1536, 5, 200, 0, 0, 1536, 1538, 3, 136, 68, 0, 1537, 1535, 1, 0, 0, 0, 1538, 1541, 1, 0, 0, 0, 1539, 1537, 1, 0, 0, 0, 1539, 1540, 1, 0, 0, 0, 1540, 117, 1, 0, 0, 0, 1541, 1539, 1, 0, 0, 0, 1542, 1543, 7, 12, 0, 0, 1543, 1544, 3, 144, 72, 0, 1544, 119, 1, 0, 0, 0, 1545, 1550, 3, 122, 61, 0, 1546, 1550, 3, 124, 62, 0, 1547, 1550, 3, 126, 63, 0, 1548, 1550, 3, 128, 64, 0, 1549, 1545, 1, 0, 0, 0, 1549, 1546, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1548, 1, 0, 0, 0, 1550, 121, 1, 0, 0, 0, 1551, 1552, 5, 52, 0, 0, 1552, 1553, 5, 74, 0, 0, 1553, 1558, 3, 148, 74, 0, 1554, 1555, 5, 200, 0, 0, 1555, 1557, 3, 148, 74, 0, 1556, 1554, 1, 0, 0, 0, 1557, 1560, 1, 0, 0, 0, 1558, 1556, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 123, 1, 0, 0, 0, 1560, 1558, 1, 0, 0, 0, 1561, 1562, 5, 160, 0, 0, 1562, 1567, 3, 150, 75, 0, 1563, 1564, 5, 200, 0, 0, 1564, 1566, 3, 150, 75, 0, 1565, 1563, 1, 0, 0, 0, 1566, 1569, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 125, 1, 0, 0, 0, 1569, 1567, 1, 0, 0, 0, 1570, 1571, 5, 86, 0, 0, 1571, 1576, 3, 152, 76, 0, 1572, 1573, 5, 200, 0, 0, 1573, 1575, 3, 152, 76, 0, 1574, 1572, 1, 0, 0, 0, 1575, 1578, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1576, 1577, 1, 0, 0, 0, 1577, 127, 1, 0, 0, 0, 1578, 1576, 1, 0, 0, 0, 1579, 1580, 5, 50, 0, 0, 1580, 1585, 3, 154, 77, 0, 1581, 1582, 5, 200, 0, 0, 1582, 1584, 3, 154, 77, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1587, 1, 0, 0, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 129, 1, 0, 0, 0, 1587, 1585, 1, 0, 0, 0, 1588, 1598, 5, 205, 0, 0, 1589, 1593, 5, 214, 0, 0, 1590, 1592, 3, 132, 66, 0, 1591, 1590, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1596, 1, 0, 0, 0, 1595, 1593, 1, 0, 0, 0, 1596, 1598, 5, 216, 0, 0, 1597, 1588, 1, 0, 0, 0, 1597, 1589, 1, 0, 0, 0, 1598, 131, 1, 0, 0, 0, 1599, 1604, 3, 84, 42, 0, 1600, 1604, 3, 156, 78, 0, 1601, 1604, 3, 88, 44, 0, 1602, 1604, 3, 92, 46, 0, 1603, 1599, 1, 0, 0, 0, 1603, 1600, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1603, 1602, 1, 0, 0, 0, 1604, 133, 1, 0, 0, 0, 1605, 1607, 5, 138, 0, 0, 1606, 1608, 3, 46, 23, 0, 1607, 1606, 1, 0, 0, 0, 1607, 1608, 1, 0, 0, 0, 1608, 1610, 1, 0, 0, 0, 1609, 1605, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 5, 149, 0, 0, 1612, 1613, 3, 138, 69, 0, 1613, 1614, 7, 11, 0, 0, 1614, 1615, 3, 140, 70, 0, 1615, 1616, 3, 48, 24, 0, 1616, 135, 1, 0, 0, 0, 1617, 1618, 3, 140, 70, 0, 1618, 137, 1, 0, 0, 0, 1619, 1624, 3, 90, 45, 0, 1620, 1621, 5, 202, 0, 0, 1621, 1623, 3, 90, 45, 0, 1622, 1620, 1, 0, 0, 0, 1623, 1626, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 139, 1, 0, 0, 0, 1626, 1624, 1, 0, 0, 0, 1627, 1632, 3, 90, 45, 0, 1628, 1629, 5, 202, 0, 0, 1629, 1631, 3, 90, 45, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 141, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 5, 35, 0, 0, 1636, 1638, 3, 46, 23, 0, 1637, 1636, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 1640, 1, 0, 0, 0, 1639, 1635, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 5, 33, 0, 0, 1642, 1647, 3, 90, 45, 0, 1643, 1644, 5, 202, 0, 0, 1644, 1646, 3, 90, 45, 0, 1645, 1643, 1, 0, 0, 0, 1646, 1649, 1, 0, 0, 0, 1647, 1645, 1, 0, 0, 0, 1647, 1648, 1, 0, 0, 0, 1648, 1650, 1, 0, 0, 0, 1649, 1647, 1, 0, 0, 0, 1650, 1651, 7, 12, 0, 0, 1651, 1656, 3, 90, 45, 0, 1652, 1653, 5, 202, 0, 0, 1653, 1655, 3, 90, 45, 0, 1654, 1652, 1, 0, 0, 0, 1655, 1658, 1, 0, 0, 0, 1656, 1654, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1659, 1, 0, 0, 0, 1658, 1656, 1, 0, 0, 0, 1659, 1660, 3, 48, 24, 0, 1660, 143, 1, 0, 0, 0, 1661, 1666, 3, 90, 45, 0, 1662, 1663, 5, 202, 0, 0, 1663, 1665, 3, 90, 45, 0, 1664, 1662, 1, 0, 0, 0, 1665, 1668, 1, 0, 0, 0, 1666, 1664, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 145, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1669, 1671, 5, 51, 0, 0, 1670, 1672, 3, 46, 23, 0, 1671, 1670, 1, 0, 0, 0, 1671, 1672, 1, 0, 0, 0, 1672, 1674, 1, 0, 0, 0, 1673, 1669, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1676, 5, 52, 0, 0, 1676, 1681, 3, 90, 45, 0, 1677, 1678, 5, 202, 0, 0, 1678, 1680, 3, 90, 45, 0, 1679, 1677, 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1684, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1684, 1685, 5, 74, 0, 0, 1685, 1690, 3, 90, 45, 0, 1686, 1687, 5, 202, 0, 0, 1687, 1689, 3, 90, 45, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 3, 48, 24, 0, 1694, 147, 1, 0, 0, 0, 1695, 1700, 3, 90, 45, 0, 1696, 1697, 5, 202, 0, 0, 1697, 1699, 3, 90, 45, 0, 1698, 1696, 1, 0, 0, 0, 1699, 1702, 1, 0, 0, 0, 1700, 1698, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 149, 1, 0, 0, 0, 1702, 1700, 1, 0, 0, 0, 1703, 1708, 3, 90, 45, 0, 1704, 1705, 5, 202, 0, 0, 1705, 1707, 3, 90, 45, 0, 1706, 1704, 1, 0, 0, 0, 1707, 1710, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 151, 1, 0, 0, 0, 1710, 1708, 1, 0, 0, 0, 1711, 1716, 3, 90, 45, 0, 1712, 1713, 5, 202, 0, 0, 1713, 1715, 3, 90, 45, 0, 1714, 1712, 1, 0, 0, 0, 1715, 1718, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 153, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1719, 1724, 3, 90, 45, 0, 1720, 1721, 5, 202, 0, 0, 1721, 1723, 3, 90, 45, 0, 1722, 1720, 1, 0, 0, 0, 1723, 1726, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 155, 1, 0, 0, 0, 1726, 1724, 1, 0, 0, 0, 1727, 1730, 3, 158, 79, 0, 1728, 1730, 3, 160, 80, 0, 1729, 1727, 1, 0, 0, 0, 1729, 1728, 1, 0, 0, 0, 1730, 157, 1, 0, 0, 0, 1731, 1732, 3, 78, 39, 0, 1732, 1733, 5, 97, 0, 0, 1733, 1734, 3, 108, 54, 0, 1734, 159, 1, 0, 0, 0, 1735, 1736, 3, 78, 39, 0, 1736, 1737, 3, 108, 54, 0, 1737, 161, 1, 0, 0, 0, 1738, 1739, 3, 112, 56, 0, 1739, 1740, 5, 29, 0, 0, 1740, 1741, 3, 164, 82, 0, 1741, 1742, 3, 130, 65, 0, 1742, 163, 1, 0, 0, 0, 1743, 1745, 5, 8, 0, 0, 1744, 1743, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1747, 1, 0, 0, 0, 1746, 1748, 3, 46, 23, 0, 1747, 1746, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1750, 1, 0, 0, 0, 1749, 1751, 3, 404, 202, 0, 1750, 1749, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1754, 1, 0, 0, 0, 1752, 1755, 3, 166, 83, 0, 1753, 1755, 3, 118, 59, 0, 1754, 1752, 1, 0, 0, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1759, 1, 0, 0, 0, 1756, 1758, 3, 120, 60, 0, 1757, 1756, 1, 0, 0, 0, 1758, 1761, 1, 0, 0, 0, 1759, 1757, 1, 0, 0, 0, 1759, 1760, 1, 0, 0, 0, 1760, 165, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1762, 1763, 7, 11, 0, 0, 1763, 1768, 3, 170, 85, 0, 1764, 1765, 5, 200, 0, 0, 1765, 1767, 3, 170, 85, 0, 1766, 1764, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 167, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1773, 5, 138, 0, 0, 1772, 1774, 3, 46, 23, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1776, 1, 0, 0, 0, 1775, 1771, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 5, 145, 0, 0, 1778, 1779, 3, 90, 45, 0, 1779, 1780, 7, 11, 0, 0, 1780, 1781, 3, 90, 45, 0, 1781, 1782, 3, 48, 24, 0, 1782, 169, 1, 0, 0, 0, 1783, 1784, 3, 90, 45, 0, 1784, 171, 1, 0, 0, 0, 1785, 1788, 3, 178, 89, 0, 1786, 1789, 5, 65, 0, 0, 1787, 1789, 3, 416, 208, 0, 1788, 1786, 1, 0, 0, 0, 1788, 1787, 1, 0, 0, 0, 1789, 1791, 1, 0, 0, 0, 1790, 1792, 3, 186, 93, 0, 1791, 1790, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 1800, 1, 0, 0, 0, 1793, 1796, 3, 174, 87, 0, 1794, 1796, 3, 176, 88, 0, 1795, 1793, 1, 0, 0, 0, 1795, 1794, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 3, 186, 93, 0, 1798, 1800, 1, 0, 0, 0, 1799, 1785, 1, 0, 0, 0, 1799, 1795, 1, 0, 0, 0, 1800, 1802, 1, 0, 0, 0, 1801, 1803, 3, 394, 197, 0, 1802, 1801, 1, 0, 0, 0, 1802, 1803, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1805, 3, 130, 65, 0, 1805, 173, 1, 0, 0, 0, 1806, 1808, 5, 39, 0, 0, 1807, 1806, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1809, 1, 0, 0, 0, 1809, 1810, 5, 56, 0, 0, 1810, 175, 1, 0, 0, 0, 1811, 1813, 3, 184, 92, 0, 1812, 1811, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1815, 1, 0, 0, 0, 1814, 1816, 5, 49, 0, 0, 1815, 1814, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1818, 1, 0, 0, 0, 1817, 1819, 5, 2, 0, 0, 1818, 1817, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1821, 1, 0, 0, 0, 1820, 1822, 7, 13, 0, 0, 1821, 1820, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1824, 1, 0, 0, 0, 1823, 1825, 7, 14, 0, 0, 1824, 1823, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 177, 1, 0, 0, 0, 1826, 1827, 3, 174, 87, 0, 1827, 1828, 3, 180, 90, 0, 1828, 1831, 1, 0, 0, 0, 1829, 1831, 3, 176, 88, 0, 1830, 1826, 1, 0, 0, 0, 1830, 1829, 1, 0, 0, 0, 1831, 1835, 1, 0, 0, 0, 1832, 1834, 3, 416, 208, 0, 1833, 1832, 1, 0, 0, 0, 1834, 1837, 1, 0, 0, 0, 1835, 1833, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 179, 1, 0, 0, 0, 1837, 1835, 1, 0, 0, 0, 1838, 1839, 3, 182, 91, 0, 1839, 181, 1, 0, 0, 0, 1840, 1841, 3, 176, 88, 0, 1841, 1842, 3, 186, 93, 0, 1842, 1848, 1, 0, 0, 0, 1843, 1845, 3, 484, 242, 0, 1844, 1846, 3, 496, 248, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1848, 1, 0, 0, 0, 1847, 1840, 1, 0, 0, 0, 1847, 1843, 1, 0, 0, 0, 1848, 183, 1, 0, 0, 0, 1849, 1850, 7, 15, 0, 0, 1850, 185, 1, 0, 0, 0, 1851, 1853, 5, 8, 0, 0, 1852, 1851, 1, 0, 0, 0, 1852, 1853, 1, 0, 0, 0, 1853, 1861, 1, 0, 0, 0, 1854, 1857, 3, 188, 94, 0, 1855, 1858, 3, 198, 99, 0, 1856, 1858, 3, 118, 59, 0, 1857, 1855, 1, 0, 0, 0, 1857, 1856, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1862, 1, 0, 0, 0, 1859, 1862, 3, 198, 99, 0, 1860, 1862, 3, 118, 59, 0, 1861, 1854, 1, 0, 0, 0, 1861, 1859, 1, 0, 0, 0, 1861, 1860, 1, 0, 0, 0, 1862, 1866, 1, 0, 0, 0, 1863, 1865, 3, 190, 95, 0, 1864, 1863, 1, 0, 0, 0, 1865, 1868, 1, 0, 0, 0, 1866, 1864, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 187, 1, 0, 0, 0, 1868, 1866, 1, 0, 0, 0, 1869, 1870, 5, 206, 0, 0, 1870, 1871, 3, 44, 22, 0, 1871, 1873, 5, 208, 0, 0, 1872, 1874, 3, 44, 22, 0, 1873, 1872, 1, 0, 0, 0, 1873, 1874, 1, 0, 0, 0, 1874, 1877, 1, 0, 0, 0, 1875, 1877, 3, 44, 22, 0, 1876, 1869, 1, 0, 0, 0, 1876, 1875, 1, 0, 0, 0, 1877, 189, 1, 0, 0, 0, 1878, 1883, 3, 120, 60, 0, 1879, 1883, 3, 192, 96, 0, 1880, 1883, 3, 194, 97, 0, 1881, 1883, 3, 196, 98, 0, 1882, 1878, 1, 0, 0, 0, 1882, 1879, 1, 0, 0, 0, 1882, 1880, 1, 0, 0, 0, 1882, 1881, 1, 0, 0, 0, 1883, 191, 1, 0, 0, 0, 1884, 1885, 5, 27, 0, 0, 1885, 1890, 3, 90, 45, 0, 1886, 1887, 5, 202, 0, 0, 1887, 1889, 3, 90, 45, 0, 1888, 1886, 1, 0, 0, 0, 1889, 1892, 1, 0, 0, 0, 1890, 1888, 1, 0, 0, 0, 1890, 1891, 1, 0, 0, 0, 1891, 193, 1, 0, 0, 0, 1892, 1890, 1, 0, 0, 0, 1893, 1894, 5, 88, 0, 0, 1894, 1895, 5, 111, 0, 0, 1895, 1896, 3, 244, 122, 0, 1896, 195, 1, 0, 0, 0, 1897, 1898, 5, 66, 0, 0, 1898, 1899, 5, 24, 0, 0, 1899, 1904, 3, 248, 124, 0, 1900, 1901, 5, 200, 0, 0, 1901, 1903, 3, 248, 124, 0, 1902, 1900, 1, 0, 0, 0, 1903, 1906, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 197, 1, 0, 0, 0, 1906, 1904, 1, 0, 0, 0, 1907, 1909, 3, 202, 101, 0, 1908, 1907, 1, 0, 0, 0, 1909, 1910, 1, 0, 0, 0, 1910, 1908, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 1, 0, 0, 0, 1912, 1914, 3, 200, 100, 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1918, 1, 0, 0, 0, 1915, 1917, 3, 202, 101, 0, 1916, 1915, 1, 0, 0, 0, 1917, 1920, 1, 0, 0, 0, 1918, 1916, 1, 0, 0, 0, 1918, 1919, 1, 0, 0, 0, 1919, 1929, 1, 0, 0, 0, 1920, 1918, 1, 0, 0, 0, 1921, 1925, 3, 200, 100, 0, 1922, 1924, 3, 202, 101, 0, 1923, 1922, 1, 0, 0, 0, 1924, 1927, 1, 0, 0, 0, 1925, 1923, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1929, 1, 0, 0, 0, 1927, 1925, 1, 0, 0, 0, 1928, 1908, 1, 0, 0, 0, 1928, 1921, 1, 0, 0, 0, 1929, 199, 1, 0, 0, 0, 1930, 1939, 3, 404, 202, 0, 1931, 1933, 5, 113, 0, 0, 1932, 1934, 5, 106, 0, 0, 1933, 1932, 1, 0, 0, 0, 1933, 1934, 1, 0, 0, 0, 1934, 1940, 1, 0, 0, 0, 1935, 1937, 5, 106, 0, 0, 1936, 1938, 5, 113, 0, 0, 1937, 1936, 1, 0, 0, 0, 1937, 1938, 1, 0, 0, 0, 1938, 1940, 1, 0, 0, 0, 1939, 1931, 1, 0, 0, 0, 1939, 1935, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1952, 1, 0, 0, 0, 1941, 1943, 5, 113, 0, 0, 1942, 1944, 5, 106, 0, 0, 1943, 1942, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1950, 1, 0, 0, 0, 1945, 1947, 5, 106, 0, 0, 1946, 1948, 5, 113, 0, 0, 1947, 1946, 1, 0, 0, 0, 1947, 1948, 1, 0, 0, 0, 1948, 1950, 1, 0, 0, 0, 1949, 1941, 1, 0, 0, 0, 1949, 1945, 1, 0, 0, 0, 1950, 1952, 1, 0, 0, 0, 1951, 1930, 1, 0, 0, 0, 1951, 1949, 1, 0, 0, 0, 1952, 201, 1, 0, 0, 0, 1953, 1959, 3, 204, 102, 0, 1954, 1959, 3, 208, 104, 0, 1955, 1959, 3, 212, 106, 0, 1956, 1959, 3, 214, 107, 0, 1957, 1959, 3, 216, 108, 0, 1958, 1953, 1, 0, 0, 0, 1958, 1954, 1, 0, 0, 0, 1958, 1955, 1, 0, 0, 0, 1958, 1956, 1, 0, 0, 0, 1958, 1957, 1, 0, 0, 0, 1959, 203, 1, 0, 0, 0, 1960, 1965, 3, 206, 103, 0, 1961, 1962, 5, 200, 0, 0, 1962, 1964, 3, 220, 110, 0, 1963, 1961, 1, 0, 0, 0, 1964, 1967, 1, 0, 0, 0, 1965, 1963, 1, 0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 205, 1, 0, 0, 0, 1967, 1965, 1, 0, 0, 0, 1968, 1974, 5, 204, 0, 0, 1969, 1970, 5, 158, 0, 0, 1970, 1974, 5, 24, 0, 0, 1971, 1972, 5, 47, 0, 0, 1972, 1974, 5, 24, 0, 0, 1973, 1968, 1, 0, 0, 0, 1973, 1969, 1, 0, 0, 0, 1973, 1971, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1976, 3, 220, 110, 0, 1976, 207, 1, 0, 0, 0, 1977, 1982, 3, 210, 105, 0, 1978, 1979, 5, 200, 0, 0, 1979, 1981, 3, 226, 113, 0, 1980, 1978, 1, 0, 0, 0, 1981, 1984, 1, 0, 0, 0, 1982, 1980, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 209, 1, 0, 0, 0, 1984, 1982, 1, 0, 0, 0, 1985, 1986, 7, 16, 0, 0, 1986, 1987, 3, 226, 113, 0, 1987, 211, 1, 0, 0, 0, 1988, 1989, 7, 17, 0, 0, 1989, 1990, 3, 228, 114, 0, 1990, 213, 1, 0, 0, 0, 1991, 1992, 7, 18, 0, 0, 1992, 1993, 3, 230, 115, 0, 1993, 215, 1, 0, 0, 0, 1994, 1999, 3, 218, 109, 0, 1995, 1996, 5, 200, 0, 0, 1996, 1998, 3, 234, 117, 0, 1997, 1995, 1, 0, 0, 0, 1998, 2001, 1, 0, 0, 0, 1999, 1997, 1, 0, 0, 0, 1999, 2000, 1, 0, 0, 0, 2000, 217, 1, 0, 0, 0, 2001, 1999, 1, 0, 0, 0, 2002, 2003, 7, 19, 0, 0, 2003, 2004, 3, 234, 117, 0, 2004, 219, 1, 0, 0, 0, 2005, 2007, 5, 138, 0, 0, 2006, 2008, 3, 46, 23, 0, 2007, 2006, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2010, 1, 0, 0, 0, 2009, 2005, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2012, 5, 159, 0, 0, 2012, 2016, 3, 90, 45, 0, 2013, 2017, 5, 204, 0, 0, 2014, 2015, 5, 158, 0, 0, 2015, 2017, 5, 24, 0, 0, 2016, 2013, 1, 0, 0, 0, 2016, 2014, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 3, 140, 70, 0, 2019, 2020, 3, 48, 24, 0, 2020, 2024, 1, 0, 0, 0, 2021, 2024, 3, 222, 111, 0, 2022, 2024, 3, 580, 290, 0, 2023, 2009, 1, 0, 0, 0, 2023, 2021, 1, 0, 0, 0, 2023, 2022, 1, 0, 0, 0, 2024, 221, 1, 0, 0, 0, 2025, 2030, 3, 90, 45, 0, 2026, 2027, 5, 202, 0, 0, 2027, 2029, 3, 90, 45, 0, 2028, 2026, 1, 0, 0, 0, 2029, 2032, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2030, 2031, 1, 0, 0, 0, 2031, 223, 1, 0, 0, 0, 2032, 2030, 1, 0, 0, 0, 2033, 2035, 5, 138, 0, 0, 2034, 2036, 3, 46, 23, 0, 2035, 2034, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2033, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2040, 5, 147, 0, 0, 2040, 2041, 3, 138, 69, 0, 2041, 2042, 7, 16, 0, 0, 2042, 2043, 3, 140, 70, 0, 2043, 2044, 3, 48, 24, 0, 2044, 225, 1, 0, 0, 0, 2045, 2050, 3, 90, 45, 0, 2046, 2047, 5, 202, 0, 0, 2047, 2049, 3, 90, 45, 0, 2048, 2046, 1, 0, 0, 0, 2049, 2052, 1, 0, 0, 0, 2050, 2048, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 227, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0, 2053, 2058, 3, 90, 45, 0, 2054, 2055, 5, 202, 0, 0, 2055, 2057, 3, 90, 45, 0, 2056, 2054, 1, 0, 0, 0, 2057, 2060, 1, 0, 0, 0, 2058, 2056, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 229, 1, 0, 0, 0, 2060, 2058, 1, 0, 0, 0, 2061, 2066, 3, 90, 45, 0, 2062, 2063, 5, 202, 0, 0, 2063, 2065, 3, 90, 45, 0, 2064, 2062, 1, 0, 0, 0, 2065, 2068, 1, 0, 0, 0, 2066, 2064, 1, 0, 0, 0, 2066, 2067, 1, 0, 0, 0, 2067, 231, 1, 0, 0, 0, 2068, 2066, 1, 0, 0, 0, 2069, 2071, 5, 138, 0, 0, 2070, 2072, 3, 46, 23, 0, 2071, 2070, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2074, 1, 0, 0, 0, 2073, 2069, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2076, 5, 126, 0, 0, 2076, 2077, 3, 138, 69, 0, 2077, 2078, 7, 19, 0, 0, 2078, 2079, 3, 140, 70, 0, 2079, 2080, 3, 48, 24, 0, 2080, 233, 1, 0, 0, 0, 2081, 2086, 3, 90, 45, 0, 2082, 2083, 5, 202, 0, 0, 2083, 2085, 3, 90, 45, 0, 2084, 2082, 1, 0, 0, 0, 2085, 2088, 1, 0, 0, 0, 2086, 2084, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 235, 1, 0, 0, 0, 2088, 2086, 1, 0, 0, 0, 2089, 2098, 3, 238, 119, 0, 2090, 2093, 3, 240, 120, 0, 2091, 2092, 5, 202, 0, 0, 2092, 2094, 3, 240, 120, 0, 2093, 2091, 1, 0, 0, 0, 2094, 2095, 1, 0, 0, 0, 2095, 2093, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2098, 1, 0, 0, 0, 2097, 2089, 1, 0, 0, 0, 2097, 2090, 1, 0, 0, 0, 2098, 237, 1, 0, 0, 0, 2099, 2102, 3, 240, 120, 0, 2100, 2101, 5, 202, 0, 0, 2101, 2103, 3, 240, 120, 0, 2102, 2100, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 239, 1, 0, 0, 0, 2106, 2107, 3, 90, 45, 0, 2107, 241, 1, 0, 0, 0, 2108, 2110, 5, 89, 0, 0, 2109, 2111, 3, 46, 23, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2113, 1, 0, 0, 0, 2112, 2108, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2115, 5, 88, 0, 0, 2115, 2120, 3, 90, 45, 0, 2116, 2117, 5, 202, 0, 0, 2117, 2119, 3, 90, 45, 0, 2118, 2116, 1, 0, 0, 0, 2119, 2122, 1, 0, 0, 0, 2120, 2118, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2123, 1, 0, 0, 0, 2122, 2120, 1, 0, 0, 0, 2123, 2124, 5, 111, 0, 0, 2124, 2129, 3, 90, 45, 0, 2125, 2126, 5, 202, 0, 0, 2126, 2128, 3, 90, 45, 0, 2127, 2125, 1, 0, 0, 0, 2128, 2131, 1, 0, 0, 0, 2129, 2127, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2132, 1, 0, 0, 0, 2131, 2129, 1, 0, 0, 0, 2132, 2133, 3, 48, 24, 0, 2133, 243, 1, 0, 0, 0, 2134, 2139, 3, 90, 45, 0, 2135, 2136, 5, 202, 0, 0, 2136, 2138, 3, 90, 45, 0, 2137, 2135, 1, 0, 0, 0, 2138, 2141, 1, 0, 0, 0, 2139, 2137, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 245, 1, 0, 0, 0, 2141, 2139, 1, 0, 0, 0, 2142, 2147, 5, 67, 0, 0, 2143, 2145, 3, 46, 23, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2148, 5, 111, 0, 0, 2147, 2144, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2149, 1, 0, 0, 0, 2149, 2150, 3, 90, 45, 0, 2150, 2151, 5, 24, 0, 0, 2151, 2152, 3, 90, 45, 0, 2152, 2153, 3, 48, 24, 0, 2153, 247, 1, 0, 0, 0, 2154, 2155, 3, 90, 45, 0, 2155, 249, 1, 0, 0, 0, 2156, 2157, 3, 112, 56, 0, 2157, 2158, 5, 43, 0, 0, 2158, 2159, 3, 164, 82, 0, 2159, 2160, 3, 130, 65, 0, 2160, 251, 1, 0, 0, 0, 2161, 2162, 3, 112, 56, 0, 2162, 2163, 5, 28, 0, 0, 2163, 2164, 3, 164, 82, 0, 2164, 2165, 3, 130, 65, 0, 2165, 253, 1, 0, 0, 0, 2166, 2167, 3, 112, 56, 0, 2167, 2168, 5, 144, 0, 0, 2168, 2169, 3, 164, 82, 0, 2169, 2170, 3, 130, 65, 0, 2170, 255, 1, 0, 0, 0, 2171, 2172, 3, 112, 56, 0, 2172, 2173, 5, 16, 0, 0, 2173, 2174, 3, 164, 82, 0, 2174, 2175, 3, 130, 65, 0, 2175, 257, 1, 0, 0, 0, 2176, 2177, 3, 112, 56, 0, 2177, 2178, 5, 16, 0, 0, 2178, 2179, 5, 144, 0, 0, 2179, 2180, 3, 164, 82, 0, 2180, 2181, 3, 130, 65, 0, 2181, 259, 1, 0, 0, 0, 2182, 2183, 3, 178, 89, 0, 2183, 2191, 5, 38, 0, 0, 2184, 2186, 3, 186, 93, 0, 2185, 2184, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 2188, 1, 0, 0, 0, 2187, 2189, 3, 394, 197, 0, 2188, 2187, 1, 0, 0, 0, 2188, 2189, 1, 0, 0, 0, 2189, 2192, 1, 0, 0, 0, 2190, 2192, 3, 262, 131, 0, 2191, 2185, 1, 0, 0, 0, 2191, 2190, 1, 0, 0, 0, 2192, 2193, 1, 0, 0, 0, 2193, 2194, 3, 130, 65, 0, 2194, 261, 1, 0, 0, 0, 2195, 2198, 3, 264, 132, 0, 2196, 2198, 3, 266, 133, 0, 2197, 2195, 1, 0, 0, 0, 2197, 2196, 1, 0, 0, 0, 2198, 263, 1, 0, 0, 0, 2199, 2201, 3, 186, 93, 0, 2200, 2199, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2208, 5, 74, 0, 0, 2203, 2205, 5, 8, 0, 0, 2204, 2206, 5, 74, 0, 0, 2205, 2204, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 2208, 1, 0, 0, 0, 2207, 2200, 1, 0, 0, 0, 2207, 2203, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2210, 3, 268, 134, 0, 2210, 2211, 5, 154, 0, 0, 2211, 2212, 3, 268, 134, 0, 2212, 265, 1, 0, 0, 0, 2213, 2215, 3, 186, 93, 0, 2214, 2213, 1, 0, 0, 0, 2214, 2215, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2217, 5, 196, 0, 0, 2217, 2218, 3, 268, 134, 0, 2218, 2219, 5, 200, 0, 0, 2219, 2224, 3, 268, 134, 0, 2220, 2221, 5, 200, 0, 0, 2221, 2223, 3, 268, 134, 0, 2222, 2220, 1, 0, 0, 0, 2223, 2226, 1, 0, 0, 0, 2224, 2222, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2227, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2227, 2228, 5, 197, 0, 0, 2228, 267, 1, 0, 0, 0, 2229, 2230, 3, 270, 135, 0, 2230, 269, 1, 0, 0, 0, 2231, 2233, 3, 272, 136, 0, 2232, 2231, 1, 0, 0, 0, 2232, 2233, 1, 0, 0, 0, 2233, 2237, 1, 0, 0, 0, 2234, 2235, 3, 44, 22, 0, 2235, 2236, 7, 17, 0, 0, 2236, 2238, 1, 0, 0, 0, 2237, 2234, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 3, 228, 114, 0, 2240, 271, 1, 0, 0, 0, 2241, 2242, 3, 274, 137, 0, 2242, 273, 1, 0, 0, 0, 2243, 2244, 3, 404, 202, 0, 2244, 275, 1, 0, 0, 0, 2245, 2246, 3, 178, 89, 0, 2246, 2247, 5, 22, 0, 0, 2247, 2248, 3, 278, 139, 0, 2248, 2249, 3, 130, 65, 0, 2249, 277, 1, 0, 0, 0, 2250, 2256, 3, 186, 93, 0, 2251, 2252, 5, 111, 0, 0, 2252, 2253, 3, 268, 134, 0, 2253, 2254, 5, 207, 0, 0, 2254, 2255, 3, 268, 134, 0, 2255, 2257, 1, 0, 0, 0, 2256, 2251, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2271, 1, 0, 0, 0, 2258, 2260, 5, 8, 0, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2268, 1, 0, 0, 0, 2261, 2263, 5, 111, 0, 0, 2262, 2261, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 2264, 1, 0, 0, 0, 2264, 2265, 3, 268, 134, 0, 2265, 2266, 5, 207, 0, 0, 2266, 2267, 3, 268, 134, 0, 2267, 2269, 1, 0, 0, 0, 2268, 2262, 1, 0, 0, 0, 2268, 2269, 1, 0, 0, 0, 2269, 2271, 1, 0, 0, 0, 2270, 2250, 1, 0, 0, 0, 2270, 2259, 1, 0, 0, 0, 2271, 279, 1, 0, 0, 0, 2272, 2273, 3, 178, 89, 0, 2273, 2274, 5, 150, 0, 0, 2274, 2275, 3, 282, 141, 0, 2275, 2276, 3, 130, 65, 0, 2276, 281, 1, 0, 0, 0, 2277, 2283, 3, 186, 93, 0, 2278, 2279, 5, 69, 0, 0, 2279, 2280, 3, 268, 134, 0, 2280, 2281, 5, 152, 0, 0, 2281, 2282, 3, 268, 134, 0, 2282, 2284, 1, 0, 0, 0, 2283, 2278, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2298, 1, 0, 0, 0, 2285, 2287, 5, 8, 0, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2295, 1, 0, 0, 0, 2288, 2290, 5, 69, 0, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2291, 1, 0, 0, 0, 2291, 2292, 3, 268, 134, 0, 2292, 2293, 5, 152, 0, 0, 2293, 2294, 3, 268, 134, 0, 2294, 2296, 1, 0, 0, 0, 2295, 2289, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2298, 1, 0, 0, 0, 2297, 2277, 1, 0, 0, 0, 2297, 2286, 1, 0, 0, 0, 2298, 283, 1, 0, 0, 0, 2299, 2300, 3, 112, 56, 0, 2300, 2301, 5, 20, 0, 0, 2301, 2302, 3, 164, 82, 0, 2302, 2303, 3, 130, 65, 0, 2303, 285, 1, 0, 0, 0, 2304, 2305, 3, 178, 89, 0, 2305, 2306, 5, 143, 0, 0, 2306, 2308, 3, 186, 93, 0, 2307, 2309, 3, 394, 197, 0, 2308, 2307, 1, 0, 0, 0, 2308, 2309, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2311, 3, 130, 65, 0, 2311, 287, 1, 0, 0, 0, 2312, 2313, 3, 112, 56, 0, 2313, 2314, 5, 75, 0, 0, 2314, 2315, 3, 164, 82, 0, 2315, 2316, 3, 290, 145, 0, 2316, 289, 1, 0, 0, 0, 2317, 2323, 5, 205, 0, 0, 2318, 2319, 5, 214, 0, 0, 2319, 2320, 3, 292, 146, 0, 2320, 2321, 5, 216, 0, 0, 2321, 2323, 1, 0, 0, 0, 2322, 2317, 1, 0, 0, 0, 2322, 2318, 1, 0, 0, 0, 2323, 291, 1, 0, 0, 0, 2324, 2327, 3, 132, 66, 0, 2325, 2327, 3, 294, 147, 0, 2326, 2324, 1, 0, 0, 0, 2326, 2325, 1, 0, 0, 0, 2327, 2330, 1, 0, 0, 0, 2328, 2326, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2332, 1, 0, 0, 0, 2330, 2328, 1, 0, 0, 0, 2331, 2333, 3, 296, 148, 0, 2332, 2331, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 293, 1, 0, 0, 0, 2334, 2335, 3, 78, 39, 0, 2335, 2336, 5, 134, 0, 0, 2336, 2337, 3, 108, 54, 0, 2337, 295, 1, 0, 0, 0, 2338, 2339, 3, 78, 39, 0, 2339, 2340, 3, 0, 0, 0, 2340, 297, 1, 0, 0, 0, 2341, 2342, 3, 178, 89, 0, 2342, 2343, 5, 63, 0, 0, 2343, 2345, 3, 186, 93, 0, 2344, 2346, 3, 394, 197, 0, 2345, 2344, 1, 0, 0, 0, 2345, 2346, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2348, 3, 290, 145, 0, 2348, 299, 1, 0, 0, 0, 2349, 2350, 3, 112, 56, 0, 2350, 2351, 5, 121, 0, 0, 2351, 2352, 3, 164, 82, 0, 2352, 2353, 3, 290, 145, 0, 2353, 301, 1, 0, 0, 0, 2354, 2355, 3, 178, 89, 0, 2355, 2356, 5, 23, 0, 0, 2356, 2358, 3, 186, 93, 0, 2357, 2359, 3, 394, 197, 0, 2358, 2357, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2361, 3, 290, 145, 0, 2361, 303, 1, 0, 0, 0, 2362, 2363, 3, 178, 89, 0, 2363, 2365, 5, 87, 0, 0, 2364, 2366, 7, 8, 0, 0, 2365, 2364, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2367, 1, 0, 0, 0, 2367, 2369, 3, 186, 93, 0, 2368, 2370, 3, 394, 197, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 3, 290, 145, 0, 2372, 305, 1, 0, 0, 0, 2373, 2374, 3, 0, 0, 0, 2374, 307, 1, 0, 0, 0, 2375, 2376, 3, 348, 174, 0, 2376, 309, 1, 0, 0, 0, 2377, 2378, 3, 2, 1, 0, 2378, 311, 1, 0, 0, 0, 2379, 2380, 3, 2, 1, 0, 2380, 313, 1, 0, 0, 0, 2381, 2382, 3, 90, 45, 0, 2382, 315, 1, 0, 0, 0, 2383, 2384, 3, 978, 489, 0, 2384, 317, 1, 0, 0, 0, 2385, 2386, 3, 306, 153, 0, 2386, 2387, 5, 200, 0, 0, 2387, 2388, 3, 320, 160, 0, 2388, 319, 1, 0, 0, 0, 2389, 2390, 3, 4, 2, 0, 2390, 321, 1, 0, 0, 0, 2391, 2392, 3, 324, 162, 0, 2392, 323, 1, 0, 0, 0, 2393, 2394, 3, 326, 163, 0, 2394, 325, 1, 0, 0, 0, 2395, 2396, 3, 18, 9, 0, 2396, 327, 1, 0, 0, 0, 2397, 2398, 3, 330, 165, 0, 2398, 329, 1, 0, 0, 0, 2399, 2400, 3, 332, 166, 0, 2400, 331, 1, 0, 0, 0, 2401, 2402, 3, 334, 167, 0, 2402, 333, 1, 0, 0, 0, 2403, 2404, 3, 336, 168, 0, 2404, 335, 1, 0, 0, 0, 2405, 2406, 3, 338, 169, 0, 2406, 337, 1, 0, 0, 0, 2407, 2408, 3, 314, 157, 0, 2408, 339, 1, 0, 0, 0, 2409, 2414, 3, 90, 45, 0, 2410, 2411, 5, 202, 0, 0, 2411, 2413, 3, 90, 45, 0, 2412, 2410, 1, 0, 0, 0, 2413, 2416, 1, 0, 0, 0, 2414, 2412, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 341, 1, 0, 0, 0, 2416, 2414, 1, 0, 0, 0, 2417, 2420, 3, 238, 119, 0, 2418, 2420, 3, 236, 118, 0, 2419, 2417, 1, 0, 0, 0, 2419, 2418, 1, 0, 0, 0, 2420, 343, 1, 0, 0, 0, 2421, 2422, 3, 346, 173, 0, 2422, 345, 1, 0, 0, 0, 2423, 2424, 3, 90, 45, 0, 2424, 347, 1, 0, 0, 0, 2425, 2426, 3, 90, 45, 0, 2426, 349, 1, 0, 0, 0, 2427, 2428, 3, 352, 176, 0, 2428, 351, 1, 0, 0, 0, 2429, 2430, 3, 20, 10, 0, 2430, 353, 1, 0, 0, 0, 2431, 2436, 3, 90, 45, 0, 2432, 2433, 5, 202, 0, 0, 2433, 2435, 3, 90, 45, 0, 2434, 2432, 1, 0, 0, 0, 2435, 2438, 1, 0, 0, 0, 2436, 2434, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 355, 1, 0, 0, 0, 2438, 2436, 1, 0, 0, 0, 2439, 2440, 3, 90, 45, 0, 2440, 357, 1, 0, 0, 0, 2441, 2442, 3, 26, 13, 0, 2442, 359, 1, 0, 0, 0, 2443, 2444, 3, 90, 45, 0, 2444, 361, 1, 0, 0, 0, 2445, 2446, 3, 364, 182, 0, 2446, 363, 1, 0, 0, 0, 2447, 2448, 5, 214, 0, 0, 2448, 2449, 3, 292, 146, 0, 2449, 2450, 5, 216, 0, 0, 2450, 365, 1, 0, 0, 0, 2451, 2452, 7, 8, 0, 0, 2452, 367, 1, 0, 0, 0, 2453, 2455, 5, 221, 0, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 5, 202, 0, 0, 2457, 2460, 7, 20, 0, 0, 2458, 2460, 5, 222, 0, 0, 2459, 2454, 1, 0, 0, 0, 2459, 2458, 1, 0, 0, 0, 2460, 369, 1, 0, 0, 0, 2461, 2462, 3, 112, 56, 0, 2462, 2463, 5, 84, 0, 0, 2463, 2464, 3, 164, 82, 0, 2464, 2465, 3, 130, 65, 0, 2465, 371, 1, 0, 0, 0, 2466, 2467, 3, 178, 89, 0, 2467, 2468, 5, 70, 0, 0, 2468, 2469, 3, 376, 188, 0, 2469, 2470, 3, 130, 65, 0, 2470, 373, 1, 0, 0, 0, 2471, 2472, 3, 178, 89, 0, 2472, 2473, 5, 150, 0, 0, 2473, 2474, 5, 70, 0, 0, 2474, 2475, 3, 376, 188, 0, 2475, 2476, 3, 130, 65, 0, 2476, 375, 1, 0, 0, 0, 2477, 2479, 3, 186, 93, 0, 2478, 2480, 3, 394, 197, 0, 2479, 2478, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2483, 1, 0, 0, 0, 2481, 2482, 5, 111, 0, 0, 2482, 2484, 3, 378, 189, 0, 2483, 2481, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2490, 1, 0, 0, 0, 2485, 2486, 5, 74, 0, 0, 2486, 2487, 3, 384, 192, 0, 2487, 2488, 5, 154, 0, 0, 2488, 2489, 3, 384, 192, 0, 2489, 2491, 1, 0, 0, 0, 2490, 2485, 1, 0, 0, 0, 2490, 2491, 1, 0, 0, 0, 2491, 2517, 1, 0, 0, 0, 2492, 2494, 5, 8, 0, 0, 2493, 2492, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2495, 1, 0, 0, 0, 2495, 2496, 3, 384, 192, 0, 2496, 2497, 5, 154, 0, 0, 2497, 2498, 3, 384, 192, 0, 2498, 2517, 1, 0, 0, 0, 2499, 2501, 3, 496, 248, 0, 2500, 2499, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 2503, 1, 0, 0, 0, 2502, 2504, 3, 394, 197, 0, 2503, 2502, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 2507, 1, 0, 0, 0, 2505, 2506, 5, 111, 0, 0, 2506, 2508, 3, 646, 323, 0, 2507, 2505, 1, 0, 0, 0, 2507, 2508, 1, 0, 0, 0, 2508, 2514, 1, 0, 0, 0, 2509, 2510, 5, 74, 0, 0, 2510, 2511, 3, 384, 192, 0, 2511, 2512, 5, 154, 0, 0, 2512, 2513, 3, 384, 192, 0, 2513, 2515, 1, 0, 0, 0, 2514, 2509, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2477, 1, 0, 0, 0, 2516, 2493, 1, 0, 0, 0, 2516, 2500, 1, 0, 0, 0, 2517, 377, 1, 0, 0, 0, 2518, 2519, 3, 380, 190, 0, 2519, 379, 1, 0, 0, 0, 2520, 2522, 3, 46, 23, 0, 2521, 2520, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 2523, 1, 0, 0, 0, 2523, 2540, 3, 394, 197, 0, 2524, 2526, 3, 46, 23, 0, 2525, 2524, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2529, 3, 382, 191, 0, 2528, 2530, 3, 394, 197, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2540, 1, 0, 0, 0, 2531, 2533, 3, 222, 111, 0, 2532, 2534, 3, 404, 202, 0, 2533, 2532, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2540, 1, 0, 0, 0, 2535, 2537, 3, 404, 202, 0, 2536, 2538, 3, 222, 111, 0, 2537, 2536, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2540, 1, 0, 0, 0, 2539, 2521, 1, 0, 0, 0, 2539, 2525, 1, 0, 0, 0, 2539, 2531, 1, 0, 0, 0, 2539, 2535, 1, 0, 0, 0, 2540, 381, 1, 0, 0, 0, 2541, 2543, 3, 202, 101, 0, 2542, 2541, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2542, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2547, 1, 0, 0, 0, 2546, 2548, 3, 200, 100, 0, 2547, 2546, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2552, 1, 0, 0, 0, 2549, 2551, 3, 202, 101, 0, 2550, 2549, 1, 0, 0, 0, 2551, 2554, 1, 0, 0, 0, 2552, 2550, 1, 0, 0, 0, 2552, 2553, 1, 0, 0, 0, 2553, 2562, 1, 0, 0, 0, 2554, 2552, 1, 0, 0, 0, 2555, 2557, 3, 200, 100, 0, 2556, 2558, 3, 202, 101, 0, 2557, 2556, 1, 0, 0, 0, 2558, 2559, 1, 0, 0, 0, 2559, 2557, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2562, 1, 0, 0, 0, 2561, 2542, 1, 0, 0, 0, 2561, 2555, 1, 0, 0, 0, 2562, 383, 1, 0, 0, 0, 2563, 2564, 3, 386, 193, 0, 2564, 385, 1, 0, 0, 0, 2565, 2570, 3, 90, 45, 0, 2566, 2567, 5, 202, 0, 0, 2567, 2569, 3, 90, 45, 0, 2568, 2566, 1, 0, 0, 0, 2569, 2572, 1, 0, 0, 0, 2570, 2568, 1, 0, 0, 0, 2570, 2571, 1, 0, 0, 0, 2571, 387, 1, 0, 0, 0, 2572, 2570, 1, 0, 0, 0, 2573, 2574, 3, 390, 195, 0, 2574, 389, 1, 0, 0, 0, 2575, 2576, 3, 392, 196, 0, 2576, 391, 1, 0, 0, 0, 2577, 2578, 3, 90, 45, 0, 2578, 393, 1, 0, 0, 0, 2579, 2580, 3, 396, 198, 0, 2580, 395, 1, 0, 0, 0, 2581, 2588, 5, 207, 0, 0, 2582, 2588, 5, 184, 0, 0, 2583, 2585, 5, 46, 0, 0, 2584, 2586, 7, 21, 0, 0, 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2588, 1, 0, 0, 0, 2587, 2581, 1, 0, 0, 0, 2587, 2582, 1, 0, 0, 0, 2587, 2583, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2590, 3, 0, 0, 0, 2590, 397, 1, 0, 0, 0, 2591, 2594, 3, 400, 200, 0, 2592, 2594, 3, 402, 201, 0, 2593, 2591, 1, 0, 0, 0, 2593, 2592, 1, 0, 0, 0, 2594, 399, 1, 0, 0, 0, 2595, 2597, 5, 103, 0, 0, 2596, 2598, 3, 46, 23, 0, 2597, 2596, 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2600, 3, 210, 105, 0, 2600, 2601, 3, 130, 65, 0, 2601, 401, 1, 0, 0, 0, 2602, 2604, 5, 103, 0, 0, 2603, 2605, 3, 46, 23, 0, 2604, 2603, 1, 0, 0, 0, 2604, 2605, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2607, 3, 408, 204, 0, 2607, 2608, 3, 130, 65, 0, 2608, 403, 1, 0, 0, 0, 2609, 2610, 3, 406, 203, 0, 2610, 405, 1, 0, 0, 0, 2611, 2612, 3, 408, 204, 0, 2612, 407, 1, 0, 0, 0, 2613, 2617, 5, 211, 0, 0, 2614, 2615, 3, 410, 205, 0, 2615, 2616, 5, 181, 0, 0, 2616, 2618, 1, 0, 0, 0, 2617, 2614, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2620, 3, 410, 205, 0, 2620, 2621, 5, 212, 0, 0, 2621, 409, 1, 0, 0, 0, 2622, 2625, 3, 28, 14, 0, 2623, 2625, 3, 10, 5, 0, 2624, 2622, 1, 0, 0, 0, 2624, 2623, 1, 0, 0, 0, 2625, 411, 1, 0, 0, 0, 2626, 2627, 3, 112, 56, 0, 2627, 2628, 5, 101, 0, 0, 2628, 2629, 3, 164, 82, 0, 2629, 2630, 3, 130, 65, 0, 2630, 413, 1, 0, 0, 0, 2631, 2632, 5, 192, 0, 0, 2632, 2636, 3, 418, 209, 0, 2633, 2634, 5, 192, 0, 0, 2634, 2636, 3, 956, 478, 0, 2635, 2631, 1, 0, 0, 0, 2635, 2633, 1, 0, 0, 0, 2636, 415, 1, 0, 0, 0, 2637, 2638, 5, 192, 0, 0, 2638, 2642, 3, 418, 209, 0, 2639, 2640, 5, 192, 0, 0, 2640, 2642, 3, 956, 478, 0, 2641, 2637, 1, 0, 0, 0, 2641, 2639, 1, 0, 0, 0, 2642, 417, 1, 0, 0, 0, 2643, 2644, 3, 222, 111, 0, 2644, 419, 1, 0, 0, 0, 2645, 2647, 3, 416, 208, 0, 2646, 2645, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2651, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2651, 2652, 7, 22, 0, 0, 2652, 2662, 3, 422, 211, 0, 2653, 2654, 5, 1, 0, 0, 2654, 2659, 3, 56, 28, 0, 2655, 2656, 5, 200, 0, 0, 2656, 2658, 3, 56, 28, 0, 2657, 2655, 1, 0, 0, 0, 2658, 2661, 1, 0, 0, 0, 2659, 2657, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2663, 1, 0, 0, 0, 2661, 2659, 1, 0, 0, 0, 2662, 2653, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 2664, 1, 0, 0, 0, 2664, 2665, 3, 424, 212, 0, 2665, 421, 1, 0, 0, 0, 2666, 2668, 3, 46, 23, 0, 2667, 2666, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 2672, 1, 0, 0, 0, 2669, 2673, 5, 204, 0, 0, 2670, 2671, 5, 158, 0, 0, 2671, 2673, 5, 24, 0, 0, 2672, 2669, 1, 0, 0, 0, 2672, 2670, 1, 0, 0, 0, 2673, 2675, 1, 0, 0, 0, 2674, 2667, 1, 0, 0, 0, 2674, 2675, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2677, 3, 222, 111, 0, 2677, 423, 1, 0, 0, 0, 2678, 2699, 5, 205, 0, 0, 2679, 2683, 5, 214, 0, 0, 2680, 2682, 3, 426, 213, 0, 2681, 2680, 1, 0, 0, 0, 2682, 2685, 1, 0, 0, 0, 2683, 2681, 1, 0, 0, 0, 2683, 2684, 1, 0, 0, 0, 2684, 2686, 1, 0, 0, 0, 2685, 2683, 1, 0, 0, 0, 2686, 2699, 5, 216, 0, 0, 2687, 2694, 5, 214, 0, 0, 2688, 2693, 3, 470, 235, 0, 2689, 2693, 3, 962, 481, 0, 2690, 2693, 3, 88, 44, 0, 2691, 2693, 3, 92, 46, 0, 2692, 2688, 1, 0, 0, 0, 2692, 2689, 1, 0, 0, 0, 2692, 2690, 1, 0, 0, 0, 2692, 2691, 1, 0, 0, 0, 2693, 2696, 1, 0, 0, 0, 2694, 2692, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 2697, 1, 0, 0, 0, 2696, 2694, 1, 0, 0, 0, 2697, 2699, 5, 216, 0, 0, 2698, 2678, 1, 0, 0, 0, 2698, 2679, 1, 0, 0, 0, 2698, 2687, 1, 0, 0, 0, 2699, 425, 1, 0, 0, 0, 2700, 2705, 3, 84, 42, 0, 2701, 2705, 3, 428, 214, 0, 2702, 2705, 3, 88, 44, 0, 2703, 2705, 3, 92, 46, 0, 2704, 2700, 1, 0, 0, 0, 2704, 2701, 1, 0, 0, 0, 2704, 2702, 1, 0, 0, 0, 2704, 2703, 1, 0, 0, 0, 2705, 427, 1, 0, 0, 0, 2706, 2707, 3, 430, 215, 0, 2707, 429, 1, 0, 0, 0, 2708, 2710, 5, 65, 0, 0, 2709, 2708, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2712, 1, 0, 0, 0, 2711, 2713, 7, 19, 0, 0, 2712, 2711, 1, 0, 0, 0, 2712, 2713, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 2716, 3, 234, 117, 0, 2715, 2717, 3, 198, 99, 0, 2716, 2715, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2719, 1, 0, 0, 0, 2718, 2720, 3, 394, 197, 0, 2719, 2718, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 2722, 3, 424, 212, 0, 2722, 431, 1, 0, 0, 0, 2723, 2725, 3, 416, 208, 0, 2724, 2723, 1, 0, 0, 0, 2725, 2728, 1, 0, 0, 0, 2726, 2724, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2729, 1, 0, 0, 0, 2728, 2726, 1, 0, 0, 0, 2729, 2730, 3, 436, 218, 0, 2730, 2731, 3, 438, 219, 0, 2731, 433, 1, 0, 0, 0, 2732, 2734, 5, 141, 0, 0, 2733, 2732, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2735, 1, 0, 0, 0, 2735, 2739, 5, 94, 0, 0, 2736, 2738, 3, 416, 208, 0, 2737, 2736, 1, 0, 0, 0, 2738, 2741, 1, 0, 0, 0, 2739, 2737, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2742, 1, 0, 0, 0, 2741, 2739, 1, 0, 0, 0, 2742, 2743, 3, 436, 218, 0, 2743, 2744, 3, 438, 219, 0, 2744, 435, 1, 0, 0, 0, 2745, 2747, 5, 115, 0, 0, 2746, 2748, 3, 46, 23, 0, 2747, 2746, 1, 0, 0, 0, 2747, 2748, 1, 0, 0, 0, 2748, 437, 1, 0, 0, 0, 2749, 2759, 5, 205, 0, 0, 2750, 2754, 5, 214, 0, 0, 2751, 2753, 3, 446, 223, 0, 2752, 2751, 1, 0, 0, 0, 2753, 2756, 1, 0, 0, 0, 2754, 2752, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2757, 1, 0, 0, 0, 2756, 2754, 1, 0, 0, 0, 2757, 2759, 5, 216, 0, 0, 2758, 2749, 1, 0, 0, 0, 2758, 2750, 1, 0, 0, 0, 2759, 439, 1, 0, 0, 0, 2760, 2761, 3, 78, 39, 0, 2761, 2762, 5, 68, 0, 0, 2762, 2763, 3, 0, 0, 0, 2763, 2764, 5, 205, 0, 0, 2764, 441, 1, 0, 0, 0, 2765, 2767, 3, 46, 23, 0, 2766, 2765, 1, 0, 0, 0, 2766, 2767, 1, 0, 0, 0, 2767, 2768, 1, 0, 0, 0, 2768, 2770, 5, 74, 0, 0, 2769, 2766, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2776, 3, 90, 45, 0, 2772, 2773, 5, 200, 0, 0, 2773, 2775, 3, 90, 45, 0, 2774, 2772, 1, 0, 0, 0, 2775, 2778, 1, 0, 0, 0, 2776, 2774, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2779, 1, 0, 0, 0, 2778, 2776, 1, 0, 0, 0, 2779, 2780, 5, 154, 0, 0, 2780, 2785, 3, 90, 45, 0, 2781, 2782, 5, 200, 0, 0, 2782, 2784, 3, 90, 45, 0, 2783, 2781, 1, 0, 0, 0, 2784, 2787, 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 443, 1, 0, 0, 0, 2787, 2785, 1, 0, 0, 0, 2788, 2789, 3, 60, 30, 0, 2789, 445, 1, 0, 0, 0, 2790, 2795, 3, 448, 224, 0, 2791, 2795, 3, 440, 220, 0, 2792, 2795, 3, 88, 44, 0, 2793, 2795, 3, 92, 46, 0, 2794, 2790, 1, 0, 0, 0, 2794, 2791, 1, 0, 0, 0, 2794, 2792, 1, 0, 0, 0, 2794, 2793, 1, 0, 0, 0, 2795, 447, 1, 0, 0, 0, 2796, 2799, 3, 78, 39, 0, 2797, 2800, 3, 450, 225, 0, 2798, 2800, 3, 452, 226, 0, 2799, 2797, 1, 0, 0, 0, 2799, 2798, 1, 0, 0, 0, 2800, 449, 1, 0, 0, 0, 2801, 2832, 3, 432, 216, 0, 2802, 2832, 3, 434, 217, 0, 2803, 2832, 3, 60, 30, 0, 2804, 2832, 3, 54, 27, 0, 2805, 2832, 3, 522, 261, 0, 2806, 2832, 3, 526, 263, 0, 2807, 2832, 3, 538, 269, 0, 2808, 2832, 3, 540, 270, 0, 2809, 2832, 3, 564, 282, 0, 2810, 2832, 3, 568, 284, 0, 2811, 2832, 3, 582, 291, 0, 2812, 2832, 3, 632, 316, 0, 2813, 2832, 3, 596, 298, 0, 2814, 2832, 3, 572, 286, 0, 2815, 2832, 3, 654, 327, 0, 2816, 2832, 3, 830, 415, 0, 2817, 2832, 3, 768, 384, 0, 2818, 2832, 3, 842, 421, 0, 2819, 2832, 3, 850, 425, 0, 2820, 2832, 3, 890, 445, 0, 2821, 2832, 3, 894, 447, 0, 2822, 2832, 3, 906, 453, 0, 2823, 2832, 3, 910, 455, 0, 2824, 2832, 3, 918, 459, 0, 2825, 2832, 3, 924, 462, 0, 2826, 2832, 3, 946, 473, 0, 2827, 2832, 3, 950, 475, 0, 2828, 2832, 3, 954, 477, 0, 2829, 2832, 3, 626, 313, 0, 2830, 2832, 3, 966, 483, 0, 2831, 2801, 1, 0, 0, 0, 2831, 2802, 1, 0, 0, 0, 2831, 2803, 1, 0, 0, 0, 2831, 2804, 1, 0, 0, 0, 2831, 2805, 1, 0, 0, 0, 2831, 2806, 1, 0, 0, 0, 2831, 2807, 1, 0, 0, 0, 2831, 2808, 1, 0, 0, 0, 2831, 2809, 1, 0, 0, 0, 2831, 2810, 1, 0, 0, 0, 2831, 2811, 1, 0, 0, 0, 2831, 2812, 1, 0, 0, 0, 2831, 2813, 1, 0, 0, 0, 2831, 2814, 1, 0, 0, 0, 2831, 2815, 1, 0, 0, 0, 2831, 2816, 1, 0, 0, 0, 2831, 2817, 1, 0, 0, 0, 2831, 2818, 1, 0, 0, 0, 2831, 2819, 1, 0, 0, 0, 2831, 2820, 1, 0, 0, 0, 2831, 2821, 1, 0, 0, 0, 2831, 2822, 1, 0, 0, 0, 2831, 2823, 1, 0, 0, 0, 2831, 2824, 1, 0, 0, 0, 2831, 2825, 1, 0, 0, 0, 2831, 2826, 1, 0, 0, 0, 2831, 2827, 1, 0, 0, 0, 2831, 2828, 1, 0, 0, 0, 2831, 2829, 1, 0, 0, 0, 2831, 2830, 1, 0, 0, 0, 2832, 451, 1, 0, 0, 0, 2833, 2836, 3, 510, 255, 0, 2834, 2836, 3, 512, 256, 0, 2835, 2833, 1, 0, 0, 0, 2835, 2834, 1, 0, 0, 0, 2836, 453, 1, 0, 0, 0, 2837, 2838, 7, 23, 0, 0, 2838, 455, 1, 0, 0, 0, 2839, 2840, 3, 416, 208, 0, 2840, 457, 1, 0, 0, 0, 2841, 2843, 3, 454, 227, 0, 2842, 2841, 1, 0, 0, 0, 2842, 2843, 1, 0, 0, 0, 2843, 2847, 1, 0, 0, 0, 2844, 2846, 3, 456, 228, 0, 2845, 2844, 1, 0, 0, 0, 2846, 2849, 1, 0, 0, 0, 2847, 2845, 1, 0, 0, 0, 2847, 2848, 1, 0, 0, 0, 2848, 459, 1, 0, 0, 0, 2849, 2847, 1, 0, 0, 0, 2850, 2851, 3, 462, 231, 0, 2851, 2852, 3, 464, 232, 0, 2852, 461, 1, 0, 0, 0, 2853, 2855, 3, 46, 23, 0, 2854, 2853, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 2857, 1, 0, 0, 0, 2856, 2858, 3, 520, 260, 0, 2857, 2856, 1, 0, 0, 0, 2857, 2858, 1, 0, 0, 0, 2858, 463, 1, 0, 0, 0, 2859, 2869, 5, 205, 0, 0, 2860, 2864, 5, 214, 0, 0, 2861, 2863, 3, 466, 233, 0, 2862, 2861, 1, 0, 0, 0, 2863, 2866, 1, 0, 0, 0, 2864, 2862, 1, 0, 0, 0, 2864, 2865, 1, 0, 0, 0, 2865, 2867, 1, 0, 0, 0, 2866, 2864, 1, 0, 0, 0, 2867, 2869, 5, 216, 0, 0, 2868, 2859, 1, 0, 0, 0, 2868, 2860, 1, 0, 0, 0, 2869, 465, 1, 0, 0, 0, 2870, 2881, 3, 92, 46, 0, 2871, 2872, 3, 78, 39, 0, 2872, 2873, 3, 468, 234, 0, 2873, 2881, 1, 0, 0, 0, 2874, 2876, 3, 556, 278, 0, 2875, 2874, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2877, 1, 0, 0, 0, 2877, 2878, 3, 78, 39, 0, 2878, 2879, 3, 512, 256, 0, 2879, 2881, 1, 0, 0, 0, 2880, 2870, 1, 0, 0, 0, 2880, 2871, 1, 0, 0, 0, 2880, 2875, 1, 0, 0, 0, 2881, 467, 1, 0, 0, 0, 2882, 2887, 5, 7, 0, 0, 2883, 2884, 5, 206, 0, 0, 2884, 2885, 3, 44, 22, 0, 2885, 2886, 5, 208, 0, 0, 2886, 2888, 1, 0, 0, 0, 2887, 2883, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2890, 1, 0, 0, 0, 2889, 2891, 3, 44, 22, 0, 2890, 2889, 1, 0, 0, 0, 2890, 2891, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2893, 5, 71, 0, 0, 2893, 2894, 3, 90, 45, 0, 2894, 2895, 3, 48, 24, 0, 2895, 2901, 1, 0, 0, 0, 2896, 2897, 5, 164, 0, 0, 2897, 2901, 3, 518, 259, 0, 2898, 2901, 3, 450, 225, 0, 2899, 2901, 3, 510, 255, 0, 2900, 2882, 1, 0, 0, 0, 2900, 2896, 1, 0, 0, 0, 2900, 2898, 1, 0, 0, 0, 2900, 2899, 1, 0, 0, 0, 2901, 469, 1, 0, 0, 0, 2902, 2903, 3, 78, 39, 0, 2903, 2904, 3, 450, 225, 0, 2904, 471, 1, 0, 0, 0, 2905, 2906, 3, 78, 39, 0, 2906, 2907, 5, 164, 0, 0, 2907, 2908, 3, 518, 259, 0, 2908, 473, 1, 0, 0, 0, 2909, 2910, 3, 78, 39, 0, 2910, 2911, 3, 510, 255, 0, 2911, 475, 1, 0, 0, 0, 2912, 2913, 3, 78, 39, 0, 2913, 2914, 3, 512, 256, 0, 2914, 477, 1, 0, 0, 0, 2915, 2916, 3, 78, 39, 0, 2916, 2917, 3, 514, 257, 0, 2917, 479, 1, 0, 0, 0, 2918, 2919, 3, 78, 39, 0, 2919, 2920, 3, 516, 258, 0, 2920, 481, 1, 0, 0, 0, 2921, 2923, 3, 184, 92, 0, 2922, 2921, 1, 0, 0, 0, 2922, 2923, 1, 0, 0, 0, 2923, 2925, 1, 0, 0, 0, 2924, 2926, 5, 49, 0, 0, 2925, 2924, 1, 0, 0, 0, 2925, 2926, 1, 0, 0, 0, 2926, 2928, 1, 0, 0, 0, 2927, 2929, 7, 23, 0, 0, 2928, 2927, 1, 0, 0, 0, 2928, 2929, 1, 0, 0, 0, 2929, 2931, 1, 0, 0, 0, 2930, 2932, 5, 40, 0, 0, 2931, 2930, 1, 0, 0, 0, 2931, 2932, 1, 0, 0, 0, 2932, 483, 1, 0, 0, 0, 2933, 2935, 3, 482, 241, 0, 2934, 2936, 5, 127, 0, 0, 2935, 2934, 1, 0, 0, 0, 2935, 2936, 1, 0, 0, 0, 2936, 485, 1, 0, 0, 0, 2937, 2938, 5, 56, 0, 0, 2938, 2939, 3, 180, 90, 0, 2939, 487, 1, 0, 0, 0, 2940, 2941, 3, 416, 208, 0, 2941, 489, 1, 0, 0, 0, 2942, 2945, 3, 486, 243, 0, 2943, 2945, 3, 484, 242, 0, 2944, 2942, 1, 0, 0, 0, 2944, 2943, 1, 0, 0, 0, 2945, 491, 1, 0, 0, 0, 2946, 2950, 3, 490, 245, 0, 2947, 2949, 3, 488, 244, 0, 2948, 2947, 1, 0, 0, 0, 2949, 2952, 1, 0, 0, 0, 2950, 2948, 1, 0, 0, 0, 2950, 2951, 1, 0, 0, 0, 2951, 493, 1, 0, 0, 0, 2952, 2950, 1, 0, 0, 0, 2953, 2955, 3, 496, 248, 0, 2954, 2953, 1, 0, 0, 0, 2954, 2955, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2957, 3, 498, 249, 0, 2957, 495, 1, 0, 0, 0, 2958, 2960, 3, 46, 23, 0, 2959, 2961, 3, 198, 99, 0, 2960, 2959, 1, 0, 0, 0, 2960, 2961, 1, 0, 0, 0, 2961, 2964, 1, 0, 0, 0, 2962, 2964, 3, 198, 99, 0, 2963, 2958, 1, 0, 0, 0, 2963, 2962, 1, 0, 0, 0, 2964, 497, 1, 0, 0, 0, 2965, 2967, 3, 394, 197, 0, 2966, 2965, 1, 0, 0, 0, 2966, 2967, 1, 0, 0, 0, 2967, 2968, 1, 0, 0, 0, 2968, 2969, 3, 500, 250, 0, 2969, 499, 1, 0, 0, 0, 2970, 2971, 3, 464, 232, 0, 2971, 501, 1, 0, 0, 0, 2972, 2973, 3, 482, 241, 0, 2973, 2974, 3, 494, 247, 0, 2974, 503, 1, 0, 0, 0, 2975, 2978, 3, 486, 243, 0, 2976, 2978, 3, 482, 241, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 2980, 5, 127, 0, 0, 2980, 2981, 3, 494, 247, 0, 2981, 505, 1, 0, 0, 0, 2982, 2983, 3, 486, 243, 0, 2983, 2984, 3, 186, 93, 0, 2984, 2985, 3, 498, 249, 0, 2985, 507, 1, 0, 0, 0, 2986, 2990, 3, 228, 114, 0, 2987, 2989, 3, 202, 101, 0, 2988, 2987, 1, 0, 0, 0, 2989, 2992, 1, 0, 0, 0, 2990, 2988, 1, 0, 0, 0, 2990, 2991, 1, 0, 0, 0, 2991, 2993, 1, 0, 0, 0, 2992, 2990, 1, 0, 0, 0, 2993, 2994, 3, 500, 250, 0, 2994, 509, 1, 0, 0, 0, 2995, 3004, 3, 504, 252, 0, 2996, 3004, 3, 506, 253, 0, 2997, 3004, 3, 524, 262, 0, 2998, 3004, 3, 534, 267, 0, 2999, 3004, 3, 592, 296, 0, 3000, 3004, 3, 594, 297, 0, 3001, 3004, 3, 968, 484, 0, 3002, 3004, 3, 502, 251, 0, 3003, 2995, 1, 0, 0, 0, 3003, 2996, 1, 0, 0, 0, 3003, 2997, 1, 0, 0, 0, 3003, 2998, 1, 0, 0, 0, 3003, 2999, 1, 0, 0, 0, 3003, 3000, 1, 0, 0, 0, 3003, 3001, 1, 0, 0, 0, 3003, 3002, 1, 0, 0, 0, 3004, 511, 1, 0, 0, 0, 3005, 3008, 3, 514, 257, 0, 3006, 3008, 3, 516, 258, 0, 3007, 3005, 1, 0, 0, 0, 3007, 3006, 1, 0, 0, 0, 3008, 513, 1, 0, 0, 0, 3009, 3025, 3, 546, 273, 0, 3010, 3025, 3, 548, 274, 0, 3011, 3025, 3, 550, 275, 0, 3012, 3025, 3, 554, 277, 0, 3013, 3025, 3, 566, 283, 0, 3014, 3025, 3, 570, 285, 0, 3015, 3025, 3, 934, 467, 0, 3016, 3025, 3, 952, 476, 0, 3017, 3025, 3, 578, 289, 0, 3018, 3025, 3, 584, 292, 0, 3019, 3025, 3, 612, 306, 0, 3020, 3025, 3, 628, 314, 0, 3021, 3025, 3, 634, 317, 0, 3022, 3025, 3, 642, 321, 0, 3023, 3025, 3, 644, 322, 0, 3024, 3009, 1, 0, 0, 0, 3024, 3010, 1, 0, 0, 0, 3024, 3011, 1, 0, 0, 0, 3024, 3012, 1, 0, 0, 0, 3024, 3013, 1, 0, 0, 0, 3024, 3014, 1, 0, 0, 0, 3024, 3015, 1, 0, 0, 0, 3024, 3016, 1, 0, 0, 0, 3024, 3017, 1, 0, 0, 0, 3024, 3018, 1, 0, 0, 0, 3024, 3019, 1, 0, 0, 0, 3024, 3020, 1, 0, 0, 0, 3024, 3021, 1, 0, 0, 0, 3024, 3022, 1, 0, 0, 0, 3024, 3023, 1, 0, 0, 0, 3025, 515, 1, 0, 0, 0, 3026, 3043, 3, 672, 336, 0, 3027, 3043, 3, 832, 416, 0, 3028, 3043, 3, 796, 398, 0, 3029, 3043, 3, 844, 422, 0, 3030, 3043, 3, 878, 439, 0, 3031, 3043, 3, 892, 446, 0, 3032, 3043, 3, 896, 448, 0, 3033, 3043, 3, 908, 454, 0, 3034, 3043, 3, 912, 456, 0, 3035, 3043, 3, 920, 460, 0, 3036, 3043, 3, 948, 474, 0, 3037, 3043, 3, 676, 338, 0, 3038, 3043, 3, 800, 400, 0, 3039, 3043, 3, 922, 461, 0, 3040, 3043, 3, 846, 423, 0, 3041, 3043, 3, 880, 440, 0, 3042, 3026, 1, 0, 0, 0, 3042, 3027, 1, 0, 0, 0, 3042, 3028, 1, 0, 0, 0, 3042, 3029, 1, 0, 0, 0, 3042, 3030, 1, 0, 0, 0, 3042, 3031, 1, 0, 0, 0, 3042, 3032, 1, 0, 0, 0, 3042, 3033, 1, 0, 0, 0, 3042, 3034, 1, 0, 0, 0, 3042, 3035, 1, 0, 0, 0, 3042, 3036, 1, 0, 0, 0, 3042, 3037, 1, 0, 0, 0, 3042, 3038, 1, 0, 0, 0, 3042, 3039, 1, 0, 0, 0, 3042, 3040, 1, 0, 0, 0, 3042, 3041, 1, 0, 0, 0, 3043, 517, 1, 0, 0, 0, 3044, 3066, 3, 508, 254, 0, 3045, 3066, 3, 504, 252, 0, 3046, 3066, 3, 524, 262, 0, 3047, 3066, 3, 592, 296, 0, 3048, 3066, 3, 594, 297, 0, 3049, 3066, 3, 546, 273, 0, 3050, 3066, 3, 548, 274, 0, 3051, 3066, 3, 550, 275, 0, 3052, 3066, 3, 554, 277, 0, 3053, 3066, 3, 566, 283, 0, 3054, 3066, 3, 570, 285, 0, 3055, 3066, 3, 934, 467, 0, 3056, 3066, 3, 952, 476, 0, 3057, 3066, 3, 578, 289, 0, 3058, 3066, 3, 584, 292, 0, 3059, 3066, 3, 612, 306, 0, 3060, 3066, 3, 628, 314, 0, 3061, 3066, 3, 634, 317, 0, 3062, 3066, 3, 642, 321, 0, 3063, 3066, 3, 644, 322, 0, 3064, 3066, 3, 516, 258, 0, 3065, 3044, 1, 0, 0, 0, 3065, 3045, 1, 0, 0, 0, 3065, 3046, 1, 0, 0, 0, 3065, 3047, 1, 0, 0, 0, 3065, 3048, 1, 0, 0, 0, 3065, 3049, 1, 0, 0, 0, 3065, 3050, 1, 0, 0, 0, 3065, 3051, 1, 0, 0, 0, 3065, 3052, 1, 0, 0, 0, 3065, 3053, 1, 0, 0, 0, 3065, 3054, 1, 0, 0, 0, 3065, 3055, 1, 0, 0, 0, 3065, 3056, 1, 0, 0, 0, 3065, 3057, 1, 0, 0, 0, 3065, 3058, 1, 0, 0, 0, 3065, 3059, 1, 0, 0, 0, 3065, 3060, 1, 0, 0, 0, 3065, 3061, 1, 0, 0, 0, 3065, 3062, 1, 0, 0, 0, 3065, 3063, 1, 0, 0, 0, 3065, 3064, 1, 0, 0, 0, 3066, 519, 1, 0, 0, 0, 3067, 3068, 7, 11, 0, 0, 3068, 3073, 3, 170, 85, 0, 3069, 3070, 5, 200, 0, 0, 3070, 3072, 3, 170, 85, 0, 3071, 3069, 1, 0, 0, 0, 3072, 3075, 1, 0, 0, 0, 3073, 3071, 1, 0, 0, 0, 3073, 3074, 1, 0, 0, 0, 3074, 521, 1, 0, 0, 0, 3075, 3073, 1, 0, 0, 0, 3076, 3077, 3, 458, 229, 0, 3077, 3078, 5, 19, 0, 0, 3078, 3079, 5, 45, 0, 0, 3079, 3080, 3, 460, 230, 0, 3080, 523, 1, 0, 0, 0, 3081, 3082, 3, 492, 246, 0, 3082, 3083, 5, 19, 0, 0, 3083, 3084, 3, 494, 247, 0, 3084, 525, 1, 0, 0, 0, 3085, 3087, 3, 456, 228, 0, 3086, 3085, 1, 0, 0, 0, 3087, 3090, 1, 0, 0, 0, 3088, 3086, 1, 0, 0, 0, 3088, 3089, 1, 0, 0, 0, 3089, 3091, 1, 0, 0, 0, 3090, 3088, 1, 0, 0, 0, 3091, 3092, 5, 58, 0, 0, 3092, 3093, 5, 45, 0, 0, 3093, 3094, 3, 462, 231, 0, 3094, 3095, 3, 528, 264, 0, 3095, 527, 1, 0, 0, 0, 3096, 3107, 5, 205, 0, 0, 3097, 3102, 5, 214, 0, 0, 3098, 3101, 3, 444, 222, 0, 3099, 3101, 3, 530, 265, 0, 3100, 3098, 1, 0, 0, 0, 3100, 3099, 1, 0, 0, 0, 3101, 3104, 1, 0, 0, 0, 3102, 3100, 1, 0, 0, 0, 3102, 3103, 1, 0, 0, 0, 3103, 3105, 1, 0, 0, 0, 3104, 3102, 1, 0, 0, 0, 3105, 3107, 5, 216, 0, 0, 3106, 3096, 1, 0, 0, 0, 3106, 3097, 1, 0, 0, 0, 3107, 529, 1, 0, 0, 0, 3108, 3109, 3, 78, 39, 0, 3109, 3110, 3, 532, 266, 0, 3110, 531, 1, 0, 0, 0, 3111, 3113, 5, 58, 0, 0, 3112, 3111, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 3114, 1, 0, 0, 0, 3114, 3115, 3, 494, 247, 0, 3115, 533, 1, 0, 0, 0, 3116, 3117, 3, 492, 246, 0, 3117, 3118, 5, 58, 0, 0, 3118, 3119, 3, 494, 247, 0, 3119, 535, 1, 0, 0, 0, 3120, 3122, 3, 454, 227, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 3125, 1, 0, 0, 0, 3123, 3124, 5, 82, 0, 0, 3124, 3126, 3, 542, 271, 0, 3125, 3123, 1, 0, 0, 0, 3125, 3126, 1, 0, 0, 0, 3126, 3130, 1, 0, 0, 0, 3127, 3129, 3, 456, 228, 0, 3128, 3127, 1, 0, 0, 0, 3129, 3132, 1, 0, 0, 0, 3130, 3128, 1, 0, 0, 0, 3130, 3131, 1, 0, 0, 0, 3131, 537, 1, 0, 0, 0, 3132, 3130, 1, 0, 0, 0, 3133, 3134, 3, 536, 268, 0, 3134, 3135, 5, 110, 0, 0, 3135, 3136, 5, 45, 0, 0, 3136, 3137, 3, 460, 230, 0, 3137, 539, 1, 0, 0, 0, 3138, 3140, 3, 454, 227, 0, 3139, 3138, 1, 0, 0, 0, 3139, 3140, 1, 0, 0, 0, 3140, 3141, 1, 0, 0, 0, 3141, 3145, 5, 82, 0, 0, 3142, 3144, 3, 456, 228, 0, 3143, 3142, 1, 0, 0, 0, 3144, 3147, 1, 0, 0, 0, 3145, 3143, 1, 0, 0, 0, 3145, 3146, 1, 0, 0, 0, 3146, 3148, 1, 0, 0, 0, 3147, 3145, 1, 0, 0, 0, 3148, 3149, 5, 45, 0, 0, 3149, 3150, 3, 460, 230, 0, 3150, 3151, 3, 542, 271, 0, 3151, 541, 1, 0, 0, 0, 3152, 3153, 3, 980, 490, 0, 3153, 543, 1, 0, 0, 0, 3154, 3156, 3, 484, 242, 0, 3155, 3157, 5, 82, 0, 0, 3156, 3155, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3159, 1, 0, 0, 0, 3158, 3160, 3, 552, 276, 0, 3159, 3158, 1, 0, 0, 0, 3159, 3160, 1, 0, 0, 0, 3160, 3164, 1, 0, 0, 0, 3161, 3163, 3, 488, 244, 0, 3162, 3161, 1, 0, 0, 0, 3163, 3166, 1, 0, 0, 0, 3164, 3162, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 545, 1, 0, 0, 0, 3166, 3164, 1, 0, 0, 0, 3167, 3168, 3, 544, 272, 0, 3168, 3169, 5, 110, 0, 0, 3169, 3170, 3, 494, 247, 0, 3170, 547, 1, 0, 0, 0, 3171, 3172, 3, 484, 242, 0, 3172, 3176, 5, 82, 0, 0, 3173, 3175, 3, 488, 244, 0, 3174, 3173, 1, 0, 0, 0, 3175, 3178, 1, 0, 0, 0, 3176, 3174, 1, 0, 0, 0, 3176, 3177, 1, 0, 0, 0, 3177, 3179, 1, 0, 0, 0, 3178, 3176, 1, 0, 0, 0, 3179, 3180, 3, 494, 247, 0, 3180, 549, 1, 0, 0, 0, 3181, 3183, 3, 484, 242, 0, 3182, 3184, 5, 82, 0, 0, 3183, 3182, 1, 0, 0, 0, 3183, 3184, 1, 0, 0, 0, 3184, 3185, 1, 0, 0, 0, 3185, 3189, 3, 552, 276, 0, 3186, 3188, 3, 488, 244, 0, 3187, 3186, 1, 0, 0, 0, 3188, 3191, 1, 0, 0, 0, 3189, 3187, 1, 0, 0, 0, 3189, 3190, 1, 0, 0, 0, 3190, 3192, 1, 0, 0, 0, 3191, 3189, 1, 0, 0, 0, 3192, 3193, 3, 494, 247, 0, 3193, 551, 1, 0, 0, 0, 3194, 3195, 7, 24, 0, 0, 3195, 553, 1, 0, 0, 0, 3196, 3197, 3, 544, 272, 0, 3197, 3206, 5, 59, 0, 0, 3198, 3200, 3, 228, 114, 0, 3199, 3201, 3, 198, 99, 0, 3200, 3199, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3207, 1, 0, 0, 0, 3202, 3204, 5, 110, 0, 0, 3203, 3205, 3, 496, 248, 0, 3204, 3203, 1, 0, 0, 0, 3204, 3205, 1, 0, 0, 0, 3205, 3207, 1, 0, 0, 0, 3206, 3198, 1, 0, 0, 0, 3206, 3202, 1, 0, 0, 0, 3207, 3208, 1, 0, 0, 0, 3208, 3209, 3, 498, 249, 0, 3209, 555, 1, 0, 0, 0, 3210, 3211, 5, 152, 0, 0, 3211, 3212, 3, 558, 279, 0, 3212, 557, 1, 0, 0, 0, 3213, 3214, 3, 560, 280, 0, 3214, 559, 1, 0, 0, 0, 3215, 3216, 3, 562, 281, 0, 3216, 561, 1, 0, 0, 0, 3217, 3219, 3, 404, 202, 0, 3218, 3217, 1, 0, 0, 0, 3218, 3219, 1, 0, 0, 0, 3219, 563, 1, 0, 0, 0, 3220, 3221, 3, 536, 268, 0, 3221, 3222, 5, 91, 0, 0, 3222, 3223, 5, 45, 0, 0, 3223, 3224, 3, 460, 230, 0, 3224, 565, 1, 0, 0, 0, 3225, 3226, 3, 544, 272, 0, 3226, 3227, 5, 91, 0, 0, 3227, 3228, 3, 494, 247, 0, 3228, 567, 1, 0, 0, 0, 3229, 3230, 3, 536, 268, 0, 3230, 3231, 5, 117, 0, 0, 3231, 3232, 5, 45, 0, 0, 3232, 3233, 3, 460, 230, 0, 3233, 569, 1, 0, 0, 0, 3234, 3235, 3, 544, 272, 0, 3235, 3236, 5, 117, 0, 0, 3236, 3237, 3, 494, 247, 0, 3237, 571, 1, 0, 0, 0, 3238, 3239, 3, 458, 229, 0, 3239, 3240, 5, 119, 0, 0, 3240, 3241, 5, 45, 0, 0, 3241, 3242, 3, 460, 230, 0, 3242, 3243, 3, 574, 287, 0, 3243, 573, 1, 0, 0, 0, 3244, 3245, 3, 576, 288, 0, 3245, 575, 1, 0, 0, 0, 3246, 3247, 3, 988, 494, 0, 3247, 577, 1, 0, 0, 0, 3248, 3249, 3, 544, 272, 0, 3249, 3250, 5, 119, 0, 0, 3250, 3251, 3, 494, 247, 0, 3251, 579, 1, 0, 0, 0, 3252, 3253, 5, 217, 0, 0, 3253, 3254, 3, 90, 45, 0, 3254, 581, 1, 0, 0, 0, 3255, 3256, 3, 536, 268, 0, 3256, 3257, 5, 37, 0, 0, 3257, 3258, 5, 45, 0, 0, 3258, 3259, 3, 460, 230, 0, 3259, 583, 1, 0, 0, 0, 3260, 3274, 3, 544, 272, 0, 3261, 3263, 5, 37, 0, 0, 3262, 3264, 3, 496, 248, 0, 3263, 3262, 1, 0, 0, 0, 3263, 3264, 1, 0, 0, 0, 3264, 3266, 1, 0, 0, 0, 3265, 3267, 3, 394, 197, 0, 3266, 3265, 1, 0, 0, 0, 3266, 3267, 1, 0, 0, 0, 3267, 3270, 1, 0, 0, 0, 3268, 3269, 5, 36, 0, 0, 3269, 3271, 3, 586, 293, 0, 3270, 3268, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3275, 1, 0, 0, 0, 3272, 3273, 5, 36, 0, 0, 3273, 3275, 3, 586, 293, 0, 3274, 3261, 1, 0, 0, 0, 3274, 3272, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3277, 3, 500, 250, 0, 3277, 585, 1, 0, 0, 0, 3278, 3281, 3, 588, 294, 0, 3279, 3281, 3, 590, 295, 0, 3280, 3278, 1, 0, 0, 0, 3280, 3279, 1, 0, 0, 0, 3281, 587, 1, 0, 0, 0, 3282, 3283, 3, 268, 134, 0, 3283, 3284, 5, 154, 0, 0, 3284, 3285, 3, 268, 134, 0, 3285, 589, 1, 0, 0, 0, 3286, 3287, 5, 196, 0, 0, 3287, 3288, 3, 268, 134, 0, 3288, 3289, 5, 200, 0, 0, 3289, 3294, 3, 268, 134, 0, 3290, 3291, 5, 200, 0, 0, 3291, 3293, 3, 268, 134, 0, 3292, 3290, 1, 0, 0, 0, 3293, 3296, 1, 0, 0, 0, 3294, 3292, 1, 0, 0, 0, 3294, 3295, 1, 0, 0, 0, 3295, 3297, 1, 0, 0, 0, 3296, 3294, 1, 0, 0, 0, 3297, 3298, 5, 197, 0, 0, 3298, 591, 1, 0, 0, 0, 3299, 3304, 3, 492, 246, 0, 3300, 3302, 5, 22, 0, 0, 3301, 3303, 3, 496, 248, 0, 3302, 3301, 1, 0, 0, 0, 3302, 3303, 1, 0, 0, 0, 3303, 3305, 1, 0, 0, 0, 3304, 3300, 1, 0, 0, 0, 3304, 3305, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3307, 5, 21, 0, 0, 3307, 3308, 3, 268, 134, 0, 3308, 3309, 5, 207, 0, 0, 3309, 3310, 3, 268, 134, 0, 3310, 3311, 3, 500, 250, 0, 3311, 593, 1, 0, 0, 0, 3312, 3317, 3, 492, 246, 0, 3313, 3315, 5, 150, 0, 0, 3314, 3316, 3, 496, 248, 0, 3315, 3314, 1, 0, 0, 0, 3315, 3316, 1, 0, 0, 0, 3316, 3318, 1, 0, 0, 0, 3317, 3313, 1, 0, 0, 0, 3317, 3318, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3320, 5, 69, 0, 0, 3320, 3321, 3, 268, 134, 0, 3321, 3322, 5, 152, 0, 0, 3322, 3323, 3, 268, 134, 0, 3323, 3324, 3, 500, 250, 0, 3324, 595, 1, 0, 0, 0, 3325, 3326, 3, 536, 268, 0, 3326, 3327, 5, 85, 0, 0, 3327, 3328, 5, 45, 0, 0, 3328, 3329, 3, 462, 231, 0, 3329, 3330, 3, 598, 299, 0, 3330, 597, 1, 0, 0, 0, 3331, 3341, 5, 205, 0, 0, 3332, 3336, 5, 214, 0, 0, 3333, 3335, 3, 600, 300, 0, 3334, 3333, 1, 0, 0, 0, 3335, 3338, 1, 0, 0, 0, 3336, 3334, 1, 0, 0, 0, 3336, 3337, 1, 0, 0, 0, 3337, 3339, 1, 0, 0, 0, 3338, 3336, 1, 0, 0, 0, 3339, 3341, 5, 216, 0, 0, 3340, 3331, 1, 0, 0, 0, 3340, 3332, 1, 0, 0, 0, 3341, 599, 1, 0, 0, 0, 3342, 3352, 3, 470, 235, 0, 3343, 3352, 3, 472, 236, 0, 3344, 3352, 3, 602, 301, 0, 3345, 3347, 3, 556, 278, 0, 3346, 3345, 1, 0, 0, 0, 3346, 3347, 1, 0, 0, 0, 3347, 3348, 1, 0, 0, 0, 3348, 3352, 3, 606, 303, 0, 3349, 3352, 3, 88, 44, 0, 3350, 3352, 3, 92, 46, 0, 3351, 3342, 1, 0, 0, 0, 3351, 3343, 1, 0, 0, 0, 3351, 3344, 1, 0, 0, 0, 3351, 3346, 1, 0, 0, 0, 3351, 3349, 1, 0, 0, 0, 3351, 3350, 1, 0, 0, 0, 3352, 601, 1, 0, 0, 0, 3353, 3354, 3, 78, 39, 0, 3354, 3355, 3, 604, 302, 0, 3355, 603, 1, 0, 0, 0, 3356, 3362, 3, 504, 252, 0, 3357, 3362, 3, 524, 262, 0, 3358, 3362, 3, 534, 267, 0, 3359, 3362, 3, 592, 296, 0, 3360, 3362, 3, 594, 297, 0, 3361, 3356, 1, 0, 0, 0, 3361, 3357, 1, 0, 0, 0, 3361, 3358, 1, 0, 0, 0, 3361, 3359, 1, 0, 0, 0, 3361, 3360, 1, 0, 0, 0, 3362, 605, 1, 0, 0, 0, 3363, 3364, 3, 78, 39, 0, 3364, 3365, 3, 608, 304, 0, 3365, 607, 1, 0, 0, 0, 3366, 3370, 3, 610, 305, 0, 3367, 3370, 3, 514, 257, 0, 3368, 3370, 3, 516, 258, 0, 3369, 3366, 1, 0, 0, 0, 3369, 3367, 1, 0, 0, 0, 3369, 3368, 1, 0, 0, 0, 3370, 609, 1, 0, 0, 0, 3371, 3372, 5, 56, 0, 0, 3372, 3373, 3, 494, 247, 0, 3373, 611, 1, 0, 0, 0, 3374, 3375, 3, 544, 272, 0, 3375, 3376, 5, 85, 0, 0, 3376, 3377, 3, 614, 307, 0, 3377, 3378, 3, 598, 299, 0, 3378, 613, 1, 0, 0, 0, 3379, 3381, 3, 496, 248, 0, 3380, 3379, 1, 0, 0, 0, 3380, 3381, 1, 0, 0, 0, 3381, 3383, 1, 0, 0, 0, 3382, 3384, 3, 394, 197, 0, 3383, 3382, 1, 0, 0, 0, 3383, 3384, 1, 0, 0, 0, 3384, 3387, 1, 0, 0, 0, 3385, 3386, 5, 36, 0, 0, 3386, 3388, 3, 616, 308, 0, 3387, 3385, 1, 0, 0, 0, 3387, 3388, 1, 0, 0, 0, 3388, 3391, 1, 0, 0, 0, 3389, 3391, 3, 616, 308, 0, 3390, 3380, 1, 0, 0, 0, 3390, 3389, 1, 0, 0, 0, 3391, 615, 1, 0, 0, 0, 3392, 3395, 3, 618, 309, 0, 3393, 3395, 3, 620, 310, 0, 3394, 3392, 1, 0, 0, 0, 3394, 3393, 1, 0, 0, 0, 3395, 617, 1, 0, 0, 0, 3396, 3397, 3, 622, 311, 0, 3397, 3398, 5, 154, 0, 0, 3398, 3399, 3, 622, 311, 0, 3399, 619, 1, 0, 0, 0, 3400, 3401, 5, 196, 0, 0, 3401, 3402, 3, 622, 311, 0, 3402, 3403, 5, 200, 0, 0, 3403, 3408, 3, 622, 311, 0, 3404, 3405, 5, 200, 0, 0, 3405, 3407, 3, 622, 311, 0, 3406, 3404, 1, 0, 0, 0, 3407, 3410, 1, 0, 0, 0, 3408, 3406, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3411, 1, 0, 0, 0, 3410, 3408, 1, 0, 0, 0, 3411, 3412, 5, 197, 0, 0, 3412, 621, 1, 0, 0, 0, 3413, 3414, 3, 624, 312, 0, 3414, 623, 1, 0, 0, 0, 3415, 3417, 3, 272, 136, 0, 3416, 3415, 1, 0, 0, 0, 3416, 3417, 1, 0, 0, 0, 3417, 3421, 1, 0, 0, 0, 3418, 3419, 3, 44, 22, 0, 3419, 3420, 7, 17, 0, 0, 3420, 3422, 1, 0, 0, 0, 3421, 3418, 1, 0, 0, 0, 3421, 3422, 1, 0, 0, 0, 3422, 3423, 1, 0, 0, 0, 3423, 3424, 3, 228, 114, 0, 3424, 625, 1, 0, 0, 0, 3425, 3426, 3, 536, 268, 0, 3426, 3427, 5, 10, 0, 0, 3427, 3428, 5, 45, 0, 0, 3428, 3429, 3, 460, 230, 0, 3429, 627, 1, 0, 0, 0, 3430, 3431, 3, 544, 272, 0, 3431, 3432, 3, 630, 315, 0, 3432, 3433, 3, 500, 250, 0, 3433, 629, 1, 0, 0, 0, 3434, 3436, 5, 10, 0, 0, 3435, 3437, 3, 496, 248, 0, 3436, 3435, 1, 0, 0, 0, 3436, 3437, 1, 0, 0, 0, 3437, 3440, 1, 0, 0, 0, 3438, 3439, 5, 9, 0, 0, 3439, 3441, 3, 586, 293, 0, 3440, 3438, 1, 0, 0, 0, 3440, 3441, 1, 0, 0, 0, 3441, 3445, 1, 0, 0, 0, 3442, 3443, 5, 9, 0, 0, 3443, 3445, 3, 586, 293, 0, 3444, 3434, 1, 0, 0, 0, 3444, 3442, 1, 0, 0, 0, 3445, 631, 1, 0, 0, 0, 3446, 3447, 3, 536, 268, 0, 3447, 3448, 5, 70, 0, 0, 3448, 3449, 5, 45, 0, 0, 3449, 3450, 3, 460, 230, 0, 3450, 633, 1, 0, 0, 0, 3451, 3452, 3, 544, 272, 0, 3452, 3453, 5, 99, 0, 0, 3453, 3454, 3, 636, 318, 0, 3454, 3455, 3, 464, 232, 0, 3455, 635, 1, 0, 0, 0, 3456, 3458, 3, 496, 248, 0, 3457, 3456, 1, 0, 0, 0, 3457, 3458, 1, 0, 0, 0, 3458, 3460, 1, 0, 0, 0, 3459, 3461, 3, 394, 197, 0, 3460, 3459, 1, 0, 0, 0, 3460, 3461, 1, 0, 0, 0, 3461, 3464, 1, 0, 0, 0, 3462, 3463, 5, 111, 0, 0, 3463, 3465, 3, 646, 323, 0, 3464, 3462, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3471, 1, 0, 0, 0, 3466, 3467, 5, 74, 0, 0, 3467, 3468, 3, 638, 319, 0, 3468, 3469, 5, 154, 0, 0, 3469, 3470, 3, 638, 319, 0, 3470, 3472, 1, 0, 0, 0, 3471, 3466, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3478, 1, 0, 0, 0, 3473, 3474, 3, 638, 319, 0, 3474, 3475, 5, 154, 0, 0, 3475, 3476, 3, 638, 319, 0, 3476, 3478, 1, 0, 0, 0, 3477, 3457, 1, 0, 0, 0, 3477, 3473, 1, 0, 0, 0, 3478, 637, 1, 0, 0, 0, 3479, 3480, 3, 640, 320, 0, 3480, 639, 1, 0, 0, 0, 3481, 3482, 3, 228, 114, 0, 3482, 641, 1, 0, 0, 0, 3483, 3484, 3, 544, 272, 0, 3484, 3485, 5, 70, 0, 0, 3485, 3486, 3, 376, 188, 0, 3486, 3487, 3, 464, 232, 0, 3487, 643, 1, 0, 0, 0, 3488, 3489, 3, 544, 272, 0, 3489, 3490, 5, 150, 0, 0, 3490, 3491, 5, 70, 0, 0, 3491, 3492, 3, 376, 188, 0, 3492, 3493, 3, 464, 232, 0, 3493, 645, 1, 0, 0, 0, 3494, 3495, 3, 648, 324, 0, 3495, 647, 1, 0, 0, 0, 3496, 3497, 3, 380, 190, 0, 3497, 649, 1, 0, 0, 0, 3498, 3501, 3, 90, 45, 0, 3499, 3501, 3, 652, 326, 0, 3500, 3498, 1, 0, 0, 0, 3500, 3499, 1, 0, 0, 0, 3501, 651, 1, 0, 0, 0, 3502, 3503, 3, 240, 120, 0, 3503, 3504, 5, 202, 0, 0, 3504, 3506, 1, 0, 0, 0, 3505, 3502, 1, 0, 0, 0, 3506, 3507, 1, 0, 0, 0, 3507, 3505, 1, 0, 0, 0, 3507, 3508, 1, 0, 0, 0, 3508, 3509, 1, 0, 0, 0, 3509, 3510, 3, 240, 120, 0, 3510, 3511, 5, 202, 0, 0, 3511, 653, 1, 0, 0, 0, 3512, 3513, 3, 536, 268, 0, 3513, 3514, 5, 4, 0, 0, 3514, 3515, 5, 45, 0, 0, 3515, 3516, 3, 462, 231, 0, 3516, 3517, 3, 656, 328, 0, 3517, 655, 1, 0, 0, 0, 3518, 3528, 5, 205, 0, 0, 3519, 3523, 5, 214, 0, 0, 3520, 3522, 3, 658, 329, 0, 3521, 3520, 1, 0, 0, 0, 3522, 3525, 1, 0, 0, 0, 3523, 3521, 1, 0, 0, 0, 3523, 3524, 1, 0, 0, 0, 3524, 3526, 1, 0, 0, 0, 3525, 3523, 1, 0, 0, 0, 3526, 3528, 5, 216, 0, 0, 3527, 3518, 1, 0, 0, 0, 3527, 3519, 1, 0, 0, 0, 3528, 657, 1, 0, 0, 0, 3529, 3549, 3, 660, 330, 0, 3530, 3534, 3, 664, 332, 0, 3531, 3533, 3, 668, 334, 0, 3532, 3531, 1, 0, 0, 0, 3533, 3536, 1, 0, 0, 0, 3534, 3532, 1, 0, 0, 0, 3534, 3535, 1, 0, 0, 0, 3535, 3549, 1, 0, 0, 0, 3536, 3534, 1, 0, 0, 0, 3537, 3539, 3, 556, 278, 0, 3538, 3537, 1, 0, 0, 0, 3538, 3539, 1, 0, 0, 0, 3539, 3540, 1, 0, 0, 0, 3540, 3544, 3, 662, 331, 0, 3541, 3543, 3, 668, 334, 0, 3542, 3541, 1, 0, 0, 0, 3543, 3546, 1, 0, 0, 0, 3544, 3542, 1, 0, 0, 0, 3544, 3545, 1, 0, 0, 0, 3545, 3549, 1, 0, 0, 0, 3546, 3544, 1, 0, 0, 0, 3547, 3549, 3, 670, 335, 0, 3548, 3529, 1, 0, 0, 0, 3548, 3530, 1, 0, 0, 0, 3548, 3538, 1, 0, 0, 0, 3548, 3547, 1, 0, 0, 0, 3549, 659, 1, 0, 0, 0, 3550, 3560, 3, 92, 46, 0, 3551, 3560, 3, 88, 44, 0, 3552, 3560, 3, 470, 235, 0, 3553, 3560, 3, 472, 236, 0, 3554, 3560, 3, 474, 237, 0, 3555, 3557, 3, 556, 278, 0, 3556, 3555, 1, 0, 0, 0, 3556, 3557, 1, 0, 0, 0, 3557, 3558, 1, 0, 0, 0, 3558, 3560, 3, 478, 239, 0, 3559, 3550, 1, 0, 0, 0, 3559, 3551, 1, 0, 0, 0, 3559, 3552, 1, 0, 0, 0, 3559, 3553, 1, 0, 0, 0, 3559, 3554, 1, 0, 0, 0, 3559, 3556, 1, 0, 0, 0, 3560, 661, 1, 0, 0, 0, 3561, 3564, 3, 480, 240, 0, 3562, 3564, 3, 666, 333, 0, 3563, 3561, 1, 0, 0, 0, 3563, 3562, 1, 0, 0, 0, 3564, 663, 1, 0, 0, 0, 3565, 3566, 3, 78, 39, 0, 3566, 3567, 5, 69, 0, 0, 3567, 3568, 3, 90, 45, 0, 3568, 3569, 3, 48, 24, 0, 3569, 665, 1, 0, 0, 0, 3570, 3571, 3, 78, 39, 0, 3571, 3572, 3, 680, 340, 0, 3572, 667, 1, 0, 0, 0, 3573, 3574, 3, 78, 39, 0, 3574, 3575, 3, 758, 379, 0, 3575, 669, 1, 0, 0, 0, 3576, 3577, 3, 78, 39, 0, 3577, 3578, 3, 766, 383, 0, 3578, 671, 1, 0, 0, 0, 3579, 3580, 3, 544, 272, 0, 3580, 3581, 5, 4, 0, 0, 3581, 3582, 3, 674, 337, 0, 3582, 3583, 3, 656, 328, 0, 3583, 673, 1, 0, 0, 0, 3584, 3586, 3, 496, 248, 0, 3585, 3584, 1, 0, 0, 0, 3585, 3586, 1, 0, 0, 0, 3586, 3588, 1, 0, 0, 0, 3587, 3589, 3, 394, 197, 0, 3588, 3587, 1, 0, 0, 0, 3588, 3589, 1, 0, 0, 0, 3589, 675, 1, 0, 0, 0, 3590, 3591, 3, 544, 272, 0, 3591, 3592, 5, 118, 0, 0, 3592, 3593, 3, 678, 339, 0, 3593, 3594, 3, 656, 328, 0, 3594, 677, 1, 0, 0, 0, 3595, 3597, 3, 228, 114, 0, 3596, 3598, 3, 198, 99, 0, 3597, 3596, 1, 0, 0, 0, 3597, 3598, 1, 0, 0, 0, 3598, 3604, 1, 0, 0, 0, 3599, 3601, 5, 4, 0, 0, 3600, 3602, 3, 496, 248, 0, 3601, 3600, 1, 0, 0, 0, 3601, 3602, 1, 0, 0, 0, 3602, 3604, 1, 0, 0, 0, 3603, 3595, 1, 0, 0, 0, 3603, 3599, 1, 0, 0, 0, 3604, 3606, 1, 0, 0, 0, 3605, 3607, 3, 394, 197, 0, 3606, 3605, 1, 0, 0, 0, 3606, 3607, 1, 0, 0, 0, 3607, 679, 1, 0, 0, 0, 3608, 3617, 3, 686, 343, 0, 3609, 3617, 3, 714, 357, 0, 3610, 3617, 3, 698, 349, 0, 3611, 3617, 3, 728, 364, 0, 3612, 3617, 3, 738, 369, 0, 3613, 3617, 3, 740, 370, 0, 3614, 3617, 3, 750, 375, 0, 3615, 3617, 3, 752, 376, 0, 3616, 3608, 1, 0, 0, 0, 3616, 3609, 1, 0, 0, 0, 3616, 3610, 1, 0, 0, 0, 3616, 3611, 1, 0, 0, 0, 3616, 3612, 1, 0, 0, 0, 3616, 3613, 1, 0, 0, 0, 3616, 3614, 1, 0, 0, 0, 3616, 3615, 1, 0, 0, 0, 3617, 681, 1, 0, 0, 0, 3618, 3620, 5, 4, 0, 0, 3619, 3621, 3, 496, 248, 0, 3620, 3619, 1, 0, 0, 0, 3620, 3621, 1, 0, 0, 0, 3621, 683, 1, 0, 0, 0, 3622, 3624, 3, 544, 272, 0, 3623, 3625, 3, 682, 341, 0, 3624, 3623, 1, 0, 0, 0, 3624, 3625, 1, 0, 0, 0, 3625, 685, 1, 0, 0, 0, 3626, 3631, 3, 690, 345, 0, 3627, 3631, 3, 692, 346, 0, 3628, 3631, 3, 694, 347, 0, 3629, 3631, 3, 696, 348, 0, 3630, 3626, 1, 0, 0, 0, 3630, 3627, 1, 0, 0, 0, 3630, 3628, 1, 0, 0, 0, 3630, 3629, 1, 0, 0, 0, 3631, 687, 1, 0, 0, 0, 3632, 3634, 3, 482, 241, 0, 3633, 3635, 5, 82, 0, 0, 3634, 3633, 1, 0, 0, 0, 3634, 3635, 1, 0, 0, 0, 3635, 3637, 1, 0, 0, 0, 3636, 3638, 3, 552, 276, 0, 3637, 3636, 1, 0, 0, 0, 3637, 3638, 1, 0, 0, 0, 3638, 3642, 1, 0, 0, 0, 3639, 3641, 3, 488, 244, 0, 3640, 3639, 1, 0, 0, 0, 3641, 3644, 1, 0, 0, 0, 3642, 3640, 1, 0, 0, 0, 3642, 3643, 1, 0, 0, 0, 3643, 689, 1, 0, 0, 0, 3644, 3642, 1, 0, 0, 0, 3645, 3646, 3, 688, 344, 0, 3646, 3648, 5, 98, 0, 0, 3647, 3649, 3, 496, 248, 0, 3648, 3647, 1, 0, 0, 0, 3648, 3649, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3651, 3, 656, 328, 0, 3651, 691, 1, 0, 0, 0, 3652, 3653, 3, 688, 344, 0, 3653, 3655, 5, 44, 0, 0, 3654, 3656, 3, 496, 248, 0, 3655, 3654, 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3657, 1, 0, 0, 0, 3657, 3658, 3, 656, 328, 0, 3658, 693, 1, 0, 0, 0, 3659, 3660, 3, 688, 344, 0, 3660, 3662, 5, 92, 0, 0, 3661, 3663, 3, 496, 248, 0, 3662, 3661, 1, 0, 0, 0, 3662, 3663, 1, 0, 0, 0, 3663, 3664, 1, 0, 0, 0, 3664, 3665, 3, 656, 328, 0, 3665, 695, 1, 0, 0, 0, 3666, 3667, 3, 688, 344, 0, 3667, 3669, 5, 72, 0, 0, 3668, 3670, 3, 496, 248, 0, 3669, 3668, 1, 0, 0, 0, 3669, 3670, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3672, 3, 656, 328, 0, 3672, 697, 1, 0, 0, 0, 3673, 3674, 3, 544, 272, 0, 3674, 3675, 3, 700, 350, 0, 3675, 3676, 3, 656, 328, 0, 3676, 699, 1, 0, 0, 0, 3677, 3679, 3, 682, 341, 0, 3678, 3677, 1, 0, 0, 0, 3678, 3679, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3681, 5, 3, 0, 0, 3681, 3682, 3, 702, 351, 0, 3682, 701, 1, 0, 0, 0, 3683, 3686, 3, 704, 352, 0, 3684, 3685, 5, 168, 0, 0, 3685, 3687, 3, 720, 360, 0, 3686, 3684, 1, 0, 0, 0, 3686, 3687, 1, 0, 0, 0, 3687, 703, 1, 0, 0, 0, 3688, 3689, 3, 706, 353, 0, 3689, 705, 1, 0, 0, 0, 3690, 3699, 3, 380, 190, 0, 3691, 3693, 3, 46, 23, 0, 3692, 3691, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693, 3695, 1, 0, 0, 0, 3694, 3696, 3, 382, 191, 0, 3695, 3694, 1, 0, 0, 0, 3695, 3696, 1, 0, 0, 0, 3696, 3697, 1, 0, 0, 0, 3697, 3699, 3, 708, 354, 0, 3698, 3690, 1, 0, 0, 0, 3698, 3692, 1, 0, 0, 0, 3699, 707, 1, 0, 0, 0, 3700, 3701, 3, 710, 355, 0, 3701, 709, 1, 0, 0, 0, 3702, 3703, 3, 712, 356, 0, 3703, 711, 1, 0, 0, 0, 3704, 3705, 7, 25, 0, 0, 3705, 3709, 3, 40, 20, 0, 3706, 3707, 5, 171, 0, 0, 3707, 3709, 3, 42, 21, 0, 3708, 3704, 1, 0, 0, 0, 3708, 3706, 1, 0, 0, 0, 3709, 713, 1, 0, 0, 0, 3710, 3713, 3, 544, 272, 0, 3711, 3714, 3, 682, 341, 0, 3712, 3714, 3, 674, 337, 0, 3713, 3711, 1, 0, 0, 0, 3713, 3712, 1, 0, 0, 0, 3714, 3715, 1, 0, 0, 0, 3715, 3723, 5, 136, 0, 0, 3716, 3718, 3, 720, 360, 0, 3717, 3719, 3, 718, 359, 0, 3718, 3717, 1, 0, 0, 0, 3718, 3719, 1, 0, 0, 0, 3719, 3724, 1, 0, 0, 0, 3720, 3721, 3, 726, 363, 0, 3721, 3722, 3, 718, 359, 0, 3722, 3724, 1, 0, 0, 0, 3723, 3716, 1, 0, 0, 0, 3723, 3720, 1, 0, 0, 0, 3724, 3725, 1, 0, 0, 0, 3725, 3726, 3, 656, 328, 0, 3726, 715, 1, 0, 0, 0, 3727, 3729, 3, 682, 341, 0, 3728, 3727, 1, 0, 0, 0, 3728, 3729, 1, 0, 0, 0, 3729, 3730, 1, 0, 0, 0, 3730, 3731, 5, 136, 0, 0, 3731, 3733, 3, 720, 360, 0, 3732, 3734, 3, 718, 359, 0, 3733, 3732, 1, 0, 0, 0, 3733, 3734, 1, 0, 0, 0, 3734, 717, 1, 0, 0, 0, 3735, 3736, 5, 168, 0, 0, 3736, 3739, 3, 720, 360, 0, 3737, 3738, 5, 154, 0, 0, 3738, 3740, 3, 720, 360, 0, 3739, 3737, 1, 0, 0, 0, 3739, 3740, 1, 0, 0, 0, 3740, 3746, 1, 0, 0, 0, 3741, 3742, 3, 726, 363, 0, 3742, 3743, 5, 154, 0, 0, 3743, 3744, 3, 720, 360, 0, 3744, 3746, 1, 0, 0, 0, 3745, 3735, 1, 0, 0, 0, 3745, 3741, 1, 0, 0, 0, 3746, 719, 1, 0, 0, 0, 3747, 3748, 3, 722, 361, 0, 3748, 721, 1, 0, 0, 0, 3749, 3750, 3, 724, 362, 0, 3750, 723, 1, 0, 0, 0, 3751, 3752, 3, 0, 0, 0, 3752, 725, 1, 0, 0, 0, 3753, 3754, 3, 982, 491, 0, 3754, 727, 1, 0, 0, 0, 3755, 3756, 3, 544, 272, 0, 3756, 3757, 3, 730, 365, 0, 3757, 3758, 3, 656, 328, 0, 3758, 729, 1, 0, 0, 0, 3759, 3761, 3, 682, 341, 0, 3760, 3759, 1, 0, 0, 0, 3760, 3761, 1, 0, 0, 0, 3761, 3762, 1, 0, 0, 0, 3762, 3763, 5, 15, 0, 0, 3763, 3764, 3, 732, 366, 0, 3764, 3765, 3, 340, 170, 0, 3765, 3766, 5, 184, 0, 0, 3766, 3767, 3, 720, 360, 0, 3767, 731, 1, 0, 0, 0, 3768, 3769, 3, 734, 367, 0, 3769, 733, 1, 0, 0, 0, 3770, 3771, 3, 736, 368, 0, 3771, 3772, 5, 202, 0, 0, 3772, 3774, 1, 0, 0, 0, 3773, 3770, 1, 0, 0, 0, 3773, 3774, 1, 0, 0, 0, 3774, 735, 1, 0, 0, 0, 3775, 3776, 3, 986, 493, 0, 3776, 737, 1, 0, 0, 0, 3777, 3779, 3, 544, 272, 0, 3778, 3780, 3, 682, 341, 0, 3779, 3778, 1, 0, 0, 0, 3779, 3780, 1, 0, 0, 0, 3780, 3781, 1, 0, 0, 0, 3781, 3783, 5, 151, 0, 0, 3782, 3784, 3, 720, 360, 0, 3783, 3782, 1, 0, 0, 0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3786, 3, 656, 328, 0, 3786, 739, 1, 0, 0, 0, 3787, 3788, 3, 684, 342, 0, 3788, 3789, 5, 77, 0, 0, 3789, 3790, 3, 742, 371, 0, 3790, 3796, 3, 744, 372, 0, 3791, 3794, 5, 55, 0, 0, 3792, 3795, 3, 744, 372, 0, 3793, 3795, 3, 748, 374, 0, 3794, 3792, 1, 0, 0, 0, 3794, 3793, 1, 0, 0, 0, 3795, 3797, 1, 0, 0, 0, 3796, 3791, 1, 0, 0, 0, 3796, 3797, 1, 0, 0, 0, 3797, 741, 1, 0, 0, 0, 3798, 3799, 3, 0, 0, 0, 3799, 743, 1, 0, 0, 0, 3800, 3801, 3, 746, 373, 0, 3801, 745, 1, 0, 0, 0, 3802, 3804, 5, 4, 0, 0, 3803, 3805, 3, 496, 248, 0, 3804, 3803, 1, 0, 0, 0, 3804, 3805, 1, 0, 0, 0, 3805, 3807, 1, 0, 0, 0, 3806, 3802, 1, 0, 0, 0, 3806, 3807, 1, 0, 0, 0, 3807, 3808, 1, 0, 0, 0, 3808, 3812, 5, 214, 0, 0, 3809, 3811, 3, 658, 329, 0, 3810, 3809, 1, 0, 0, 0, 3811, 3814, 1, 0, 0, 0, 3812, 3810, 1, 0, 0, 0, 3812, 3813, 1, 0, 0, 0, 3813, 3815, 1, 0, 0, 0, 3814, 3812, 1, 0, 0, 0, 3815, 3816, 5, 216, 0, 0, 3816, 747, 1, 0, 0, 0, 3817, 3818, 3, 740, 370, 0, 3818, 749, 1, 0, 0, 0, 3819, 3824, 3, 684, 342, 0, 3820, 3821, 5, 172, 0, 0, 3821, 3825, 3, 742, 371, 0, 3822, 3823, 5, 96, 0, 0, 3823, 3825, 3, 726, 363, 0, 3824, 3820, 1, 0, 0, 0, 3824, 3822, 1, 0, 0, 0, 3825, 3826, 1, 0, 0, 0, 3826, 3831, 3, 744, 372, 0, 3827, 3828, 5, 161, 0, 0, 3828, 3829, 3, 742, 371, 0, 3829, 3830, 5, 205, 0, 0, 3830, 3832, 1, 0, 0, 0, 3831, 3827, 1, 0, 0, 0, 3831, 3832, 1, 0, 0, 0, 3832, 751, 1, 0, 0, 0, 3833, 3834, 3, 684, 342, 0, 3834, 3835, 5, 71, 0, 0, 3835, 3836, 3, 754, 377, 0, 3836, 3837, 5, 80, 0, 0, 3837, 3838, 3, 720, 360, 0, 3838, 3839, 3, 744, 372, 0, 3839, 753, 1, 0, 0, 0, 3840, 3842, 3, 496, 248, 0, 3841, 3840, 1, 0, 0, 0, 3841, 3842, 1, 0, 0, 0, 3842, 755, 1, 0, 0, 0, 3843, 3845, 3, 496, 248, 0, 3844, 3843, 1, 0, 0, 0, 3844, 3845, 1, 0, 0, 0, 3845, 757, 1, 0, 0, 0, 3846, 3850, 3, 760, 380, 0, 3847, 3850, 3, 762, 381, 0, 3848, 3850, 3, 764, 382, 0, 3849, 3846, 1, 0, 0, 0, 3849, 3847, 1, 0, 0, 0, 3849, 3848, 1, 0, 0, 0, 3850, 3851, 1, 0, 0, 0, 3851, 3852, 3, 500, 250, 0, 3852, 759, 1, 0, 0, 0, 3853, 3854, 3, 560, 280, 0, 3854, 3855, 5, 152, 0, 0, 3855, 3856, 3, 268, 134, 0, 3856, 761, 1, 0, 0, 0, 3857, 3858, 3, 810, 405, 0, 3858, 3859, 5, 152, 0, 0, 3859, 3860, 3, 824, 412, 0, 3860, 763, 1, 0, 0, 0, 3861, 3862, 5, 55, 0, 0, 3862, 3863, 3, 824, 412, 0, 3863, 765, 1, 0, 0, 0, 3864, 3866, 5, 150, 0, 0, 3865, 3867, 3, 496, 248, 0, 3866, 3865, 1, 0, 0, 0, 3866, 3867, 1, 0, 0, 0, 3867, 3869, 1, 0, 0, 0, 3868, 3864, 1, 0, 0, 0, 3868, 3869, 1, 0, 0, 0, 3869, 3870, 1, 0, 0, 0, 3870, 3871, 5, 69, 0, 0, 3871, 3872, 3, 340, 170, 0, 3872, 3873, 3, 810, 405, 0, 3873, 3874, 5, 152, 0, 0, 3874, 3875, 3, 824, 412, 0, 3875, 3876, 3, 500, 250, 0, 3876, 767, 1, 0, 0, 0, 3877, 3878, 3, 536, 268, 0, 3878, 3879, 5, 142, 0, 0, 3879, 3880, 5, 45, 0, 0, 3880, 3881, 3, 462, 231, 0, 3881, 3882, 3, 770, 385, 0, 3882, 769, 1, 0, 0, 0, 3883, 3896, 5, 205, 0, 0, 3884, 3886, 5, 116, 0, 0, 3885, 3884, 1, 0, 0, 0, 3885, 3886, 1, 0, 0, 0, 3886, 3887, 1, 0, 0, 0, 3887, 3891, 5, 214, 0, 0, 3888, 3890, 3, 772, 386, 0, 3889, 3888, 1, 0, 0, 0, 3890, 3893, 1, 0, 0, 0, 3891, 3889, 1, 0, 0, 0, 3891, 3892, 1, 0, 0, 0, 3892, 3894, 1, 0, 0, 0, 3893, 3891, 1, 0, 0, 0, 3894, 3896, 5, 216, 0, 0, 3895, 3883, 1, 0, 0, 0, 3895, 3885, 1, 0, 0, 0, 3896, 771, 1, 0, 0, 0, 3897, 3919, 3, 660, 330, 0, 3898, 3900, 3, 556, 278, 0, 3899, 3898, 1, 0, 0, 0, 3899, 3900, 1, 0, 0, 0, 3900, 3901, 1, 0, 0, 0, 3901, 3905, 3, 480, 240, 0, 3902, 3904, 3, 794, 397, 0, 3903, 3902, 1, 0, 0, 0, 3904, 3907, 1, 0, 0, 0, 3905, 3903, 1, 0, 0, 0, 3905, 3906, 1, 0, 0, 0, 3906, 3919, 1, 0, 0, 0, 3907, 3905, 1, 0, 0, 0, 3908, 3919, 3, 792, 396, 0, 3909, 3913, 3, 774, 387, 0, 3910, 3912, 3, 780, 390, 0, 3911, 3910, 1, 0, 0, 0, 3912, 3915, 1, 0, 0, 0, 3913, 3911, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3919, 1, 0, 0, 0, 3915, 3913, 1, 0, 0, 0, 3916, 3919, 3, 776, 388, 0, 3917, 3919, 3, 778, 389, 0, 3918, 3897, 1, 0, 0, 0, 3918, 3899, 1, 0, 0, 0, 3918, 3908, 1, 0, 0, 0, 3918, 3909, 1, 0, 0, 0, 3918, 3916, 1, 0, 0, 0, 3918, 3917, 1, 0, 0, 0, 3919, 773, 1, 0, 0, 0, 3920, 3921, 3, 78, 39, 0, 3921, 3922, 5, 57, 0, 0, 3922, 3923, 3, 782, 391, 0, 3923, 775, 1, 0, 0, 0, 3924, 3925, 3, 78, 39, 0, 3925, 3926, 5, 53, 0, 0, 3926, 3927, 3, 782, 391, 0, 3927, 777, 1, 0, 0, 0, 3928, 3929, 3, 78, 39, 0, 3929, 3930, 5, 61, 0, 0, 3930, 3931, 3, 782, 391, 0, 3931, 779, 1, 0, 0, 0, 3932, 3936, 3, 78, 39, 0, 3933, 3937, 3, 762, 381, 0, 3934, 3935, 5, 152, 0, 0, 3935, 3937, 3, 824, 412, 0, 3936, 3933, 1, 0, 0, 0, 3936, 3934, 1, 0, 0, 0, 3937, 3938, 1, 0, 0, 0, 3938, 3939, 5, 205, 0, 0, 3939, 781, 1, 0, 0, 0, 3940, 3941, 3, 976, 488, 0, 3941, 3942, 5, 205, 0, 0, 3942, 3948, 1, 0, 0, 0, 3943, 3948, 3, 784, 392, 0, 3944, 3948, 3, 786, 393, 0, 3945, 3948, 3, 788, 394, 0, 3946, 3948, 3, 790, 395, 0, 3947, 3940, 1, 0, 0, 0, 3947, 3943, 1, 0, 0, 0, 3947, 3944, 1, 0, 0, 0, 3947, 3945, 1, 0, 0, 0, 3947, 3946, 1, 0, 0, 0, 3948, 783, 1, 0, 0, 0, 3949, 3950, 3, 678, 339, 0, 3950, 3951, 3, 656, 328, 0, 3951, 785, 1, 0, 0, 0, 3952, 3953, 3, 700, 350, 0, 3953, 3954, 3, 656, 328, 0, 3954, 787, 1, 0, 0, 0, 3955, 3956, 3, 716, 358, 0, 3956, 3957, 3, 656, 328, 0, 3957, 789, 1, 0, 0, 0, 3958, 3959, 3, 730, 365, 0, 3959, 3960, 3, 656, 328, 0, 3960, 791, 1, 0, 0, 0, 3961, 3962, 3, 78, 39, 0, 3962, 3963, 3, 802, 401, 0, 3963, 793, 1, 0, 0, 0, 3964, 3965, 3, 78, 39, 0, 3965, 3966, 3, 804, 402, 0, 3966, 795, 1, 0, 0, 0, 3967, 3968, 3, 544, 272, 0, 3968, 3969, 5, 142, 0, 0, 3969, 3970, 3, 674, 337, 0, 3970, 3971, 3, 798, 399, 0, 3971, 797, 1, 0, 0, 0, 3972, 3985, 5, 205, 0, 0, 3973, 3975, 5, 116, 0, 0, 3974, 3973, 1, 0, 0, 0, 3974, 3975, 1, 0, 0, 0, 3975, 3976, 1, 0, 0, 0, 3976, 3980, 5, 214, 0, 0, 3977, 3979, 3, 772, 386, 0, 3978, 3977, 1, 0, 0, 0, 3979, 3982, 1, 0, 0, 0, 3980, 3978, 1, 0, 0, 0, 3980, 3981, 1, 0, 0, 0, 3981, 3983, 1, 0, 0, 0, 3982, 3980, 1, 0, 0, 0, 3983, 3985, 5, 216, 0, 0, 3984, 3972, 1, 0, 0, 0, 3984, 3974, 1, 0, 0, 0, 3985, 799, 1, 0, 0, 0, 3986, 3987, 3, 544, 272, 0, 3987, 3996, 5, 60, 0, 0, 3988, 3990, 3, 228, 114, 0, 3989, 3991, 3, 198, 99, 0, 3990, 3989, 1, 0, 0, 0, 3990, 3991, 1, 0, 0, 0, 3991, 3997, 1, 0, 0, 0, 3992, 3994, 5, 142, 0, 0, 3993, 3995, 3, 496, 248, 0, 3994, 3993, 1, 0, 0, 0, 3994, 3995, 1, 0, 0, 0, 3995, 3997, 1, 0, 0, 0, 3996, 3988, 1, 0, 0, 0, 3996, 3992, 1, 0, 0, 0, 3997, 3999, 1, 0, 0, 0, 3998, 4000, 3, 394, 197, 0, 3999, 3998, 1, 0, 0, 0, 3999, 4000, 1, 0, 0, 0, 4000, 4001, 1, 0, 0, 0, 4001, 4002, 3, 798, 399, 0, 4002, 801, 1, 0, 0, 0, 4003, 4008, 5, 155, 0, 0, 4004, 4006, 3, 496, 248, 0, 4005, 4004, 1, 0, 0, 0, 4005, 4006, 1, 0, 0, 0, 4006, 4007, 1, 0, 0, 0, 4007, 4009, 5, 69, 0, 0, 4008, 4005, 1, 0, 0, 0, 4008, 4009, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, 4011, 3, 340, 170, 0, 4011, 4015, 3, 726, 363, 0, 4012, 4013, 3, 726, 363, 0, 4013, 4014, 3, 806, 403, 0, 4014, 4016, 1, 0, 0, 0, 4015, 4012, 1, 0, 0, 0, 4015, 4016, 1, 0, 0, 0, 4016, 4018, 1, 0, 0, 0, 4017, 4019, 3, 810, 405, 0, 4018, 4017, 1, 0, 0, 0, 4018, 4019, 1, 0, 0, 0, 4019, 4021, 1, 0, 0, 0, 4020, 4022, 3, 812, 406, 0, 4021, 4020, 1, 0, 0, 0, 4021, 4022, 1, 0, 0, 0, 4022, 4023, 1, 0, 0, 0, 4023, 4024, 5, 152, 0, 0, 4024, 4025, 3, 824, 412, 0, 4025, 4026, 3, 656, 328, 0, 4026, 803, 1, 0, 0, 0, 4027, 4052, 3, 726, 363, 0, 4028, 4032, 5, 155, 0, 0, 4029, 4030, 3, 726, 363, 0, 4030, 4031, 3, 806, 403, 0, 4031, 4033, 1, 0, 0, 0, 4032, 4029, 1, 0, 0, 0, 4032, 4033, 1, 0, 0, 0, 4033, 4035, 1, 0, 0, 0, 4034, 4036, 3, 810, 405, 0, 4035, 4034, 1, 0, 0, 0, 4035, 4036, 1, 0, 0, 0, 4036, 4038, 1, 0, 0, 0, 4037, 4039, 3, 812, 406, 0, 4038, 4037, 1, 0, 0, 0, 4038, 4039, 1, 0, 0, 0, 4039, 4053, 1, 0, 0, 0, 4040, 4041, 3, 726, 363, 0, 4041, 4043, 3, 806, 403, 0, 4042, 4044, 3, 810, 405, 0, 4043, 4042, 1, 0, 0, 0, 4043, 4044, 1, 0, 0, 0, 4044, 4046, 1, 0, 0, 0, 4045, 4047, 3, 812, 406, 0, 4046, 4045, 1, 0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4053, 1, 0, 0, 0, 4048, 4050, 3, 810, 405, 0, 4049, 4051, 3, 812, 406, 0, 4050, 4049, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 4053, 1, 0, 0, 0, 4052, 4028, 1, 0, 0, 0, 4052, 4040, 1, 0, 0, 0, 4052, 4048, 1, 0, 0, 0, 4052, 4053, 1, 0, 0, 0, 4053, 4054, 1, 0, 0, 0, 4054, 4055, 5, 152, 0, 0, 4055, 4056, 3, 824, 412, 0, 4056, 4057, 3, 656, 328, 0, 4057, 805, 1, 0, 0, 0, 4058, 4059, 5, 3, 0, 0, 4059, 4060, 3, 808, 404, 0, 4060, 807, 1, 0, 0, 0, 4061, 4062, 3, 702, 351, 0, 4062, 809, 1, 0, 0, 0, 4063, 4064, 5, 77, 0, 0, 4064, 4065, 3, 0, 0, 0, 4065, 811, 1, 0, 0, 0, 4066, 4067, 5, 53, 0, 0, 4067, 4068, 3, 814, 407, 0, 4068, 813, 1, 0, 0, 0, 4069, 4075, 3, 976, 488, 0, 4070, 4075, 3, 816, 408, 0, 4071, 4075, 3, 818, 409, 0, 4072, 4075, 3, 820, 410, 0, 4073, 4075, 3, 822, 411, 0, 4074, 4069, 1, 0, 0, 0, 4074, 4070, 1, 0, 0, 0, 4074, 4071, 1, 0, 0, 0, 4074, 4072, 1, 0, 0, 0, 4074, 4073, 1, 0, 0, 0, 4075, 815, 1, 0, 0, 0, 4076, 4085, 3, 678, 339, 0, 4077, 4081, 5, 214, 0, 0, 4078, 4080, 3, 658, 329, 0, 4079, 4078, 1, 0, 0, 0, 4080, 4083, 1, 0, 0, 0, 4081, 4079, 1, 0, 0, 0, 4081, 4082, 1, 0, 0, 0, 4082, 4084, 1, 0, 0, 0, 4083, 4081, 1, 0, 0, 0, 4084, 4086, 5, 216, 0, 0, 4085, 4077, 1, 0, 0, 0, 4085, 4086, 1, 0, 0, 0, 4086, 817, 1, 0, 0, 0, 4087, 4096, 3, 700, 350, 0, 4088, 4092, 5, 214, 0, 0, 4089, 4091, 3, 658, 329, 0, 4090, 4089, 1, 0, 0, 0, 4091, 4094, 1, 0, 0, 0, 4092, 4090, 1, 0, 0, 0, 4092, 4093, 1, 0, 0, 0, 4093, 4095, 1, 0, 0, 0, 4094, 4092, 1, 0, 0, 0, 4095, 4097, 5, 216, 0, 0, 4096, 4088, 1, 0, 0, 0, 4096, 4097, 1, 0, 0, 0, 4097, 819, 1, 0, 0, 0, 4098, 4107, 3, 716, 358, 0, 4099, 4103, 5, 214, 0, 0, 4100, 4102, 3, 658, 329, 0, 4101, 4100, 1, 0, 0, 0, 4102, 4105, 1, 0, 0, 0, 4103, 4101, 1, 0, 0, 0, 4103, 4104, 1, 0, 0, 0, 4104, 4106, 1, 0, 0, 0, 4105, 4103, 1, 0, 0, 0, 4106, 4108, 5, 216, 0, 0, 4107, 4099, 1, 0, 0, 0, 4107, 4108, 1, 0, 0, 0, 4108, 821, 1, 0, 0, 0, 4109, 4118, 3, 730, 365, 0, 4110, 4114, 5, 214, 0, 0, 4111, 4113, 3, 658, 329, 0, 4112, 4111, 1, 0, 0, 0, 4113, 4116, 1, 0, 0, 0, 4114, 4112, 1, 0, 0, 0, 4114, 4115, 1, 0, 0, 0, 4115, 4117, 1, 0, 0, 0, 4116, 4114, 1, 0, 0, 0, 4117, 4119, 5, 216, 0, 0, 4118, 4110, 1, 0, 0, 0, 4118, 4119, 1, 0, 0, 0, 4119, 823, 1, 0, 0, 0, 4120, 4121, 3, 826, 413, 0, 4121, 825, 1, 0, 0, 0, 4122, 4123, 3, 828, 414, 0, 4123, 4124, 3, 268, 134, 0, 4124, 827, 1, 0, 0, 0, 4125, 4126, 3, 978, 489, 0, 4126, 829, 1, 0, 0, 0, 4127, 4128, 3, 536, 268, 0, 4128, 4129, 5, 25, 0, 0, 4129, 4130, 5, 45, 0, 0, 4130, 4131, 3, 462, 231, 0, 4131, 4132, 3, 834, 417, 0, 4132, 831, 1, 0, 0, 0, 4133, 4134, 3, 544, 272, 0, 4134, 4135, 5, 25, 0, 0, 4135, 4136, 3, 674, 337, 0, 4136, 4137, 3, 834, 417, 0, 4137, 833, 1, 0, 0, 0, 4138, 4144, 5, 205, 0, 0, 4139, 4140, 5, 214, 0, 0, 4140, 4141, 3, 836, 418, 0, 4141, 4142, 5, 216, 0, 0, 4142, 4144, 1, 0, 0, 0, 4143, 4138, 1, 0, 0, 0, 4143, 4139, 1, 0, 0, 0, 4144, 835, 1, 0, 0, 0, 4145, 4147, 3, 838, 419, 0, 4146, 4145, 1, 0, 0, 0, 4147, 4150, 1, 0, 0, 0, 4148, 4146, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4152, 1, 0, 0, 0, 4150, 4148, 1, 0, 0, 0, 4151, 4153, 3, 296, 148, 0, 4152, 4151, 1, 0, 0, 0, 4152, 4153, 1, 0, 0, 0, 4153, 837, 1, 0, 0, 0, 4154, 4157, 3, 658, 329, 0, 4155, 4157, 3, 840, 420, 0, 4156, 4154, 1, 0, 0, 0, 4156, 4155, 1, 0, 0, 0, 4157, 839, 1, 0, 0, 0, 4158, 4159, 3, 78, 39, 0, 4159, 4160, 5, 134, 0, 0, 4160, 4161, 3, 452, 226, 0, 4161, 841, 1, 0, 0, 0, 4162, 4163, 3, 536, 268, 0, 4163, 4164, 5, 41, 0, 0, 4164, 4165, 5, 45, 0, 0, 4165, 4166, 3, 462, 231, 0, 4166, 4167, 3, 834, 417, 0, 4167, 843, 1, 0, 0, 0, 4168, 4169, 3, 544, 272, 0, 4169, 4170, 5, 41, 0, 0, 4170, 4171, 3, 848, 424, 0, 4171, 4172, 3, 834, 417, 0, 4172, 845, 1, 0, 0, 0, 4173, 4174, 3, 544, 272, 0, 4174, 4176, 5, 14, 0, 0, 4175, 4177, 5, 107, 0, 0, 4176, 4175, 1, 0, 0, 0, 4176, 4177, 1, 0, 0, 0, 4177, 4184, 1, 0, 0, 0, 4178, 4180, 3, 228, 114, 0, 4179, 4181, 3, 198, 99, 0, 4180, 4179, 1, 0, 0, 0, 4180, 4181, 1, 0, 0, 0, 4181, 4185, 1, 0, 0, 0, 4182, 4183, 5, 41, 0, 0, 4183, 4185, 3, 848, 424, 0, 4184, 4178, 1, 0, 0, 0, 4184, 4182, 1, 0, 0, 0, 4185, 4186, 1, 0, 0, 0, 4186, 4187, 3, 834, 417, 0, 4187, 847, 1, 0, 0, 0, 4188, 4190, 3, 496, 248, 0, 4189, 4188, 1, 0, 0, 0, 4189, 4190, 1, 0, 0, 0, 4190, 4192, 1, 0, 0, 0, 4191, 4193, 3, 394, 197, 0, 4192, 4191, 1, 0, 0, 0, 4192, 4193, 1, 0, 0, 0, 4193, 849, 1, 0, 0, 0, 4194, 4195, 3, 536, 268, 0, 4195, 4196, 5, 133, 0, 0, 4196, 4197, 5, 45, 0, 0, 4197, 4198, 3, 462, 231, 0, 4198, 4199, 3, 852, 426, 0, 4199, 851, 1, 0, 0, 0, 4200, 4210, 5, 205, 0, 0, 4201, 4205, 5, 214, 0, 0, 4202, 4204, 3, 854, 427, 0, 4203, 4202, 1, 0, 0, 0, 4204, 4207, 1, 0, 0, 0, 4205, 4203, 1, 0, 0, 0, 4205, 4206, 1, 0, 0, 0, 4206, 4208, 1, 0, 0, 0, 4207, 4205, 1, 0, 0, 0, 4208, 4210, 5, 216, 0, 0, 4209, 4200, 1, 0, 0, 0, 4209, 4201, 1, 0, 0, 0, 4210, 853, 1, 0, 0, 0, 4211, 4219, 3, 466, 233, 0, 4212, 4219, 3, 856, 428, 0, 4213, 4219, 3, 860, 430, 0, 4214, 4219, 3, 866, 433, 0, 4215, 4219, 3, 914, 457, 0, 4216, 4219, 3, 870, 435, 0, 4217, 4219, 3, 874, 437, 0, 4218, 4211, 1, 0, 0, 0, 4218, 4212, 1, 0, 0, 0, 4218, 4213, 1, 0, 0, 0, 4218, 4214, 1, 0, 0, 0, 4218, 4215, 1, 0, 0, 0, 4218, 4216, 1, 0, 0, 0, 4218, 4217, 1, 0, 0, 0, 4219, 855, 1, 0, 0, 0, 4220, 4221, 3, 78, 39, 0, 4221, 4222, 3, 858, 429, 0, 4222, 857, 1, 0, 0, 0, 4223, 4227, 5, 146, 0, 0, 4224, 4226, 3, 488, 244, 0, 4225, 4224, 1, 0, 0, 0, 4226, 4229, 1, 0, 0, 0, 4227, 4225, 1, 0, 0, 0, 4227, 4228, 1, 0, 0, 0, 4228, 4230, 1, 0, 0, 0, 4229, 4227, 1, 0, 0, 0, 4230, 4231, 3, 494, 247, 0, 4231, 859, 1, 0, 0, 0, 4232, 4233, 3, 78, 39, 0, 4233, 4234, 3, 862, 431, 0, 4234, 4235, 3, 864, 432, 0, 4235, 861, 1, 0, 0, 0, 4236, 4237, 7, 26, 0, 0, 4237, 863, 1, 0, 0, 0, 4238, 4240, 3, 228, 114, 0, 4239, 4241, 3, 198, 99, 0, 4240, 4239, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4242, 1, 0, 0, 0, 4242, 4243, 3, 852, 426, 0, 4243, 4262, 1, 0, 0, 0, 4244, 4246, 3, 488, 244, 0, 4245, 4244, 1, 0, 0, 0, 4246, 4249, 1, 0, 0, 0, 4247, 4245, 1, 0, 0, 0, 4247, 4248, 1, 0, 0, 0, 4248, 4250, 1, 0, 0, 0, 4249, 4247, 1, 0, 0, 0, 4250, 4257, 5, 41, 0, 0, 4251, 4253, 3, 488, 244, 0, 4252, 4251, 1, 0, 0, 0, 4253, 4254, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4254, 4255, 1, 0, 0, 0, 4255, 4257, 1, 0, 0, 0, 4256, 4247, 1, 0, 0, 0, 4256, 4252, 1, 0, 0, 0, 4257, 4258, 1, 0, 0, 0, 4258, 4259, 3, 848, 424, 0, 4259, 4260, 3, 834, 417, 0, 4260, 4262, 1, 0, 0, 0, 4261, 4238, 1, 0, 0, 0, 4261, 4256, 1, 0, 0, 0, 4262, 865, 1, 0, 0, 0, 4263, 4264, 3, 78, 39, 0, 4264, 4265, 5, 73, 0, 0, 4265, 4266, 3, 868, 434, 0, 4266, 867, 1, 0, 0, 0, 4267, 4269, 3, 228, 114, 0, 4268, 4270, 3, 198, 99, 0, 4269, 4268, 1, 0, 0, 0, 4269, 4270, 1, 0, 0, 0, 4270, 4271, 1, 0, 0, 0, 4271, 4272, 3, 834, 417, 0, 4272, 4291, 1, 0, 0, 0, 4273, 4275, 3, 488, 244, 0, 4274, 4273, 1, 0, 0, 0, 4275, 4278, 1, 0, 0, 0, 4276, 4274, 1, 0, 0, 0, 4276, 4277, 1, 0, 0, 0, 4277, 4279, 1, 0, 0, 0, 4278, 4276, 1, 0, 0, 0, 4279, 4286, 5, 32, 0, 0, 4280, 4282, 3, 488, 244, 0, 4281, 4280, 1, 0, 0, 0, 4282, 4283, 1, 0, 0, 0, 4283, 4281, 1, 0, 0, 0, 4283, 4284, 1, 0, 0, 0, 4284, 4286, 1, 0, 0, 0, 4285, 4276, 1, 0, 0, 0, 4285, 4281, 1, 0, 0, 0, 4286, 4287, 1, 0, 0, 0, 4287, 4288, 3, 974, 487, 0, 4288, 4289, 3, 834, 417, 0, 4289, 4291, 1, 0, 0, 0, 4290, 4267, 1, 0, 0, 0, 4290, 4285, 1, 0, 0, 0, 4291, 869, 1, 0, 0, 0, 4292, 4293, 3, 78, 39, 0, 4293, 4294, 3, 872, 436, 0, 4294, 871, 1, 0, 0, 0, 4295, 4299, 5, 5, 0, 0, 4296, 4298, 3, 488, 244, 0, 4297, 4296, 1, 0, 0, 0, 4298, 4301, 1, 0, 0, 0, 4299, 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4302, 1, 0, 0, 0, 4301, 4299, 1, 0, 0, 0, 4302, 4303, 3, 494, 247, 0, 4303, 873, 1, 0, 0, 0, 4304, 4305, 3, 78, 39, 0, 4305, 4306, 3, 876, 438, 0, 4306, 875, 1, 0, 0, 0, 4307, 4311, 5, 140, 0, 0, 4308, 4310, 3, 488, 244, 0, 4309, 4308, 1, 0, 0, 0, 4310, 4313, 1, 0, 0, 0, 4311, 4309, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4314, 1, 0, 0, 0, 4313, 4311, 1, 0, 0, 0, 4314, 4315, 3, 494, 247, 0, 4315, 877, 1, 0, 0, 0, 4316, 4317, 3, 544, 272, 0, 4317, 4318, 5, 133, 0, 0, 4318, 4319, 3, 848, 424, 0, 4319, 4320, 3, 852, 426, 0, 4320, 879, 1, 0, 0, 0, 4321, 4326, 3, 544, 272, 0, 4322, 4324, 5, 14, 0, 0, 4323, 4325, 5, 107, 0, 0, 4324, 4323, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 4327, 1, 0, 0, 0, 4326, 4322, 1, 0, 0, 0, 4326, 4327, 1, 0, 0, 0, 4327, 4328, 1, 0, 0, 0, 4328, 4337, 5, 135, 0, 0, 4329, 4331, 3, 228, 114, 0, 4330, 4332, 3, 198, 99, 0, 4331, 4330, 1, 0, 0, 0, 4331, 4332, 1, 0, 0, 0, 4332, 4338, 1, 0, 0, 0, 4333, 4335, 5, 133, 0, 0, 4334, 4336, 3, 496, 248, 0, 4335, 4334, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4338, 1, 0, 0, 0, 4337, 4329, 1, 0, 0, 0, 4337, 4333, 1, 0, 0, 0, 4338, 4340, 1, 0, 0, 0, 4339, 4341, 3, 394, 197, 0, 4340, 4339, 1, 0, 0, 0, 4340, 4341, 1, 0, 0, 0, 4341, 4344, 1, 0, 0, 0, 4342, 4343, 5, 24, 0, 0, 4343, 4345, 3, 882, 441, 0, 4344, 4342, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 4346, 1, 0, 0, 0, 4346, 4347, 3, 852, 426, 0, 4347, 881, 1, 0, 0, 0, 4348, 4349, 3, 884, 442, 0, 4349, 883, 1, 0, 0, 0, 4350, 4351, 3, 886, 443, 0, 4351, 885, 1, 0, 0, 0, 4352, 4353, 3, 888, 444, 0, 4353, 887, 1, 0, 0, 0, 4354, 4355, 3, 340, 170, 0, 4355, 889, 1, 0, 0, 0, 4356, 4357, 3, 536, 268, 0, 4357, 4358, 5, 32, 0, 0, 4358, 4359, 5, 45, 0, 0, 4359, 4360, 3, 462, 231, 0, 4360, 4361, 3, 852, 426, 0, 4361, 891, 1, 0, 0, 0, 4362, 4363, 3, 544, 272, 0, 4363, 4364, 5, 32, 0, 0, 4364, 4365, 3, 848, 424, 0, 4365, 4366, 3, 852, 426, 0, 4366, 893, 1, 0, 0, 0, 4367, 4368, 3, 536, 268, 0, 4368, 4369, 5, 26, 0, 0, 4369, 4370, 5, 45, 0, 0, 4370, 4371, 3, 462, 231, 0, 4371, 4372, 3, 898, 449, 0, 4372, 895, 1, 0, 0, 0, 4373, 4374, 3, 544, 272, 0, 4374, 4375, 5, 26, 0, 0, 4375, 4376, 3, 848, 424, 0, 4376, 4377, 3, 898, 449, 0, 4377, 897, 1, 0, 0, 0, 4378, 4391, 5, 205, 0, 0, 4379, 4383, 5, 214, 0, 0, 4380, 4382, 3, 900, 450, 0, 4381, 4380, 1, 0, 0, 0, 4382, 4385, 1, 0, 0, 0, 4383, 4381, 1, 0, 0, 0, 4383, 4384, 1, 0, 0, 0, 4384, 4387, 1, 0, 0, 0, 4385, 4383, 1, 0, 0, 0, 4386, 4388, 3, 296, 148, 0, 4387, 4386, 1, 0, 0, 0, 4387, 4388, 1, 0, 0, 0, 4388, 4389, 1, 0, 0, 0, 4389, 4391, 5, 216, 0, 0, 4390, 4378, 1, 0, 0, 0, 4390, 4379, 1, 0, 0, 0, 4391, 899, 1, 0, 0, 0, 4392, 4398, 3, 658, 329, 0, 4393, 4398, 3, 840, 420, 0, 4394, 4398, 3, 856, 428, 0, 4395, 4398, 3, 870, 435, 0, 4396, 4398, 3, 902, 451, 0, 4397, 4392, 1, 0, 0, 0, 4397, 4393, 1, 0, 0, 0, 4397, 4394, 1, 0, 0, 0, 4397, 4395, 1, 0, 0, 0, 4397, 4396, 1, 0, 0, 0, 4398, 901, 1, 0, 0, 0, 4399, 4400, 3, 78, 39, 0, 4400, 4401, 5, 109, 0, 0, 4401, 4402, 3, 904, 452, 0, 4402, 903, 1, 0, 0, 0, 4403, 4405, 3, 488, 244, 0, 4404, 4403, 1, 0, 0, 0, 4405, 4408, 1, 0, 0, 0, 4406, 4404, 1, 0, 0, 0, 4406, 4407, 1, 0, 0, 0, 4407, 4409, 1, 0, 0, 0, 4408, 4406, 1, 0, 0, 0, 4409, 4410, 3, 848, 424, 0, 4410, 4411, 3, 852, 426, 0, 4411, 905, 1, 0, 0, 0, 4412, 4413, 3, 536, 268, 0, 4413, 4414, 5, 11, 0, 0, 4414, 4415, 5, 45, 0, 0, 4415, 4416, 3, 462, 231, 0, 4416, 4417, 3, 898, 449, 0, 4417, 907, 1, 0, 0, 0, 4418, 4419, 3, 544, 272, 0, 4419, 4420, 5, 11, 0, 0, 4420, 4421, 3, 848, 424, 0, 4421, 4422, 3, 898, 449, 0, 4422, 909, 1, 0, 0, 0, 4423, 4424, 3, 536, 268, 0, 4424, 4425, 5, 166, 0, 0, 4425, 4426, 5, 45, 0, 0, 4426, 4427, 3, 462, 231, 0, 4427, 4428, 3, 898, 449, 0, 4428, 911, 1, 0, 0, 0, 4429, 4430, 3, 544, 272, 0, 4430, 4431, 5, 166, 0, 0, 4431, 4432, 3, 848, 424, 0, 4432, 4433, 3, 898, 449, 0, 4433, 913, 1, 0, 0, 0, 4434, 4435, 3, 78, 39, 0, 4435, 4436, 5, 167, 0, 0, 4436, 4437, 3, 916, 458, 0, 4437, 915, 1, 0, 0, 0, 4438, 4442, 3, 228, 114, 0, 4439, 4441, 3, 202, 101, 0, 4440, 4439, 1, 0, 0, 0, 4441, 4444, 1, 0, 0, 0, 4442, 4440, 1, 0, 0, 0, 4442, 4443, 1, 0, 0, 0, 4443, 4445, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4445, 4446, 3, 852, 426, 0, 4446, 4465, 1, 0, 0, 0, 4447, 4449, 3, 488, 244, 0, 4448, 4447, 1, 0, 0, 0, 4449, 4452, 1, 0, 0, 0, 4450, 4448, 1, 0, 0, 0, 4450, 4451, 1, 0, 0, 0, 4451, 4453, 1, 0, 0, 0, 4452, 4450, 1, 0, 0, 0, 4453, 4460, 5, 133, 0, 0, 4454, 4456, 3, 488, 244, 0, 4455, 4454, 1, 0, 0, 0, 4456, 4457, 1, 0, 0, 0, 4457, 4455, 1, 0, 0, 0, 4457, 4458, 1, 0, 0, 0, 4458, 4460, 1, 0, 0, 0, 4459, 4450, 1, 0, 0, 0, 4459, 4455, 1, 0, 0, 0, 4460, 4461, 1, 0, 0, 0, 4461, 4462, 3, 848, 424, 0, 4462, 4463, 3, 852, 426, 0, 4463, 4465, 1, 0, 0, 0, 4464, 4438, 1, 0, 0, 0, 4464, 4459, 1, 0, 0, 0, 4465, 917, 1, 0, 0, 0, 4466, 4467, 3, 536, 268, 0, 4467, 4468, 5, 162, 0, 0, 4468, 4469, 5, 26, 0, 0, 4469, 4470, 5, 45, 0, 0, 4470, 4471, 3, 462, 231, 0, 4471, 4472, 3, 898, 449, 0, 4472, 919, 1, 0, 0, 0, 4473, 4474, 3, 544, 272, 0, 4474, 4475, 5, 162, 0, 0, 4475, 4476, 5, 26, 0, 0, 4476, 4477, 3, 848, 424, 0, 4477, 4478, 3, 898, 449, 0, 4478, 921, 1, 0, 0, 0, 4479, 4480, 3, 544, 272, 0, 4480, 4490, 5, 81, 0, 0, 4481, 4483, 3, 228, 114, 0, 4482, 4484, 3, 198, 99, 0, 4483, 4482, 1, 0, 0, 0, 4483, 4484, 1, 0, 0, 0, 4484, 4491, 1, 0, 0, 0, 4485, 4486, 5, 162, 0, 0, 4486, 4488, 5, 26, 0, 0, 4487, 4489, 3, 496, 248, 0, 4488, 4487, 1, 0, 0, 0, 4488, 4489, 1, 0, 0, 0, 4489, 4491, 1, 0, 0, 0, 4490, 4481, 1, 0, 0, 0, 4490, 4485, 1, 0, 0, 0, 4491, 4493, 1, 0, 0, 0, 4492, 4494, 3, 394, 197, 0, 4493, 4492, 1, 0, 0, 0, 4493, 4494, 1, 0, 0, 0, 4494, 4495, 1, 0, 0, 0, 4495, 4496, 3, 898, 449, 0, 4496, 923, 1, 0, 0, 0, 4497, 4498, 3, 536, 268, 0, 4498, 4499, 5, 169, 0, 0, 4499, 4500, 5, 45, 0, 0, 4500, 4501, 3, 462, 231, 0, 4501, 4502, 3, 926, 463, 0, 4502, 925, 1, 0, 0, 0, 4503, 4513, 5, 205, 0, 0, 4504, 4508, 5, 214, 0, 0, 4505, 4507, 3, 928, 464, 0, 4506, 4505, 1, 0, 0, 0, 4507, 4510, 1, 0, 0, 0, 4508, 4506, 1, 0, 0, 0, 4508, 4509, 1, 0, 0, 0, 4509, 4511, 1, 0, 0, 0, 4510, 4508, 1, 0, 0, 0, 4511, 4513, 5, 216, 0, 0, 4512, 4503, 1, 0, 0, 0, 4512, 4504, 1, 0, 0, 0, 4513, 927, 1, 0, 0, 0, 4514, 4518, 3, 466, 233, 0, 4515, 4518, 3, 440, 220, 0, 4516, 4518, 3, 930, 465, 0, 4517, 4514, 1, 0, 0, 0, 4517, 4515, 1, 0, 0, 0, 4517, 4516, 1, 0, 0, 0, 4518, 929, 1, 0, 0, 0, 4519, 4520, 3, 78, 39, 0, 4520, 4521, 5, 129, 0, 0, 4521, 4522, 3, 932, 466, 0, 4522, 931, 1, 0, 0, 0, 4523, 4525, 3, 228, 114, 0, 4524, 4526, 3, 198, 99, 0, 4525, 4524, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 4527, 1, 0, 0, 0, 4527, 4528, 3, 500, 250, 0, 4528, 4545, 1, 0, 0, 0, 4529, 4531, 3, 488, 244, 0, 4530, 4529, 1, 0, 0, 0, 4531, 4534, 1, 0, 0, 0, 4532, 4530, 1, 0, 0, 0, 4532, 4533, 1, 0, 0, 0, 4533, 4535, 1, 0, 0, 0, 4534, 4532, 1, 0, 0, 0, 4535, 4542, 5, 130, 0, 0, 4536, 4538, 3, 488, 244, 0, 4537, 4536, 1, 0, 0, 0, 4538, 4539, 1, 0, 0, 0, 4539, 4537, 1, 0, 0, 0, 4539, 4540, 1, 0, 0, 0, 4540, 4542, 1, 0, 0, 0, 4541, 4532, 1, 0, 0, 0, 4541, 4537, 1, 0, 0, 0, 4542, 4543, 1, 0, 0, 0, 4543, 4545, 3, 494, 247, 0, 4544, 4523, 1, 0, 0, 0, 4544, 4541, 1, 0, 0, 0, 4545, 933, 1, 0, 0, 0, 4546, 4547, 3, 544, 272, 0, 4547, 4549, 5, 169, 0, 0, 4548, 4550, 3, 496, 248, 0, 4549, 4548, 1, 0, 0, 0, 4549, 4550, 1, 0, 0, 0, 4550, 4552, 1, 0, 0, 0, 4551, 4553, 3, 394, 197, 0, 4552, 4551, 1, 0, 0, 0, 4552, 4553, 1, 0, 0, 0, 4553, 4554, 1, 0, 0, 0, 4554, 4555, 3, 936, 468, 0, 4555, 935, 1, 0, 0, 0, 4556, 4566, 5, 205, 0, 0, 4557, 4561, 5, 214, 0, 0, 4558, 4560, 3, 938, 469, 0, 4559, 4558, 1, 0, 0, 0, 4560, 4563, 1, 0, 0, 0, 4561, 4559, 1, 0, 0, 0, 4561, 4562, 1, 0, 0, 0, 4562, 4564, 1, 0, 0, 0, 4563, 4561, 1, 0, 0, 0, 4564, 4566, 5, 216, 0, 0, 4565, 4556, 1, 0, 0, 0, 4565, 4557, 1, 0, 0, 0, 4566, 937, 1, 0, 0, 0, 4567, 4572, 3, 466, 233, 0, 4568, 4572, 3, 440, 220, 0, 4569, 4572, 3, 930, 465, 0, 4570, 4572, 3, 940, 470, 0, 4571, 4567, 1, 0, 0, 0, 4571, 4568, 1, 0, 0, 0, 4571, 4569, 1, 0, 0, 0, 4571, 4570, 1, 0, 0, 0, 4572, 939, 1, 0, 0, 0, 4573, 4576, 5, 62, 0, 0, 4574, 4577, 3, 942, 471, 0, 4575, 4577, 3, 944, 472, 0, 4576, 4574, 1, 0, 0, 0, 4576, 4575, 1, 0, 0, 0, 4577, 4578, 1, 0, 0, 0, 4578, 4579, 3, 48, 24, 0, 4579, 941, 1, 0, 0, 0, 4580, 4581, 3, 96, 48, 0, 4581, 943, 1, 0, 0, 0, 4582, 4583, 3, 98, 49, 0, 4583, 945, 1, 0, 0, 0, 4584, 4585, 3, 536, 268, 0, 4585, 4586, 5, 170, 0, 0, 4586, 4587, 5, 45, 0, 0, 4587, 4588, 3, 462, 231, 0, 4588, 4589, 3, 852, 426, 0, 4589, 947, 1, 0, 0, 0, 4590, 4591, 3, 544, 272, 0, 4591, 4592, 5, 170, 0, 0, 4592, 4593, 3, 848, 424, 0, 4593, 4594, 3, 852, 426, 0, 4594, 949, 1, 0, 0, 0, 4595, 4596, 3, 536, 268, 0, 4596, 4597, 5, 130, 0, 0, 4597, 4598, 5, 45, 0, 0, 4598, 4599, 3, 460, 230, 0, 4599, 951, 1, 0, 0, 0, 4600, 4601, 3, 544, 272, 0, 4601, 4602, 5, 130, 0, 0, 4602, 4603, 3, 494, 247, 0, 4603, 953, 1, 0, 0, 0, 4604, 4606, 5, 2, 0, 0, 4605, 4604, 1, 0, 0, 0, 4605, 4606, 1, 0, 0, 0, 4606, 4610, 1, 0, 0, 0, 4607, 4609, 3, 456, 228, 0, 4608, 4607, 1, 0, 0, 0, 4609, 4612, 1, 0, 0, 0, 4610, 4608, 1, 0, 0, 0, 4610, 4611, 1, 0, 0, 0, 4611, 4613, 1, 0, 0, 0, 4612, 4610, 1, 0, 0, 0, 4613, 4614, 5, 102, 0, 0, 4614, 4615, 5, 45, 0, 0, 4615, 4616, 3, 460, 230, 0, 4616, 955, 1, 0, 0, 0, 4617, 4618, 3, 222, 111, 0, 4618, 957, 1, 0, 0, 0, 4619, 4621, 3, 488, 244, 0, 4620, 4619, 1, 0, 0, 0, 4621, 4624, 1, 0, 0, 0, 4622, 4620, 1, 0, 0, 0, 4622, 4623, 1, 0, 0, 0, 4623, 4625, 1, 0, 0, 0, 4624, 4622, 1, 0, 0, 0, 4625, 4626, 7, 22, 0, 0, 4626, 4636, 3, 960, 480, 0, 4627, 4628, 5, 1, 0, 0, 4628, 4633, 3, 56, 28, 0, 4629, 4630, 5, 200, 0, 0, 4630, 4632, 3, 56, 28, 0, 4631, 4629, 1, 0, 0, 0, 4632, 4635, 1, 0, 0, 0, 4633, 4631, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, 4634, 4637, 1, 0, 0, 0, 4635, 4633, 1, 0, 0, 0, 4636, 4627, 1, 0, 0, 0, 4636, 4637, 1, 0, 0, 0, 4637, 4638, 1, 0, 0, 0, 4638, 4639, 3, 424, 212, 0, 4639, 959, 1, 0, 0, 0, 4640, 4642, 3, 46, 23, 0, 4641, 4640, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4646, 1, 0, 0, 0, 4643, 4647, 5, 204, 0, 0, 4644, 4645, 5, 158, 0, 0, 4645, 4647, 5, 24, 0, 0, 4646, 4643, 1, 0, 0, 0, 4646, 4644, 1, 0, 0, 0, 4647, 4649, 1, 0, 0, 0, 4648, 4641, 1, 0, 0, 0, 4648, 4649, 1, 0, 0, 0, 4649, 4650, 1, 0, 0, 0, 4650, 4651, 3, 222, 111, 0, 4651, 961, 1, 0, 0, 0, 4652, 4653, 3, 964, 482, 0, 4653, 963, 1, 0, 0, 0, 4654, 4656, 5, 127, 0, 0, 4655, 4654, 1, 0, 0, 0, 4655, 4656, 1, 0, 0, 0, 4656, 4658, 1, 0, 0, 0, 4657, 4659, 7, 19, 0, 0, 4658, 4657, 1, 0, 0, 0, 4658, 4659, 1, 0, 0, 0, 4659, 4660, 1, 0, 0, 0, 4660, 4662, 3, 234, 117, 0, 4661, 4663, 3, 198, 99, 0, 4662, 4661, 1, 0, 0, 0, 4662, 4663, 1, 0, 0, 0, 4663, 4665, 1, 0, 0, 0, 4664, 4666, 3, 394, 197, 0, 4665, 4664, 1, 0, 0, 0, 4665, 4666, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 4668, 3, 424, 212, 0, 4668, 965, 1, 0, 0, 0, 4669, 4671, 3, 454, 227, 0, 4670, 4669, 1, 0, 0, 0, 4670, 4671, 1, 0, 0, 0, 4671, 4673, 1, 0, 0, 0, 4672, 4674, 3, 456, 228, 0, 4673, 4672, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 4673, 1, 0, 0, 0, 4675, 4676, 1, 0, 0, 0, 4676, 4677, 1, 0, 0, 0, 4677, 4678, 5, 45, 0, 0, 4678, 4679, 3, 460, 230, 0, 4679, 967, 1, 0, 0, 0, 4680, 4682, 3, 490, 245, 0, 4681, 4683, 3, 488, 244, 0, 4682, 4681, 1, 0, 0, 0, 4683, 4684, 1, 0, 0, 0, 4684, 4682, 1, 0, 0, 0, 4684, 4685, 1, 0, 0, 0, 4685, 4686, 1, 0, 0, 0, 4686, 4687, 3, 494, 247, 0, 4687, 969, 1, 0, 0, 0, 4688, 4691, 3, 96, 48, 0, 4689, 4691, 3, 972, 486, 0, 4690, 4688, 1, 0, 0, 0, 4690, 4689, 1, 0, 0, 0, 4691, 971, 1, 0, 0, 0, 4692, 4693, 3, 90, 45, 0, 4693, 4694, 5, 183, 0, 0, 4694, 4697, 5, 198, 0, 0, 4695, 4696, 5, 183, 0, 0, 4696, 4698, 5, 179, 0, 0, 4697, 4695, 1, 0, 0, 0, 4697, 4698, 1, 0, 0, 0, 4698, 973, 1, 0, 0, 0, 4699, 4701, 3, 496, 248, 0, 4700, 4699, 1, 0, 0, 0, 4700, 4701, 1, 0, 0, 0, 4701, 4703, 1, 0, 0, 0, 4702, 4704, 3, 394, 197, 0, 4703, 4702, 1, 0, 0, 0, 4703, 4704, 1, 0, 0, 0, 4704, 975, 1, 0, 0, 0, 4705, 4706, 1, 0, 0, 0, 4706, 977, 1, 0, 0, 0, 4707, 4708, 1, 0, 0, 0, 4708, 979, 1, 0, 0, 0, 4709, 4710, 1, 0, 0, 0, 4710, 981, 1, 0, 0, 0, 4711, 4712, 1, 0, 0, 0, 4712, 983, 1, 0, 0, 0, 4713, 4714, 5, 218, 0, 0, 4714, 985, 1, 0, 0, 0, 4715, 4716, 5, 218, 0, 0, 4716, 987, 1, 0, 0, 0, 4717, 4718, 1, 0, 0, 0, 4718, 989, 1, 0, 0, 0, 518, 1005, 1061, 1068, 1084, 1086, 1088, 1098, 1107, 1113, 1116, 1121, 1143, 1152, 1160, 1172, 1200, 1207, 1215, 1219, 1223, 1227, 1232, 1237, 1240, 1247, 1256, 1264, 1271, 1281, 1285, 1293, 1296, 1298, 1302, 1308, 1312, 1318, 1320, 1329, 1337, 1345, 1352, 1356, 1361, 1364, 1370, 1384, 1387, 1395, 1402, 1408, 1412, 1419, 1424, 1431, 1434, 1440, 1446, 1448, 1456, 1484, 1496, 1504, 1509, 1513, 1516, 1519, 1523, 1525, 1530, 1539, 1549, 1558, 1567, 1576, 1585, 1593, 1597, 1603, 1607, 1609, 1624, 1632, 1637, 1639, 1647, 1656, 1666, 1671, 1673, 1681, 1690, 1700, 1708, 1716, 1724, 1729, 1744, 1747, 1750, 1754, 1759, 1768, 1773, 1775, 1788, 1791, 1795, 1799, 1802, 1807, 1812, 1815, 1818, 1821, 1824, 1830, 1835, 1845, 1847, 1852, 1857, 1861, 1866, 1873, 1876, 1882, 1890, 1904, 1910, 1913, 1918, 1925, 1928, 1933, 1937, 1939, 1943, 1947, 1949, 1951, 1958, 1965, 1973, 1982, 1999, 2007, 2009, 2016, 2023, 2030, 2035, 2037, 2050, 2058, 2066, 2071, 2073, 2086, 2095, 2097, 2104, 2110, 2112, 2120, 2129, 2139, 2144, 2147, 2185, 2188, 2191, 2197, 2200, 2205, 2207, 2214, 2224, 2232, 2237, 2256, 2259, 2262, 2268, 2270, 2283, 2286, 2289, 2295, 2297, 2308, 2322, 2326, 2328, 2332, 2345, 2358, 2365, 2369, 2414, 2419, 2436, 2454, 2459, 2479, 2483, 2490, 2493, 2500, 2503, 2507, 2514, 2516, 2521, 2525, 2529, 2533, 2537, 2539, 2544, 2547, 2552, 2559, 2561, 2570, 2585, 2587, 2593, 2597, 2604, 2617, 2624, 2635, 2641, 2648, 2659, 2662, 2667, 2672, 2674, 2683, 2692, 2694, 2698, 2704, 2709, 2712, 2716, 2719, 2726, 2733, 2739, 2747, 2754, 2758, 2766, 2769, 2776, 2785, 2794, 2799, 2831, 2835, 2842, 2847, 2854, 2857, 2864, 2868, 2875, 2880, 2887, 2890, 2900, 2922, 2925, 2928, 2931, 2935, 2944, 2950, 2954, 2960, 2963, 2966, 2977, 2990, 3003, 3007, 3024, 3042, 3065, 3073, 3088, 3100, 3102, 3106, 3112, 3121, 3125, 3130, 3139, 3145, 3156, 3159, 3164, 3176, 3183, 3189, 3200, 3204, 3206, 3218, 3263, 3266, 3270, 3274, 3280, 3294, 3302, 3304, 3315, 3317, 3336, 3340, 3346, 3351, 3361, 3369, 3380, 3383, 3387, 3390, 3394, 3408, 3416, 3421, 3436, 3440, 3444, 3457, 3460, 3464, 3471, 3477, 3500, 3507, 3523, 3527, 3534, 3538, 3544, 3548, 3556, 3559, 3563, 3585, 3588, 3597, 3601, 3603, 3606, 3616, 3620, 3624, 3630, 3634, 3637, 3642, 3648, 3655, 3662, 3669, 3678, 3686, 3692, 3695, 3698, 3708, 3713, 3718, 3723, 3728, 3733, 3739, 3745, 3760, 3773, 3779, 3783, 3794, 3796, 3804, 3806, 3812, 3824, 3831, 3841, 3844, 3849, 3866, 3868, 3885, 3891, 3895, 3899, 3905, 3913, 3918, 3936, 3947, 3974, 3980, 3984, 3990, 3994, 3996, 3999, 4005, 4008, 4015, 4018, 4021, 4032, 4035, 4038, 4043, 4046, 4050, 4052, 4074, 4081, 4085, 4092, 4096, 4103, 4107, 4114, 4118, 4143, 4148, 4152, 4156, 4176, 4180, 4184, 4189, 4192, 4205, 4209, 4218, 4227, 4240, 4247, 4254, 4256, 4261, 4269, 4276, 4283, 4285, 4290, 4299, 4311, 4324, 4326, 4331, 4335, 4337, 4340, 4344, 4383, 4387, 4390, 4397, 4406, 4442, 4450, 4457, 4459, 4464, 4483, 4488, 4490, 4493, 4508, 4512, 4517, 4525, 4532, 4539, 4541, 4544, 4549, 4552, 4561, 4565, 4571, 4576, 4605, 4610, 4622, 4633, 4636, 4641, 4646, 4648, 4655, 4658, 4662, 4665, 4670, 4675, 4684, 4690, 4697, 4700, 4703] \ No newline at end of file diff --git a/src/parser/generated/grammar/SysMLv2Parser.tokens b/src/parser/generated/grammar/SysMLv2Parser.tokens deleted file mode 100644 index 0d5e3aa..0000000 --- a/src/parser/generated/grammar/SysMLv2Parser.tokens +++ /dev/null @@ -1,442 +0,0 @@ -ABOUT=1 -ABSTRACT=2 -ACCEPT=3 -ACTION=4 -ACTOR=5 -AFTER=6 -ALIAS=7 -ALL=8 -ALLOCATE=9 -ALLOCATION=10 -ANALYSIS=11 -AND=12 -AS=13 -ASSERT=14 -ASSIGN=15 -ASSOC=16 -ASSUME=17 -AT=18 -ATTRIBUTE=19 -BEHAVIOR=20 -BIND=21 -BINDING=22 -BOOL=23 -BY=24 -CALC=25 -CASE=26 -CHAINS=27 -CLASS=28 -CLASSIFIER=29 -COMMENT=30 -COMPOSITE=31 -CONCERN=32 -CONJUGATE=33 -CONJUGATES=34 -CONJUGATION=35 -CONNECT=36 -CONNECTION=37 -CONNECTOR=38 -CONST=39 -CONSTANT=40 -CONSTRAINT=41 -CROSSES=42 -DATATYPE=43 -DECIDE=44 -DEF=45 -DEFAULT=46 -DEFINED=47 -DEPENDENCY=48 -DERIVED=49 -DIFFERENCES=50 -DISJOINING=51 -DISJOINT=52 -DO=53 -DOC=54 -ELSE=55 -END=56 -ENTRY=57 -ENUM=58 -EVENT=59 -EXHIBIT=60 -EXIT=61 -EXPOSE=62 -EXPR=63 -FALSE=64 -FEATURE=65 -FEATURED=66 -FEATURING=67 -FILTER=68 -FIRST=69 -FLOW=70 -FOR=71 -FORK=72 -FRAME=73 -FROM=74 -FUNCTION=75 -HASTYPE=76 -IF=77 -IMPLIES=78 -IMPORT=79 -IN=80 -INCLUDE=81 -INDIVIDUAL=82 -INOUT=83 -INTERACTION=84 -INTERFACE=85 -INTERSECTS=86 -INV=87 -INVERSE=88 -INVERTING=89 -ISTYPE=90 -ITEM=91 -JOIN=92 -LANGUAGE=93 -LIBRARY=94 -LOCALE=95 -LOOP=96 -MEMBER=97 -MERGE=98 -MESSAGE=99 -META=100 -METACLASS=101 -METADATA=102 -MULTIPLICITY=103 -NAMESPACE=104 -NEW=105 -NONUNIQUE=106 -NOT=107 -NULL=108 -OBJECTIVE=109 -OCCURRENCE=110 -OF=111 -OR=112 -ORDERED=113 -OUT=114 -PACKAGE=115 -PARALLEL=116 -PART=117 -PERFORM=118 -PORT=119 -PORTION=120 -PREDICATE=121 -PRIVATE=122 -PROTECTED=123 -PUBLIC=124 -REDEFINES=125 -REDEFINITION=126 -REF=127 -REFERENCES=128 -RENDER=129 -RENDERING=130 -REP=131 -REQUIRE=132 -REQUIREMENT=133 -RETURN=134 -SATISFY=135 -SEND=136 -SNAPSHOT=137 -SPECIALIZATION=138 -SPECIALIZES=139 -STAKEHOLDER=140 -STANDARD=141 -STATE=142 -STEP=143 -STRUCT=144 -SUBCLASSIFIER=145 -SUBJECT=146 -SUBSET=147 -SUBSETS=148 -SUBTYPE=149 -SUCCESSION=150 -TERMINATE=151 -THEN=152 -TIMESLICE=153 -TO=154 -TRANSITION=155 -TRUE=156 -TYPE=157 -TYPED=158 -TYPING=159 -UNIONS=160 -UNTIL=161 -USE=162 -VAR=163 -VARIANT=164 -VARIATION=165 -VERIFICATION=166 -VERIFY=167 -VIA=168 -VIEW=169 -VIEWPOINT=170 -WHEN=171 -WHILE=172 -XOR=173 -BANG_EQ_EQ=174 -COLON_COLON_GT=175 -COLON_GT_GT=176 -EQ_EQ_EQ=177 -BANG_EQ=178 -STAR_STAR=179 -ARROW=180 -DOT_DOT=181 -DOT_QUESTION=182 -COLON_COLON=183 -COLON_EQ=184 -COLON_GT=185 -LE=186 -EQ_EQ=187 -FAT_ARROW=188 -GE=189 -QUESTION_QUESTION=190 -AT_AT=191 -HASH=192 -DOLLAR=193 -PERCENT=194 -AMP=195 -LPAREN=196 -RPAREN=197 -STAR=198 -PLUS=199 -COMMA=200 -MINUS=201 -DOT=202 -SLASH=203 -COLON=204 -SEMI=205 -LT=206 -EQ=207 -GT=208 -QUESTION=209 -AT_SIGN=210 -LBRACK=211 -RBRACK=212 -CARET=213 -LBRACE=214 -PIPE=215 -RBRACE=216 -TILDE=217 -IDENTIFIER=218 -STRING=219 -DOUBLE_STRING=220 -INTEGER=221 -REAL=222 -REGULAR_COMMENT=223 -SINGLE_LINE_NOTE=224 -WS=225 -'about'=1 -'abstract'=2 -'accept'=3 -'action'=4 -'actor'=5 -'after'=6 -'alias'=7 -'all'=8 -'allocate'=9 -'allocation'=10 -'analysis'=11 -'and'=12 -'as'=13 -'assert'=14 -'assign'=15 -'assoc'=16 -'assume'=17 -'at'=18 -'attribute'=19 -'behavior'=20 -'bind'=21 -'binding'=22 -'bool'=23 -'by'=24 -'calc'=25 -'case'=26 -'chains'=27 -'class'=28 -'classifier'=29 -'comment'=30 -'composite'=31 -'concern'=32 -'conjugate'=33 -'conjugates'=34 -'conjugation'=35 -'connect'=36 -'connection'=37 -'connector'=38 -'const'=39 -'constant'=40 -'constraint'=41 -'crosses'=42 -'datatype'=43 -'decide'=44 -'def'=45 -'default'=46 -'defined'=47 -'dependency'=48 -'derived'=49 -'differences'=50 -'disjoining'=51 -'disjoint'=52 -'do'=53 -'doc'=54 -'else'=55 -'end'=56 -'entry'=57 -'enum'=58 -'event'=59 -'exhibit'=60 -'exit'=61 -'expose'=62 -'expr'=63 -'false'=64 -'feature'=65 -'featured'=66 -'featuring'=67 -'filter'=68 -'first'=69 -'flow'=70 -'for'=71 -'fork'=72 -'frame'=73 -'from'=74 -'function'=75 -'hastype'=76 -'if'=77 -'implies'=78 -'import'=79 -'in'=80 -'include'=81 -'individual'=82 -'inout'=83 -'interaction'=84 -'interface'=85 -'intersects'=86 -'inv'=87 -'inverse'=88 -'inverting'=89 -'istype'=90 -'item'=91 -'join'=92 -'language'=93 -'library'=94 -'locale'=95 -'loop'=96 -'member'=97 -'merge'=98 -'message'=99 -'meta'=100 -'metaclass'=101 -'metadata'=102 -'multiplicity'=103 -'namespace'=104 -'new'=105 -'nonunique'=106 -'not'=107 -'null'=108 -'objective'=109 -'occurrence'=110 -'of'=111 -'or'=112 -'ordered'=113 -'out'=114 -'package'=115 -'parallel'=116 -'part'=117 -'perform'=118 -'port'=119 -'portion'=120 -'predicate'=121 -'private'=122 -'protected'=123 -'public'=124 -'redefines'=125 -'redefinition'=126 -'ref'=127 -'references'=128 -'render'=129 -'rendering'=130 -'rep'=131 -'require'=132 -'requirement'=133 -'return'=134 -'satisfy'=135 -'send'=136 -'snapshot'=137 -'specialization'=138 -'specializes'=139 -'stakeholder'=140 -'standard'=141 -'state'=142 -'step'=143 -'struct'=144 -'subclassifier'=145 -'subject'=146 -'subset'=147 -'subsets'=148 -'subtype'=149 -'succession'=150 -'terminate'=151 -'then'=152 -'timeslice'=153 -'to'=154 -'transition'=155 -'true'=156 -'type'=157 -'typed'=158 -'typing'=159 -'unions'=160 -'until'=161 -'use'=162 -'var'=163 -'variant'=164 -'variation'=165 -'verification'=166 -'verify'=167 -'via'=168 -'view'=169 -'viewpoint'=170 -'when'=171 -'while'=172 -'xor'=173 -'!=='=174 -'::>'=175 -':>>'=176 -'==='=177 -'!='=178 -'**'=179 -'->'=180 -'..'=181 -'.?'=182 -'::'=183 -':='=184 -':>'=185 -'<='=186 -'=='=187 -'=>'=188 -'>='=189 -'??'=190 -'@@'=191 -'#'=192 -'$'=193 -'%'=194 -'&'=195 -'('=196 -')'=197 -'*'=198 -'+'=199 -','=200 -'-'=201 -'.'=202 -'/'=203 -':'=204 -';'=205 -'<'=206 -'='=207 -'>'=208 -'?'=209 -'@'=210 -'['=211 -']'=212 -'^'=213 -'{'=214 -'|'=215 -'}'=216 -'~'=217 diff --git a/src/parser/generated/grammar/SysMLv2Parser.ts b/src/parser/generated/grammar/SysMLv2Parser.ts deleted file mode 100644 index c4003e2..0000000 --- a/src/parser/generated/grammar/SysMLv2Parser.ts +++ /dev/null @@ -1,40923 +0,0 @@ -// Generated from SysMLv2Parser.g4 by ANTLR 4.13.2 -// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols - -import { - ATN, - ATNDeserializer, DecisionState, DFA, FailedPredicateException, - RecognitionException, NoViableAltException, BailErrorStrategy, - Parser, ParserATNSimulator, - RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, - TerminalNode, RuleNode, - Token, TokenStream, - Interval, IntervalSet -} from 'antlr4'; -import { SysMLv2ParserVisitor } from "./SysMLv2ParserVisitor"; - -// for running tests with parameters, TODO: discuss strategy for typed parameters in CI -// eslint-disable-next-line no-unused-vars -type int = number; - -export class SysMLv2Parser extends Parser { - public static readonly ABOUT = 1; - public static readonly ABSTRACT = 2; - public static readonly ACCEPT = 3; - public static readonly ACTION = 4; - public static readonly ACTOR = 5; - public static readonly AFTER = 6; - public static readonly ALIAS = 7; - public static readonly ALL = 8; - public static readonly ALLOCATE = 9; - public static readonly ALLOCATION = 10; - public static readonly ANALYSIS = 11; - public static readonly AND = 12; - public static readonly AS = 13; - public static readonly ASSERT = 14; - public static readonly ASSIGN = 15; - public static readonly ASSOC = 16; - public static readonly ASSUME = 17; - public static readonly AT = 18; - public static readonly ATTRIBUTE = 19; - public static readonly BEHAVIOR = 20; - public static readonly BIND = 21; - public static readonly BINDING = 22; - public static readonly BOOL = 23; - public static readonly BY = 24; - public static readonly CALC = 25; - public static readonly CASE = 26; - public static readonly CHAINS = 27; - public static readonly CLASS = 28; - public static readonly CLASSIFIER = 29; - public static readonly COMMENT = 30; - public static readonly COMPOSITE = 31; - public static readonly CONCERN = 32; - public static readonly CONJUGATE = 33; - public static readonly CONJUGATES = 34; - public static readonly CONJUGATION = 35; - public static readonly CONNECT = 36; - public static readonly CONNECTION = 37; - public static readonly CONNECTOR = 38; - public static readonly CONST = 39; - public static readonly CONSTANT = 40; - public static readonly CONSTRAINT = 41; - public static readonly CROSSES = 42; - public static readonly DATATYPE = 43; - public static readonly DECIDE = 44; - public static readonly DEF = 45; - public static readonly DEFAULT = 46; - public static readonly DEFINED = 47; - public static readonly DEPENDENCY = 48; - public static readonly DERIVED = 49; - public static readonly DIFFERENCES = 50; - public static readonly DISJOINING = 51; - public static readonly DISJOINT = 52; - public static readonly DO = 53; - public static readonly DOC = 54; - public static readonly ELSE = 55; - public static readonly END = 56; - public static readonly ENTRY = 57; - public static readonly ENUM = 58; - public static readonly EVENT = 59; - public static readonly EXHIBIT = 60; - public static readonly EXIT = 61; - public static readonly EXPOSE = 62; - public static readonly EXPR = 63; - public static readonly FALSE = 64; - public static readonly FEATURE = 65; - public static readonly FEATURED = 66; - public static readonly FEATURING = 67; - public static readonly FILTER = 68; - public static readonly FIRST = 69; - public static readonly FLOW = 70; - public static readonly FOR = 71; - public static readonly FORK = 72; - public static readonly FRAME = 73; - public static readonly FROM = 74; - public static readonly FUNCTION = 75; - public static readonly HASTYPE = 76; - public static readonly IF = 77; - public static readonly IMPLIES = 78; - public static readonly IMPORT = 79; - public static readonly IN = 80; - public static readonly INCLUDE = 81; - public static readonly INDIVIDUAL = 82; - public static readonly INOUT = 83; - public static readonly INTERACTION = 84; - public static readonly INTERFACE = 85; - public static readonly INTERSECTS = 86; - public static readonly INV = 87; - public static readonly INVERSE = 88; - public static readonly INVERTING = 89; - public static readonly ISTYPE = 90; - public static readonly ITEM = 91; - public static readonly JOIN = 92; - public static readonly LANGUAGE = 93; - public static readonly LIBRARY = 94; - public static readonly LOCALE = 95; - public static readonly LOOP = 96; - public static readonly MEMBER = 97; - public static readonly MERGE = 98; - public static readonly MESSAGE = 99; - public static readonly META = 100; - public static readonly METACLASS = 101; - public static readonly METADATA = 102; - public static readonly MULTIPLICITY = 103; - public static readonly NAMESPACE = 104; - public static readonly NEW = 105; - public static readonly NONUNIQUE = 106; - public static readonly NOT = 107; - public static readonly NULL = 108; - public static readonly OBJECTIVE = 109; - public static readonly OCCURRENCE = 110; - public static readonly OF = 111; - public static readonly OR = 112; - public static readonly ORDERED = 113; - public static readonly OUT = 114; - public static readonly PACKAGE = 115; - public static readonly PARALLEL = 116; - public static readonly PART = 117; - public static readonly PERFORM = 118; - public static readonly PORT = 119; - public static readonly PORTION = 120; - public static readonly PREDICATE = 121; - public static readonly PRIVATE = 122; - public static readonly PROTECTED = 123; - public static readonly PUBLIC = 124; - public static readonly REDEFINES = 125; - public static readonly REDEFINITION = 126; - public static readonly REF = 127; - public static readonly REFERENCES = 128; - public static readonly RENDER = 129; - public static readonly RENDERING = 130; - public static readonly REP = 131; - public static readonly REQUIRE = 132; - public static readonly REQUIREMENT = 133; - public static readonly RETURN = 134; - public static readonly SATISFY = 135; - public static readonly SEND = 136; - public static readonly SNAPSHOT = 137; - public static readonly SPECIALIZATION = 138; - public static readonly SPECIALIZES = 139; - public static readonly STAKEHOLDER = 140; - public static readonly STANDARD = 141; - public static readonly STATE = 142; - public static readonly STEP = 143; - public static readonly STRUCT = 144; - public static readonly SUBCLASSIFIER = 145; - public static readonly SUBJECT = 146; - public static readonly SUBSET = 147; - public static readonly SUBSETS = 148; - public static readonly SUBTYPE = 149; - public static readonly SUCCESSION = 150; - public static readonly TERMINATE = 151; - public static readonly THEN = 152; - public static readonly TIMESLICE = 153; - public static readonly TO = 154; - public static readonly TRANSITION = 155; - public static readonly TRUE = 156; - public static readonly TYPE = 157; - public static readonly TYPED = 158; - public static readonly TYPING = 159; - public static readonly UNIONS = 160; - public static readonly UNTIL = 161; - public static readonly USE = 162; - public static readonly VAR = 163; - public static readonly VARIANT = 164; - public static readonly VARIATION = 165; - public static readonly VERIFICATION = 166; - public static readonly VERIFY = 167; - public static readonly VIA = 168; - public static readonly VIEW = 169; - public static readonly VIEWPOINT = 170; - public static readonly WHEN = 171; - public static readonly WHILE = 172; - public static readonly XOR = 173; - public static readonly BANG_EQ_EQ = 174; - public static readonly COLON_COLON_GT = 175; - public static readonly COLON_GT_GT = 176; - public static readonly EQ_EQ_EQ = 177; - public static readonly BANG_EQ = 178; - public static readonly STAR_STAR = 179; - public static readonly ARROW = 180; - public static readonly DOT_DOT = 181; - public static readonly DOT_QUESTION = 182; - public static readonly COLON_COLON = 183; - public static readonly COLON_EQ = 184; - public static readonly COLON_GT = 185; - public static readonly LE = 186; - public static readonly EQ_EQ = 187; - public static readonly FAT_ARROW = 188; - public static readonly GE = 189; - public static readonly QUESTION_QUESTION = 190; - public static readonly AT_AT = 191; - public static readonly HASH = 192; - public static readonly DOLLAR = 193; - public static readonly PERCENT = 194; - public static readonly AMP = 195; - public static readonly LPAREN = 196; - public static readonly RPAREN = 197; - public static readonly STAR = 198; - public static readonly PLUS = 199; - public static readonly COMMA = 200; - public static readonly MINUS = 201; - public static readonly DOT = 202; - public static readonly SLASH = 203; - public static readonly COLON = 204; - public static readonly SEMI = 205; - public static readonly LT = 206; - public static readonly EQ = 207; - public static readonly GT = 208; - public static readonly QUESTION = 209; - public static readonly AT_SIGN = 210; - public static readonly LBRACK = 211; - public static readonly RBRACK = 212; - public static readonly CARET = 213; - public static readonly LBRACE = 214; - public static readonly PIPE = 215; - public static readonly RBRACE = 216; - public static readonly TILDE = 217; - public static readonly IDENTIFIER = 218; - public static readonly STRING = 219; - public static readonly DOUBLE_STRING = 220; - public static readonly INTEGER = 221; - public static readonly REAL = 222; - public static readonly REGULAR_COMMENT = 223; - public static readonly SINGLE_LINE_NOTE = 224; - public static readonly WS = 225; - public static override readonly EOF = Token.EOF; - public static readonly RULE_ownedExpression = 0; - public static readonly RULE_typeReference = 1; - public static readonly RULE_sequenceExpressionList = 2; - public static readonly RULE_baseExpression = 3; - public static readonly RULE_nullExpression = 4; - public static readonly RULE_featureReferenceExpression = 5; - public static readonly RULE_metadataAccessExpression = 6; - public static readonly RULE_invocationExpression = 7; - public static readonly RULE_constructorExpression = 8; - public static readonly RULE_bodyExpression = 9; - public static readonly RULE_argumentList = 10; - public static readonly RULE_positionalArgumentList = 11; - public static readonly RULE_namedArgumentList = 12; - public static readonly RULE_namedArgument = 13; - public static readonly RULE_literalExpression = 14; - public static readonly RULE_literalBoolean = 15; - public static readonly RULE_literalString = 16; - public static readonly RULE_literalInteger = 17; - public static readonly RULE_literalReal = 18; - public static readonly RULE_literalInfinity = 19; - public static readonly RULE_argumentMember = 20; - public static readonly RULE_argumentExpressionMember = 21; - public static readonly RULE_name = 22; - public static readonly RULE_identification = 23; - public static readonly RULE_relationshipBody = 24; - public static readonly RULE_relationshipOwnedElement = 25; - public static readonly RULE_ownedRelatedElement = 26; - public static readonly RULE_dependency = 27; - public static readonly RULE_annotation = 28; - public static readonly RULE_ownedAnnotation = 29; - public static readonly RULE_annotatingElement = 30; - public static readonly RULE_comment = 31; - public static readonly RULE_documentation = 32; - public static readonly RULE_textualRepresentation = 33; - public static readonly RULE_rootNamespace = 34; - public static readonly RULE_namespace = 35; - public static readonly RULE_namespaceDeclaration = 36; - public static readonly RULE_namespaceBody = 37; - public static readonly RULE_namespaceBodyElement = 38; - public static readonly RULE_memberPrefix = 39; - public static readonly RULE_visibilityIndicator = 40; - public static readonly RULE_namespaceMember = 41; - public static readonly RULE_nonFeatureMember = 42; - public static readonly RULE_namespaceFeatureMember = 43; - public static readonly RULE_aliasMember = 44; - public static readonly RULE_qualifiedName = 45; - public static readonly RULE_importRule = 46; - public static readonly RULE_importDeclaration = 47; - public static readonly RULE_membershipImport = 48; - public static readonly RULE_namespaceImport = 49; - public static readonly RULE_filterPackage = 50; - public static readonly RULE_filterPackageMember = 51; - public static readonly RULE_memberElement = 52; - public static readonly RULE_nonFeatureElement = 53; - public static readonly RULE_featureElement = 54; - public static readonly RULE_type = 55; - public static readonly RULE_typePrefix = 56; - public static readonly RULE_typeDeclaration = 57; - public static readonly RULE_specializationPart = 58; - public static readonly RULE_conjugationPart = 59; - public static readonly RULE_typeRelationshipPart = 60; - public static readonly RULE_disjoiningPart = 61; - public static readonly RULE_unioningPart = 62; - public static readonly RULE_intersectingPart = 63; - public static readonly RULE_differencingPart = 64; - public static readonly RULE_typeBody = 65; - public static readonly RULE_typeBodyElement = 66; - public static readonly RULE_specialization = 67; - public static readonly RULE_ownedSpecialization = 68; - public static readonly RULE_specificType = 69; - public static readonly RULE_generalType = 70; - public static readonly RULE_conjugation = 71; - public static readonly RULE_ownedConjugation = 72; - public static readonly RULE_disjoining = 73; - public static readonly RULE_ownedDisjoining = 74; - public static readonly RULE_unioning = 75; - public static readonly RULE_intersecting = 76; - public static readonly RULE_differencing = 77; - public static readonly RULE_featureMember = 78; - public static readonly RULE_typeFeatureMember = 79; - public static readonly RULE_ownedFeatureMember = 80; - public static readonly RULE_classifier = 81; - public static readonly RULE_classifierDeclaration = 82; - public static readonly RULE_superclassingPart = 83; - public static readonly RULE_subclassification = 84; - public static readonly RULE_ownedSubclassification = 85; - public static readonly RULE_feature = 86; - public static readonly RULE_endFeaturePrefix = 87; - public static readonly RULE_basicFeaturePrefix = 88; - public static readonly RULE_featurePrefix = 89; - public static readonly RULE_ownedCrossFeatureMember = 90; - public static readonly RULE_ownedCrossFeature = 91; - public static readonly RULE_featureDirection = 92; - public static readonly RULE_featureDeclaration = 93; - public static readonly RULE_featureIdentification = 94; - public static readonly RULE_featureRelationshipPart = 95; - public static readonly RULE_chainingPart = 96; - public static readonly RULE_invertingPart = 97; - public static readonly RULE_typeFeaturingPart = 98; - public static readonly RULE_featureSpecializationPart = 99; - public static readonly RULE_multiplicityPart = 100; - public static readonly RULE_featureSpecialization = 101; - public static readonly RULE_typings = 102; - public static readonly RULE_typedBy = 103; - public static readonly RULE_subsettings = 104; - public static readonly RULE_subsets = 105; - public static readonly RULE_references = 106; - public static readonly RULE_crosses = 107; - public static readonly RULE_redefinitions = 108; - public static readonly RULE_redefines = 109; - public static readonly RULE_featureTyping = 110; - public static readonly RULE_ownedFeatureTyping = 111; - public static readonly RULE_subsetting = 112; - public static readonly RULE_ownedSubsetting = 113; - public static readonly RULE_ownedReferenceSubsetting = 114; - public static readonly RULE_ownedCrossSubsetting = 115; - public static readonly RULE_redefinition = 116; - public static readonly RULE_ownedRedefinition = 117; - public static readonly RULE_ownedFeatureChain = 118; - public static readonly RULE_featureChain = 119; - public static readonly RULE_ownedFeatureChaining = 120; - public static readonly RULE_featureInverting = 121; - public static readonly RULE_ownedFeatureInverting = 122; - public static readonly RULE_typeFeaturing = 123; - public static readonly RULE_ownedTypeFeaturing = 124; - public static readonly RULE_dataType = 125; - public static readonly RULE_class = 126; - public static readonly RULE_structure = 127; - public static readonly RULE_association = 128; - public static readonly RULE_associationStructure = 129; - public static readonly RULE_connector = 130; - public static readonly RULE_connectorDeclaration = 131; - public static readonly RULE_binaryConnectorDeclaration = 132; - public static readonly RULE_naryConnectorDeclaration = 133; - public static readonly RULE_connectorEndMember = 134; - public static readonly RULE_connectorEnd = 135; - public static readonly RULE_ownedCrossMultiplicityMember = 136; - public static readonly RULE_ownedCrossMultiplicity = 137; - public static readonly RULE_bindingConnector = 138; - public static readonly RULE_bindingConnectorDeclaration = 139; - public static readonly RULE_succession = 140; - public static readonly RULE_successionDeclaration = 141; - public static readonly RULE_behavior = 142; - public static readonly RULE_step = 143; - public static readonly RULE_function = 144; - public static readonly RULE_functionBody = 145; - public static readonly RULE_functionBodyPart = 146; - public static readonly RULE_returnFeatureMember = 147; - public static readonly RULE_resultExpressionMember = 148; - public static readonly RULE_expression = 149; - public static readonly RULE_predicate = 150; - public static readonly RULE_booleanExpression = 151; - public static readonly RULE_invariant = 152; - public static readonly RULE_ownedExpressionMember = 153; - public static readonly RULE_metadataReference = 154; - public static readonly RULE_typeReferenceMember = 155; - public static readonly RULE_typeResultMember = 156; - public static readonly RULE_referenceTyping = 157; - public static readonly RULE_emptyResultMember = 158; - public static readonly RULE_sequenceOperatorExpression = 159; - public static readonly RULE_sequenceExpressionListMember = 160; - public static readonly RULE_bodyArgumentMember = 161; - public static readonly RULE_bodyArgument = 162; - public static readonly RULE_bodyArgumentValue = 163; - public static readonly RULE_functionReferenceArgumentMember = 164; - public static readonly RULE_functionReferenceArgument = 165; - public static readonly RULE_functionReferenceArgumentValue = 166; - public static readonly RULE_functionReferenceExpression = 167; - public static readonly RULE_functionReferenceMember = 168; - public static readonly RULE_functionReference = 169; - public static readonly RULE_featureChainMember = 170; - public static readonly RULE_ownedFeatureChainMember = 171; - public static readonly RULE_featureReferenceMember = 172; - public static readonly RULE_featureReference = 173; - public static readonly RULE_elementReferenceMember = 174; - public static readonly RULE_constructorResultMember = 175; - public static readonly RULE_constructorResult = 176; - public static readonly RULE_instantiatedTypeMember = 177; - public static readonly RULE_instantiatedTypeReference = 178; - public static readonly RULE_namedArgumentMember = 179; - public static readonly RULE_parameterRedefinition = 180; - public static readonly RULE_expressionBodyMember = 181; - public static readonly RULE_expressionBody = 182; - public static readonly RULE_booleanValue = 183; - public static readonly RULE_realValue = 184; - public static readonly RULE_interaction = 185; - public static readonly RULE_flow = 186; - public static readonly RULE_successionFlow = 187; - public static readonly RULE_flowDeclaration = 188; - public static readonly RULE_payloadFeatureMember = 189; - public static readonly RULE_payloadFeature = 190; - public static readonly RULE_payloadFeatureSpecializationPart = 191; - public static readonly RULE_flowEndMember = 192; - public static readonly RULE_flowEnd = 193; - public static readonly RULE_flowFeatureMember = 194; - public static readonly RULE_flowFeature = 195; - public static readonly RULE_flowFeatureRedefinition = 196; - public static readonly RULE_valuePart = 197; - public static readonly RULE_featureValue = 198; - public static readonly RULE_multiplicity = 199; - public static readonly RULE_multiplicitySubset = 200; - public static readonly RULE_multiplicityRange = 201; - public static readonly RULE_ownedMultiplicity = 202; - public static readonly RULE_ownedMultiplicityRange = 203; - public static readonly RULE_multiplicityBounds = 204; - public static readonly RULE_multiplicityExpressionMember = 205; - public static readonly RULE_metaclass = 206; - public static readonly RULE_prefixMetadataAnnotation = 207; - public static readonly RULE_prefixMetadataMember = 208; - public static readonly RULE_prefixMetadataFeature = 209; - public static readonly RULE_metadataFeature = 210; - public static readonly RULE_metadataFeatureDeclaration = 211; - public static readonly RULE_metadataBody = 212; - public static readonly RULE_metadataBodyElement = 213; - public static readonly RULE_metadataBodyFeatureMember = 214; - public static readonly RULE_metadataBodyFeature = 215; - public static readonly RULE_package = 216; - public static readonly RULE_libraryPackage = 217; - public static readonly RULE_packageDeclaration = 218; - public static readonly RULE_packageBody = 219; - public static readonly RULE_elementFilterMember = 220; - public static readonly RULE_dependencyDeclaration = 221; - public static readonly RULE_annotatingMember = 222; - public static readonly RULE_packageBodyElement = 223; - public static readonly RULE_packageMember = 224; - public static readonly RULE_definitionElement = 225; - public static readonly RULE_usageElement = 226; - public static readonly RULE_basicDefinitionPrefix = 227; - public static readonly RULE_definitionExtensionKeyword = 228; - public static readonly RULE_definitionPrefix = 229; - public static readonly RULE_definition = 230; - public static readonly RULE_definitionDeclaration = 231; - public static readonly RULE_definitionBody = 232; - public static readonly RULE_definitionBodyItem = 233; - public static readonly RULE_definitionBodyItemContent = 234; - public static readonly RULE_definitionMember = 235; - public static readonly RULE_variantUsageMember = 236; - public static readonly RULE_nonOccurrenceUsageMember = 237; - public static readonly RULE_occurrenceUsageMember = 238; - public static readonly RULE_structureUsageMember = 239; - public static readonly RULE_behaviorUsageMember = 240; - public static readonly RULE_refPrefix = 241; - public static readonly RULE_basicUsagePrefix = 242; - public static readonly RULE_endUsagePrefix = 243; - public static readonly RULE_usageExtensionKeyword = 244; - public static readonly RULE_unextendedUsagePrefix = 245; - public static readonly RULE_usagePrefix = 246; - public static readonly RULE_usage = 247; - public static readonly RULE_usageDeclaration = 248; - public static readonly RULE_usageCompletion = 249; - public static readonly RULE_usageBody = 250; - public static readonly RULE_defaultReferenceUsage = 251; - public static readonly RULE_referenceUsage = 252; - public static readonly RULE_endFeatureUsage = 253; - public static readonly RULE_variantReference = 254; - public static readonly RULE_nonOccurrenceUsageElement = 255; - public static readonly RULE_occurrenceUsageElement = 256; - public static readonly RULE_structureUsageElement = 257; - public static readonly RULE_behaviorUsageElement = 258; - public static readonly RULE_variantUsageElement = 259; - public static readonly RULE_subclassificationPart = 260; - public static readonly RULE_attributeDefinition = 261; - public static readonly RULE_attributeUsage = 262; - public static readonly RULE_enumerationDefinition = 263; - public static readonly RULE_enumerationBody = 264; - public static readonly RULE_enumerationUsageMember = 265; - public static readonly RULE_enumeratedValue = 266; - public static readonly RULE_enumerationUsage = 267; - public static readonly RULE_occurrenceDefinitionPrefix = 268; - public static readonly RULE_occurrenceDefinition = 269; - public static readonly RULE_individualDefinition = 270; - public static readonly RULE_emptyMultiplicityMember = 271; - public static readonly RULE_occurrenceUsagePrefix = 272; - public static readonly RULE_occurrenceUsage = 273; - public static readonly RULE_individualUsage = 274; - public static readonly RULE_portionUsage = 275; - public static readonly RULE_portionKind = 276; - public static readonly RULE_eventOccurrenceUsage = 277; - public static readonly RULE_sourceSuccessionMember = 278; - public static readonly RULE_sourceSuccession = 279; - public static readonly RULE_sourceEndMember = 280; - public static readonly RULE_sourceEnd = 281; - public static readonly RULE_itemDefinition = 282; - public static readonly RULE_itemUsage = 283; - public static readonly RULE_partDefinition = 284; - public static readonly RULE_partUsage = 285; - public static readonly RULE_portDefinition = 286; - public static readonly RULE_conjugatedPortDefinitionMember = 287; - public static readonly RULE_conjugatedPortDefinition = 288; - public static readonly RULE_portUsage = 289; - public static readonly RULE_conjugatedPortTyping = 290; - public static readonly RULE_connectionDefinition = 291; - public static readonly RULE_connectionUsage = 292; - public static readonly RULE_connectorPart = 293; - public static readonly RULE_binaryConnectorPart = 294; - public static readonly RULE_naryConnectorPart = 295; - public static readonly RULE_bindingConnectorAsUsage = 296; - public static readonly RULE_successionAsUsage = 297; - public static readonly RULE_interfaceDefinition = 298; - public static readonly RULE_interfaceBody = 299; - public static readonly RULE_interfaceBodyItem = 300; - public static readonly RULE_interfaceNonOccurrenceUsageMember = 301; - public static readonly RULE_interfaceNonOccurrenceUsageElement = 302; - public static readonly RULE_interfaceOccurrenceUsageMember = 303; - public static readonly RULE_interfaceOccurrenceUsageElement = 304; - public static readonly RULE_defaultInterfaceEnd = 305; - public static readonly RULE_interfaceUsage = 306; - public static readonly RULE_interfaceUsageDeclaration = 307; - public static readonly RULE_interfacePart = 308; - public static readonly RULE_binaryInterfacePart = 309; - public static readonly RULE_naryInterfacePart = 310; - public static readonly RULE_interfaceEndMember = 311; - public static readonly RULE_interfaceEnd = 312; - public static readonly RULE_allocationDefinition = 313; - public static readonly RULE_allocationUsage = 314; - public static readonly RULE_allocationUsageDeclaration = 315; - public static readonly RULE_flowDefinition = 316; - public static readonly RULE_message = 317; - public static readonly RULE_messageDeclaration = 318; - public static readonly RULE_messageEventMember = 319; - public static readonly RULE_messageEvent = 320; - public static readonly RULE_flowUsage = 321; - public static readonly RULE_successionFlowUsage = 322; - public static readonly RULE_flowPayloadFeatureMember = 323; - public static readonly RULE_flowPayloadFeature = 324; - public static readonly RULE_flowEndSubsetting = 325; - public static readonly RULE_featureChainPrefix = 326; - public static readonly RULE_actionDefinition = 327; - public static readonly RULE_actionBody = 328; - public static readonly RULE_actionBodyItem = 329; - public static readonly RULE_nonBehaviorBodyItem = 330; - public static readonly RULE_actionBehaviorMember = 331; - public static readonly RULE_initialNodeMember = 332; - public static readonly RULE_actionNodeMember = 333; - public static readonly RULE_actionTargetSuccessionMember = 334; - public static readonly RULE_guardedSuccessionMember = 335; - public static readonly RULE_actionUsage = 336; - public static readonly RULE_actionUsageDeclaration = 337; - public static readonly RULE_performActionUsage = 338; - public static readonly RULE_performActionUsageDeclaration = 339; - public static readonly RULE_actionNode = 340; - public static readonly RULE_actionNodeUsageDeclaration = 341; - public static readonly RULE_actionNodePrefix = 342; - public static readonly RULE_controlNode = 343; - public static readonly RULE_controlNodePrefix = 344; - public static readonly RULE_mergeNode = 345; - public static readonly RULE_decisionNode = 346; - public static readonly RULE_joinNode = 347; - public static readonly RULE_forkNode = 348; - public static readonly RULE_acceptNode = 349; - public static readonly RULE_acceptNodeDeclaration = 350; - public static readonly RULE_acceptParameterPart = 351; - public static readonly RULE_payloadParameterMember = 352; - public static readonly RULE_payloadParameter = 353; - public static readonly RULE_triggerValuePart = 354; - public static readonly RULE_triggerFeatureValue = 355; - public static readonly RULE_triggerExpression = 356; - public static readonly RULE_sendNode = 357; - public static readonly RULE_sendNodeDeclaration = 358; - public static readonly RULE_senderReceiverPart = 359; - public static readonly RULE_nodeParameterMember = 360; - public static readonly RULE_nodeParameter = 361; - public static readonly RULE_featureBinding = 362; - public static readonly RULE_emptyParameterMember = 363; - public static readonly RULE_assignmentNode = 364; - public static readonly RULE_assignmentNodeDeclaration = 365; - public static readonly RULE_assignmentTargetMember = 366; - public static readonly RULE_assignmentTargetParameter = 367; - public static readonly RULE_assignmentTargetBinding = 368; - public static readonly RULE_terminateNode = 369; - public static readonly RULE_ifNode = 370; - public static readonly RULE_expressionParameterMember = 371; - public static readonly RULE_actionBodyParameterMember = 372; - public static readonly RULE_actionBodyParameter = 373; - public static readonly RULE_ifNodeParameterMember = 374; - public static readonly RULE_whileLoopNode = 375; - public static readonly RULE_forLoopNode = 376; - public static readonly RULE_forVariableDeclarationMember = 377; - public static readonly RULE_forVariableDeclaration = 378; - public static readonly RULE_actionTargetSuccession = 379; - public static readonly RULE_targetSuccession = 380; - public static readonly RULE_guardedTargetSuccession = 381; - public static readonly RULE_defaultTargetSuccession = 382; - public static readonly RULE_guardedSuccession = 383; - public static readonly RULE_stateDefinition = 384; - public static readonly RULE_stateDefBody = 385; - public static readonly RULE_stateBodyItem = 386; - public static readonly RULE_entryActionMember = 387; - public static readonly RULE_doActionMember = 388; - public static readonly RULE_exitActionMember = 389; - public static readonly RULE_entryTransitionMember = 390; - public static readonly RULE_stateActionUsage = 391; - public static readonly RULE_statePerformActionUsage = 392; - public static readonly RULE_stateAcceptActionUsage = 393; - public static readonly RULE_stateSendActionUsage = 394; - public static readonly RULE_stateAssignmentActionUsage = 395; - public static readonly RULE_transitionUsageMember = 396; - public static readonly RULE_targetTransitionUsageMember = 397; - public static readonly RULE_stateUsage = 398; - public static readonly RULE_stateUsageBody = 399; - public static readonly RULE_exhibitStateUsage = 400; - public static readonly RULE_transitionUsage = 401; - public static readonly RULE_targetTransitionUsage = 402; - public static readonly RULE_triggerActionMember = 403; - public static readonly RULE_triggerAction = 404; - public static readonly RULE_guardExpressionMember = 405; - public static readonly RULE_effectBehaviorMember = 406; - public static readonly RULE_effectBehaviorUsage = 407; - public static readonly RULE_transitionPerformActionUsage = 408; - public static readonly RULE_transitionAcceptActionUsage = 409; - public static readonly RULE_transitionSendActionUsage = 410; - public static readonly RULE_transitionAssignmentActionUsage = 411; - public static readonly RULE_transitionSuccessionMember = 412; - public static readonly RULE_transitionSuccession = 413; - public static readonly RULE_emptyEndMember = 414; - public static readonly RULE_calculationDefinition = 415; - public static readonly RULE_calculationUsage = 416; - public static readonly RULE_calculationBody = 417; - public static readonly RULE_calculationBodyPart = 418; - public static readonly RULE_calculationBodyItem = 419; - public static readonly RULE_returnParameterMember = 420; - public static readonly RULE_constraintDefinition = 421; - public static readonly RULE_constraintUsage = 422; - public static readonly RULE_assertConstraintUsage = 423; - public static readonly RULE_constraintUsageDeclaration = 424; - public static readonly RULE_requirementDefinition = 425; - public static readonly RULE_requirementBody = 426; - public static readonly RULE_requirementBodyItem = 427; - public static readonly RULE_subjectMember = 428; - public static readonly RULE_subjectUsage = 429; - public static readonly RULE_requirementConstraintMember = 430; - public static readonly RULE_requirementKind = 431; - public static readonly RULE_requirementConstraintUsage = 432; - public static readonly RULE_framedConcernMember = 433; - public static readonly RULE_framedConcernUsage = 434; - public static readonly RULE_actorMember = 435; - public static readonly RULE_actorUsage = 436; - public static readonly RULE_stakeholderMember = 437; - public static readonly RULE_stakeholderUsage = 438; - public static readonly RULE_requirementUsage = 439; - public static readonly RULE_satisfyRequirementUsage = 440; - public static readonly RULE_satisfactionSubjectMember = 441; - public static readonly RULE_satisfactionParameter = 442; - public static readonly RULE_satisfactionFeatureValue = 443; - public static readonly RULE_satisfactionReferenceExpression = 444; - public static readonly RULE_concernDefinition = 445; - public static readonly RULE_concernUsage = 446; - public static readonly RULE_caseDefinition = 447; - public static readonly RULE_caseUsage = 448; - public static readonly RULE_caseBody = 449; - public static readonly RULE_caseBodyItem = 450; - public static readonly RULE_objectiveMember = 451; - public static readonly RULE_objectiveRequirementUsage = 452; - public static readonly RULE_analysisCaseDefinition = 453; - public static readonly RULE_analysisCaseUsage = 454; - public static readonly RULE_verificationCaseDefinition = 455; - public static readonly RULE_verificationCaseUsage = 456; - public static readonly RULE_requirementVerificationMember = 457; - public static readonly RULE_requirementVerificationUsage = 458; - public static readonly RULE_useCaseDefinition = 459; - public static readonly RULE_useCaseUsage = 460; - public static readonly RULE_includeUseCaseUsage = 461; - public static readonly RULE_viewDefinition = 462; - public static readonly RULE_viewDefinitionBody = 463; - public static readonly RULE_viewDefinitionBodyItem = 464; - public static readonly RULE_viewRenderingMember = 465; - public static readonly RULE_viewRenderingUsage = 466; - public static readonly RULE_viewUsage = 467; - public static readonly RULE_viewBody = 468; - public static readonly RULE_viewBodyItem = 469; - public static readonly RULE_expose = 470; - public static readonly RULE_membershipExpose = 471; - public static readonly RULE_namespaceExpose = 472; - public static readonly RULE_viewpointDefinition = 473; - public static readonly RULE_viewpointUsage = 474; - public static readonly RULE_renderingDefinition = 475; - public static readonly RULE_renderingUsage = 476; - public static readonly RULE_metadataDefinition = 477; - public static readonly RULE_prefixMetadataUsage = 478; - public static readonly RULE_metadataUsage = 479; - public static readonly RULE_metadataUsageDeclaration = 480; - public static readonly RULE_metadataBodyUsageMember = 481; - public static readonly RULE_metadataBodyUsage = 482; - public static readonly RULE_extendedDefinition = 483; - public static readonly RULE_extendedUsage = 484; - public static readonly RULE_filterPackageImportDeclaration = 485; - public static readonly RULE_namespaceImportDirect = 486; - public static readonly RULE_calculationUsageDeclaration = 487; - public static readonly RULE_emptyActionUsage_ = 488; - public static readonly RULE_emptyFeature_ = 489; - public static readonly RULE_emptyMultiplicity_ = 490; - public static readonly RULE_emptyUsage_ = 491; - public static readonly RULE_filterPackageImport = 492; - public static readonly RULE_nonFeatureChainPrimaryExpression = 493; - public static readonly RULE_portConjugation = 494; - public static readonly literalNames: (string | null)[] = [ null, "'about'", - "'abstract'", - "'accept'", - "'action'", - "'actor'", "'after'", - "'alias'", "'all'", - "'allocate'", - "'allocation'", - "'analysis'", - "'and'", "'as'", - "'assert'", - "'assign'", - "'assoc'", "'assume'", - "'at'", "'attribute'", - "'behavior'", - "'bind'", "'binding'", - "'bool'", "'by'", - "'calc'", "'case'", - "'chains'", - "'class'", "'classifier'", - "'comment'", - "'composite'", - "'concern'", - "'conjugate'", - "'conjugates'", - "'conjugation'", - "'connect'", - "'connection'", - "'connector'", - "'const'", "'constant'", - "'constraint'", - "'crosses'", - "'datatype'", - "'decide'", - "'def'", "'default'", - "'defined'", - "'dependency'", - "'derived'", - "'differences'", - "'disjoining'", - "'disjoint'", - "'do'", "'doc'", - "'else'", "'end'", - "'entry'", "'enum'", - "'event'", "'exhibit'", - "'exit'", "'expose'", - "'expr'", "'false'", - "'feature'", - "'featured'", - "'featuring'", - "'filter'", - "'first'", "'flow'", - "'for'", "'fork'", - "'frame'", "'from'", - "'function'", - "'hastype'", - "'if'", "'implies'", - "'import'", - "'in'", "'include'", - "'individual'", - "'inout'", "'interaction'", - "'interface'", - "'intersects'", - "'inv'", "'inverse'", - "'inverting'", - "'istype'", - "'item'", "'join'", - "'language'", - "'library'", - "'locale'", - "'loop'", "'member'", - "'merge'", "'message'", - "'meta'", "'metaclass'", - "'metadata'", - "'multiplicity'", - "'namespace'", - "'new'", "'nonunique'", - "'not'", "'null'", - "'objective'", - "'occurrence'", - "'of'", "'or'", - "'ordered'", - "'out'", "'package'", - "'parallel'", - "'part'", "'perform'", - "'port'", "'portion'", - "'predicate'", - "'private'", - "'protected'", - "'public'", - "'redefines'", - "'redefinition'", - "'ref'", "'references'", - "'render'", - "'rendering'", - "'rep'", "'require'", - "'requirement'", - "'return'", - "'satisfy'", - "'send'", "'snapshot'", - "'specialization'", - "'specializes'", - "'stakeholder'", - "'standard'", - "'state'", "'step'", - "'struct'", - "'subclassifier'", - "'subject'", - "'subset'", - "'subsets'", - "'subtype'", - "'succession'", - "'terminate'", - "'then'", "'timeslice'", - "'to'", "'transition'", - "'true'", "'type'", - "'typed'", "'typing'", - "'unions'", - "'until'", "'use'", - "'var'", "'variant'", - "'variation'", - "'verification'", - "'verify'", - "'via'", "'view'", - "'viewpoint'", - "'when'", "'while'", - "'xor'", "'!=='", - "'::>'", "':>>'", - "'==='", "'!='", - "'**'", "'->'", - "'..'", "'.?'", - "'::'", "':='", - "':>'", "'<='", - "'=='", "'=>'", - "'>='", "'??'", - "'@@'", "'#'", - "'$'", "'%'", - "'&'", "'('", - "')'", "'*'", - "'+'", "','", - "'-'", "'.'", - "'/'", "':'", - "';'", "'<'", - "'='", "'>'", - "'?'", "'@'", - "'['", "']'", - "'^'", "'{'", - "'|'", "'}'", - "'~'" ]; - public static readonly symbolicNames: (string | null)[] = [ null, "ABOUT", - "ABSTRACT", - "ACCEPT", "ACTION", - "ACTOR", "AFTER", - "ALIAS", "ALL", - "ALLOCATE", - "ALLOCATION", - "ANALYSIS", - "AND", "AS", - "ASSERT", "ASSIGN", - "ASSOC", "ASSUME", - "AT", "ATTRIBUTE", - "BEHAVIOR", - "BIND", "BINDING", - "BOOL", "BY", - "CALC", "CASE", - "CHAINS", "CLASS", - "CLASSIFIER", - "COMMENT", - "COMPOSITE", - "CONCERN", - "CONJUGATE", - "CONJUGATES", - "CONJUGATION", - "CONNECT", - "CONNECTION", - "CONNECTOR", - "CONST", "CONSTANT", - "CONSTRAINT", - "CROSSES", - "DATATYPE", - "DECIDE", "DEF", - "DEFAULT", - "DEFINED", - "DEPENDENCY", - "DERIVED", - "DIFFERENCES", - "DISJOINING", - "DISJOINT", - "DO", "DOC", - "ELSE", "END", - "ENTRY", "ENUM", - "EVENT", "EXHIBIT", - "EXIT", "EXPOSE", - "EXPR", "FALSE", - "FEATURE", - "FEATURED", - "FEATURING", - "FILTER", "FIRST", - "FLOW", "FOR", - "FORK", "FRAME", - "FROM", "FUNCTION", - "HASTYPE", - "IF", "IMPLIES", - "IMPORT", "IN", - "INCLUDE", - "INDIVIDUAL", - "INOUT", "INTERACTION", - "INTERFACE", - "INTERSECTS", - "INV", "INVERSE", - "INVERTING", - "ISTYPE", "ITEM", - "JOIN", "LANGUAGE", - "LIBRARY", - "LOCALE", "LOOP", - "MEMBER", "MERGE", - "MESSAGE", - "META", "METACLASS", - "METADATA", - "MULTIPLICITY", - "NAMESPACE", - "NEW", "NONUNIQUE", - "NOT", "NULL", - "OBJECTIVE", - "OCCURRENCE", - "OF", "OR", - "ORDERED", - "OUT", "PACKAGE", - "PARALLEL", - "PART", "PERFORM", - "PORT", "PORTION", - "PREDICATE", - "PRIVATE", - "PROTECTED", - "PUBLIC", "REDEFINES", - "REDEFINITION", - "REF", "REFERENCES", - "RENDER", "RENDERING", - "REP", "REQUIRE", - "REQUIREMENT", - "RETURN", "SATISFY", - "SEND", "SNAPSHOT", - "SPECIALIZATION", - "SPECIALIZES", - "STAKEHOLDER", - "STANDARD", - "STATE", "STEP", - "STRUCT", "SUBCLASSIFIER", - "SUBJECT", - "SUBSET", "SUBSETS", - "SUBTYPE", - "SUCCESSION", - "TERMINATE", - "THEN", "TIMESLICE", - "TO", "TRANSITION", - "TRUE", "TYPE", - "TYPED", "TYPING", - "UNIONS", "UNTIL", - "USE", "VAR", - "VARIANT", - "VARIATION", - "VERIFICATION", - "VERIFY", "VIA", - "VIEW", "VIEWPOINT", - "WHEN", "WHILE", - "XOR", "BANG_EQ_EQ", - "COLON_COLON_GT", - "COLON_GT_GT", - "EQ_EQ_EQ", - "BANG_EQ", - "STAR_STAR", - "ARROW", "DOT_DOT", - "DOT_QUESTION", - "COLON_COLON", - "COLON_EQ", - "COLON_GT", - "LE", "EQ_EQ", - "FAT_ARROW", - "GE", "QUESTION_QUESTION", - "AT_AT", "HASH", - "DOLLAR", "PERCENT", - "AMP", "LPAREN", - "RPAREN", "STAR", - "PLUS", "COMMA", - "MINUS", "DOT", - "SLASH", "COLON", - "SEMI", "LT", - "EQ", "GT", - "QUESTION", - "AT_SIGN", - "LBRACK", "RBRACK", - "CARET", "LBRACE", - "PIPE", "RBRACE", - "TILDE", "IDENTIFIER", - "STRING", "DOUBLE_STRING", - "INTEGER", - "REAL", "REGULAR_COMMENT", - "SINGLE_LINE_NOTE", - "WS" ]; - // tslint:disable:no-trailing-whitespace - public static readonly ruleNames: string[] = [ - "ownedExpression", "typeReference", "sequenceExpressionList", "baseExpression", - "nullExpression", "featureReferenceExpression", "metadataAccessExpression", - "invocationExpression", "constructorExpression", "bodyExpression", "argumentList", - "positionalArgumentList", "namedArgumentList", "namedArgument", "literalExpression", - "literalBoolean", "literalString", "literalInteger", "literalReal", "literalInfinity", - "argumentMember", "argumentExpressionMember", "name", "identification", - "relationshipBody", "relationshipOwnedElement", "ownedRelatedElement", - "dependency", "annotation", "ownedAnnotation", "annotatingElement", "comment", - "documentation", "textualRepresentation", "rootNamespace", "namespace", - "namespaceDeclaration", "namespaceBody", "namespaceBodyElement", "memberPrefix", - "visibilityIndicator", "namespaceMember", "nonFeatureMember", "namespaceFeatureMember", - "aliasMember", "qualifiedName", "importRule", "importDeclaration", "membershipImport", - "namespaceImport", "filterPackage", "filterPackageMember", "memberElement", - "nonFeatureElement", "featureElement", "type", "typePrefix", "typeDeclaration", - "specializationPart", "conjugationPart", "typeRelationshipPart", "disjoiningPart", - "unioningPart", "intersectingPart", "differencingPart", "typeBody", "typeBodyElement", - "specialization", "ownedSpecialization", "specificType", "generalType", - "conjugation", "ownedConjugation", "disjoining", "ownedDisjoining", "unioning", - "intersecting", "differencing", "featureMember", "typeFeatureMember", - "ownedFeatureMember", "classifier", "classifierDeclaration", "superclassingPart", - "subclassification", "ownedSubclassification", "feature", "endFeaturePrefix", - "basicFeaturePrefix", "featurePrefix", "ownedCrossFeatureMember", "ownedCrossFeature", - "featureDirection", "featureDeclaration", "featureIdentification", "featureRelationshipPart", - "chainingPart", "invertingPart", "typeFeaturingPart", "featureSpecializationPart", - "multiplicityPart", "featureSpecialization", "typings", "typedBy", "subsettings", - "subsets", "references", "crosses", "redefinitions", "redefines", "featureTyping", - "ownedFeatureTyping", "subsetting", "ownedSubsetting", "ownedReferenceSubsetting", - "ownedCrossSubsetting", "redefinition", "ownedRedefinition", "ownedFeatureChain", - "featureChain", "ownedFeatureChaining", "featureInverting", "ownedFeatureInverting", - "typeFeaturing", "ownedTypeFeaturing", "dataType", "class", "structure", - "association", "associationStructure", "connector", "connectorDeclaration", - "binaryConnectorDeclaration", "naryConnectorDeclaration", "connectorEndMember", - "connectorEnd", "ownedCrossMultiplicityMember", "ownedCrossMultiplicity", - "bindingConnector", "bindingConnectorDeclaration", "succession", "successionDeclaration", - "behavior", "step", "function", "functionBody", "functionBodyPart", "returnFeatureMember", - "resultExpressionMember", "expression", "predicate", "booleanExpression", - "invariant", "ownedExpressionMember", "metadataReference", "typeReferenceMember", - "typeResultMember", "referenceTyping", "emptyResultMember", "sequenceOperatorExpression", - "sequenceExpressionListMember", "bodyArgumentMember", "bodyArgument", - "bodyArgumentValue", "functionReferenceArgumentMember", "functionReferenceArgument", - "functionReferenceArgumentValue", "functionReferenceExpression", "functionReferenceMember", - "functionReference", "featureChainMember", "ownedFeatureChainMember", - "featureReferenceMember", "featureReference", "elementReferenceMember", - "constructorResultMember", "constructorResult", "instantiatedTypeMember", - "instantiatedTypeReference", "namedArgumentMember", "parameterRedefinition", - "expressionBodyMember", "expressionBody", "booleanValue", "realValue", - "interaction", "flow", "successionFlow", "flowDeclaration", "payloadFeatureMember", - "payloadFeature", "payloadFeatureSpecializationPart", "flowEndMember", - "flowEnd", "flowFeatureMember", "flowFeature", "flowFeatureRedefinition", - "valuePart", "featureValue", "multiplicity", "multiplicitySubset", "multiplicityRange", - "ownedMultiplicity", "ownedMultiplicityRange", "multiplicityBounds", "multiplicityExpressionMember", - "metaclass", "prefixMetadataAnnotation", "prefixMetadataMember", "prefixMetadataFeature", - "metadataFeature", "metadataFeatureDeclaration", "metadataBody", "metadataBodyElement", - "metadataBodyFeatureMember", "metadataBodyFeature", "package", "libraryPackage", - "packageDeclaration", "packageBody", "elementFilterMember", "dependencyDeclaration", - "annotatingMember", "packageBodyElement", "packageMember", "definitionElement", - "usageElement", "basicDefinitionPrefix", "definitionExtensionKeyword", - "definitionPrefix", "definition", "definitionDeclaration", "definitionBody", - "definitionBodyItem", "definitionBodyItemContent", "definitionMember", - "variantUsageMember", "nonOccurrenceUsageMember", "occurrenceUsageMember", - "structureUsageMember", "behaviorUsageMember", "refPrefix", "basicUsagePrefix", - "endUsagePrefix", "usageExtensionKeyword", "unextendedUsagePrefix", "usagePrefix", - "usage", "usageDeclaration", "usageCompletion", "usageBody", "defaultReferenceUsage", - "referenceUsage", "endFeatureUsage", "variantReference", "nonOccurrenceUsageElement", - "occurrenceUsageElement", "structureUsageElement", "behaviorUsageElement", - "variantUsageElement", "subclassificationPart", "attributeDefinition", - "attributeUsage", "enumerationDefinition", "enumerationBody", "enumerationUsageMember", - "enumeratedValue", "enumerationUsage", "occurrenceDefinitionPrefix", "occurrenceDefinition", - "individualDefinition", "emptyMultiplicityMember", "occurrenceUsagePrefix", - "occurrenceUsage", "individualUsage", "portionUsage", "portionKind", "eventOccurrenceUsage", - "sourceSuccessionMember", "sourceSuccession", "sourceEndMember", "sourceEnd", - "itemDefinition", "itemUsage", "partDefinition", "partUsage", "portDefinition", - "conjugatedPortDefinitionMember", "conjugatedPortDefinition", "portUsage", - "conjugatedPortTyping", "connectionDefinition", "connectionUsage", "connectorPart", - "binaryConnectorPart", "naryConnectorPart", "bindingConnectorAsUsage", - "successionAsUsage", "interfaceDefinition", "interfaceBody", "interfaceBodyItem", - "interfaceNonOccurrenceUsageMember", "interfaceNonOccurrenceUsageElement", - "interfaceOccurrenceUsageMember", "interfaceOccurrenceUsageElement", "defaultInterfaceEnd", - "interfaceUsage", "interfaceUsageDeclaration", "interfacePart", "binaryInterfacePart", - "naryInterfacePart", "interfaceEndMember", "interfaceEnd", "allocationDefinition", - "allocationUsage", "allocationUsageDeclaration", "flowDefinition", "message", - "messageDeclaration", "messageEventMember", "messageEvent", "flowUsage", - "successionFlowUsage", "flowPayloadFeatureMember", "flowPayloadFeature", - "flowEndSubsetting", "featureChainPrefix", "actionDefinition", "actionBody", - "actionBodyItem", "nonBehaviorBodyItem", "actionBehaviorMember", "initialNodeMember", - "actionNodeMember", "actionTargetSuccessionMember", "guardedSuccessionMember", - "actionUsage", "actionUsageDeclaration", "performActionUsage", "performActionUsageDeclaration", - "actionNode", "actionNodeUsageDeclaration", "actionNodePrefix", "controlNode", - "controlNodePrefix", "mergeNode", "decisionNode", "joinNode", "forkNode", - "acceptNode", "acceptNodeDeclaration", "acceptParameterPart", "payloadParameterMember", - "payloadParameter", "triggerValuePart", "triggerFeatureValue", "triggerExpression", - "sendNode", "sendNodeDeclaration", "senderReceiverPart", "nodeParameterMember", - "nodeParameter", "featureBinding", "emptyParameterMember", "assignmentNode", - "assignmentNodeDeclaration", "assignmentTargetMember", "assignmentTargetParameter", - "assignmentTargetBinding", "terminateNode", "ifNode", "expressionParameterMember", - "actionBodyParameterMember", "actionBodyParameter", "ifNodeParameterMember", - "whileLoopNode", "forLoopNode", "forVariableDeclarationMember", "forVariableDeclaration", - "actionTargetSuccession", "targetSuccession", "guardedTargetSuccession", - "defaultTargetSuccession", "guardedSuccession", "stateDefinition", "stateDefBody", - "stateBodyItem", "entryActionMember", "doActionMember", "exitActionMember", - "entryTransitionMember", "stateActionUsage", "statePerformActionUsage", - "stateAcceptActionUsage", "stateSendActionUsage", "stateAssignmentActionUsage", - "transitionUsageMember", "targetTransitionUsageMember", "stateUsage", - "stateUsageBody", "exhibitStateUsage", "transitionUsage", "targetTransitionUsage", - "triggerActionMember", "triggerAction", "guardExpressionMember", "effectBehaviorMember", - "effectBehaviorUsage", "transitionPerformActionUsage", "transitionAcceptActionUsage", - "transitionSendActionUsage", "transitionAssignmentActionUsage", "transitionSuccessionMember", - "transitionSuccession", "emptyEndMember", "calculationDefinition", "calculationUsage", - "calculationBody", "calculationBodyPart", "calculationBodyItem", "returnParameterMember", - "constraintDefinition", "constraintUsage", "assertConstraintUsage", "constraintUsageDeclaration", - "requirementDefinition", "requirementBody", "requirementBodyItem", "subjectMember", - "subjectUsage", "requirementConstraintMember", "requirementKind", "requirementConstraintUsage", - "framedConcernMember", "framedConcernUsage", "actorMember", "actorUsage", - "stakeholderMember", "stakeholderUsage", "requirementUsage", "satisfyRequirementUsage", - "satisfactionSubjectMember", "satisfactionParameter", "satisfactionFeatureValue", - "satisfactionReferenceExpression", "concernDefinition", "concernUsage", - "caseDefinition", "caseUsage", "caseBody", "caseBodyItem", "objectiveMember", - "objectiveRequirementUsage", "analysisCaseDefinition", "analysisCaseUsage", - "verificationCaseDefinition", "verificationCaseUsage", "requirementVerificationMember", - "requirementVerificationUsage", "useCaseDefinition", "useCaseUsage", "includeUseCaseUsage", - "viewDefinition", "viewDefinitionBody", "viewDefinitionBodyItem", "viewRenderingMember", - "viewRenderingUsage", "viewUsage", "viewBody", "viewBodyItem", "expose", - "membershipExpose", "namespaceExpose", "viewpointDefinition", "viewpointUsage", - "renderingDefinition", "renderingUsage", "metadataDefinition", "prefixMetadataUsage", - "metadataUsage", "metadataUsageDeclaration", "metadataBodyUsageMember", - "metadataBodyUsage", "extendedDefinition", "extendedUsage", "filterPackageImportDeclaration", - "namespaceImportDirect", "calculationUsageDeclaration", "emptyActionUsage_", - "emptyFeature_", "emptyMultiplicity_", "emptyUsage_", "filterPackageImport", - "nonFeatureChainPrimaryExpression", "portConjugation", - ]; - public get grammarFileName(): string { return "SysMLv2Parser.g4"; } - public get literalNames(): (string | null)[] { return SysMLv2Parser.literalNames; } - public get symbolicNames(): (string | null)[] { return SysMLv2Parser.symbolicNames; } - public get ruleNames(): string[] { return SysMLv2Parser.ruleNames; } - public get serializedATN(): number[] { return SysMLv2Parser._serializedATN; } - - protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { - return new FailedPredicateException(this, predicate, message); - } - - constructor(input: TokenStream) { - super(input); - this._interp = new ParserATNSimulator(this, SysMLv2Parser._ATN, SysMLv2Parser.DecisionsToDFA, new PredictionContextCache()); - } - - public ownedExpression(): OwnedExpressionContext; - public ownedExpression(_p: number): OwnedExpressionContext; - // @RuleVersion(0) - public ownedExpression(_p?: number): OwnedExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let _parentctx: ParserRuleContext = this._ctx; - let _parentState: number = this.state; - let localctx: OwnedExpressionContext = new OwnedExpressionContext(this, this._ctx, _parentState); - let _prevctx: OwnedExpressionContext = localctx; - let _startState: number = 0; - this.enterRecursionRule(localctx, 0, SysMLv2Parser.RULE_ownedExpression, _p); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(localctx, 1); - { - this.state = 1005; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 77: - { - this.state = 991; - this.match(SysMLv2Parser.IF); - this.state = 992; - this.ownedExpression(0); - this.state = 993; - this.match(SysMLv2Parser.QUESTION); - this.state = 994; - this.ownedExpression(0); - this.state = 995; - this.match(SysMLv2Parser.ELSE); - this.state = 996; - this.ownedExpression(28); - } - break; - case 107: - case 199: - case 201: - case 217: - { - this.state = 998; - _la = this._input.LA(1); - if(!(_la===107 || ((((_la - 199)) & ~0x1F) === 0 && ((1 << (_la - 199)) & 262149) !== 0))) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 999; - this.ownedExpression(14); - } - break; - case 191: - case 210: - { - this.state = 1000; - _la = this._input.LA(1); - if(!(_la===191 || _la===210)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1001; - this.typeReference(); - } - break; - case 8: - { - this.state = 1002; - this.match(SysMLv2Parser.ALL); - this.state = 1003; - this.typeReference(); - } - break; - case 64: - case 105: - case 108: - case 156: - case 193: - case 196: - case 198: - case 214: - case 218: - case 219: - case 220: - case 221: - case 222: - { - this.state = 1004; - this.baseExpression(); - } - break; - default: - throw new NoViableAltException(this); - } - this._ctx.stop = this._input.LT(-1); - this.state = 1088; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 5, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - _prevctx = localctx; - { - this.state = 1086; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 4, this._ctx) ) { - case 1: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1007; - if (!(this.precpred(this._ctx, 27))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 27)"); - } - this.state = 1008; - this.match(SysMLv2Parser.QUESTION_QUESTION); - this.state = 1009; - this.ownedExpression(28); - } - break; - case 2: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1010; - if (!(this.precpred(this._ctx, 26))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 26)"); - } - this.state = 1011; - this.match(SysMLv2Parser.IMPLIES); - this.state = 1012; - this.ownedExpression(27); - } - break; - case 3: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1013; - if (!(this.precpred(this._ctx, 25))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 25)"); - } - this.state = 1014; - this.match(SysMLv2Parser.OR); - this.state = 1015; - this.ownedExpression(26); - } - break; - case 4: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1016; - if (!(this.precpred(this._ctx, 24))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 24)"); - } - this.state = 1017; - this.match(SysMLv2Parser.AND); - this.state = 1018; - this.ownedExpression(25); - } - break; - case 5: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1019; - if (!(this.precpred(this._ctx, 23))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 23)"); - } - this.state = 1020; - this.match(SysMLv2Parser.XOR); - this.state = 1021; - this.ownedExpression(24); - } - break; - case 6: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1022; - if (!(this.precpred(this._ctx, 22))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 22)"); - } - this.state = 1023; - this.match(SysMLv2Parser.PIPE); - this.state = 1024; - this.ownedExpression(23); - } - break; - case 7: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1025; - if (!(this.precpred(this._ctx, 21))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 21)"); - } - this.state = 1026; - this.match(SysMLv2Parser.AMP); - this.state = 1027; - this.ownedExpression(22); - } - break; - case 8: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1028; - if (!(this.precpred(this._ctx, 20))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 20)"); - } - this.state = 1029; - _la = this._input.LA(1); - if(!(((((_la - 174)) & ~0x1F) === 0 && ((1 << (_la - 174)) & 8217) !== 0))) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1030; - this.ownedExpression(21); - } - break; - case 9: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1031; - if (!(this.precpred(this._ctx, 19))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 19)"); - } - this.state = 1032; - _la = this._input.LA(1); - if(!(((((_la - 186)) & ~0x1F) === 0 && ((1 << (_la - 186)) & 5242889) !== 0))) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1033; - this.ownedExpression(20); - } - break; - case 10: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1034; - if (!(this.precpred(this._ctx, 18))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 18)"); - } - this.state = 1035; - this.match(SysMLv2Parser.DOT_DOT); - this.state = 1036; - this.ownedExpression(19); - } - break; - case 11: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1037; - if (!(this.precpred(this._ctx, 17))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 17)"); - } - this.state = 1038; - _la = this._input.LA(1); - if(!(_la===199 || _la===201)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1039; - this.ownedExpression(18); - } - break; - case 12: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1040; - if (!(this.precpred(this._ctx, 16))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 16)"); - } - this.state = 1041; - _la = this._input.LA(1); - if(!(((((_la - 194)) & ~0x1F) === 0 && ((1 << (_la - 194)) & 529) !== 0))) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1042; - this.ownedExpression(17); - } - break; - case 13: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1043; - if (!(this.precpred(this._ctx, 15))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 15)"); - } - this.state = 1044; - _la = this._input.LA(1); - if(!(_la===179 || _la===213)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1045; - this.ownedExpression(15); - } - break; - case 14: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1046; - if (!(this.precpred(this._ctx, 12))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 12)"); - } - this.state = 1047; - _la = this._input.LA(1); - if(!(_la===76 || _la===90 || _la===210)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1048; - this.typeReference(); - } - break; - case 15: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1049; - if (!(this.precpred(this._ctx, 11))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 11)"); - } - this.state = 1050; - this.match(SysMLv2Parser.AS); - this.state = 1051; - this.typeReference(); - } - break; - case 16: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1052; - if (!(this.precpred(this._ctx, 10))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 10)"); - } - this.state = 1053; - this.match(SysMLv2Parser.AT_AT); - this.state = 1054; - this.typeReference(); - } - break; - case 17: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1055; - if (!(this.precpred(this._ctx, 9))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 9)"); - } - this.state = 1056; - this.match(SysMLv2Parser.META); - this.state = 1057; - this.typeReference(); - } - break; - case 18: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1058; - if (!(this.precpred(this._ctx, 8))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 8)"); - } - this.state = 1059; - this.match(SysMLv2Parser.LBRACK); - this.state = 1061; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || _la===64 || _la===77 || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 13) !== 0) || _la===156 || ((((_la - 191)) & ~0x1F) === 0 && ((1 << (_la - 191)) & 4236772773) !== 0)) { - { - this.state = 1060; - this.sequenceExpressionList(); - } - } - - this.state = 1063; - this.match(SysMLv2Parser.RBRACK); - } - break; - case 19: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1064; - if (!(this.precpred(this._ctx, 7))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 7)"); - } - this.state = 1065; - this.match(SysMLv2Parser.HASH); - this.state = 1066; - this.match(SysMLv2Parser.LPAREN); - this.state = 1068; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || _la===64 || _la===77 || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 13) !== 0) || _la===156 || ((((_la - 191)) & ~0x1F) === 0 && ((1 << (_la - 191)) & 4236772773) !== 0)) { - { - this.state = 1067; - this.sequenceExpressionList(); - } - } - - this.state = 1070; - this.match(SysMLv2Parser.RPAREN); - } - break; - case 20: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1071; - if (!(this.precpred(this._ctx, 6))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 6)"); - } - this.state = 1072; - this.argumentList(); - } - break; - case 21: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1073; - if (!(this.precpred(this._ctx, 5))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); - } - this.state = 1074; - this.match(SysMLv2Parser.DOT); - this.state = 1075; - this.qualifiedName(); - } - break; - case 22: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1076; - if (!(this.precpred(this._ctx, 4))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); - } - this.state = 1077; - this.match(SysMLv2Parser.DOT_QUESTION); - this.state = 1078; - this.bodyExpression(); - } - break; - case 23: - { - localctx = new OwnedExpressionContext(this, _parentctx, _parentState); - this.pushNewRecursionContext(localctx, _startState, SysMLv2Parser.RULE_ownedExpression); - this.state = 1079; - if (!(this.precpred(this._ctx, 3))) { - throw this.createFailedPredicateException("this.precpred(this._ctx, 3)"); - } - this.state = 1080; - this.match(SysMLv2Parser.ARROW); - this.state = 1081; - this.qualifiedName(); - this.state = 1084; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 214: - { - this.state = 1082; - this.bodyExpression(); - } - break; - case 196: - { - this.state = 1083; - this.argumentList(); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - } - } - } - this.state = 1090; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 5, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(_parentctx); - } - return localctx; - } - // @RuleVersion(0) - public typeReference(): TypeReferenceContext { - let localctx: TypeReferenceContext = new TypeReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 2, SysMLv2Parser.RULE_typeReference); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1091; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sequenceExpressionList(): SequenceExpressionListContext { - let localctx: SequenceExpressionListContext = new SequenceExpressionListContext(this, this._ctx, this.state); - this.enterRule(localctx, 4, SysMLv2Parser.RULE_sequenceExpressionList); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1093; - this.ownedExpression(0); - this.state = 1098; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1094; - this.match(SysMLv2Parser.COMMA); - this.state = 1095; - this.ownedExpression(0); - } - } - this.state = 1100; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public baseExpression(): BaseExpressionContext { - let localctx: BaseExpressionContext = new BaseExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 6, SysMLv2Parser.RULE_baseExpression); - let _la: number; - try { - this.state = 1116; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1101; - this.nullExpression(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1102; - this.literalExpression(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1103; - this.qualifiedName(); - this.state = 1107; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { - case 1: - { - this.state = 1104; - this.argumentList(); - } - break; - case 2: - { - this.state = 1105; - this.match(SysMLv2Parser.DOT); - this.state = 1106; - this.match(SysMLv2Parser.METADATA); - } - break; - } - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 1109; - this.constructorExpression(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 1110; - this.bodyExpression(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 1111; - this.match(SysMLv2Parser.LPAREN); - this.state = 1113; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || _la===64 || _la===77 || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 13) !== 0) || _la===156 || ((((_la - 191)) & ~0x1F) === 0 && ((1 << (_la - 191)) & 4236772773) !== 0)) { - { - this.state = 1112; - this.sequenceExpressionList(); - } - } - - this.state = 1115; - this.match(SysMLv2Parser.RPAREN); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nullExpression(): NullExpressionContext { - let localctx: NullExpressionContext = new NullExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 8, SysMLv2Parser.RULE_nullExpression); - try { - this.state = 1121; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 108: - this.enterOuterAlt(localctx, 1); - { - this.state = 1118; - this.match(SysMLv2Parser.NULL); - } - break; - case 196: - this.enterOuterAlt(localctx, 2); - { - this.state = 1119; - this.match(SysMLv2Parser.LPAREN); - this.state = 1120; - this.match(SysMLv2Parser.RPAREN); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureReferenceExpression(): FeatureReferenceExpressionContext { - let localctx: FeatureReferenceExpressionContext = new FeatureReferenceExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 10, SysMLv2Parser.RULE_featureReferenceExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1123; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataAccessExpression(): MetadataAccessExpressionContext { - let localctx: MetadataAccessExpressionContext = new MetadataAccessExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 12, SysMLv2Parser.RULE_metadataAccessExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1125; - this.qualifiedName(); - this.state = 1126; - this.match(SysMLv2Parser.DOT); - this.state = 1127; - this.match(SysMLv2Parser.METADATA); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public invocationExpression(): InvocationExpressionContext { - let localctx: InvocationExpressionContext = new InvocationExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 14, SysMLv2Parser.RULE_invocationExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1129; - this.qualifiedName(); - this.state = 1130; - this.argumentList(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public constructorExpression(): ConstructorExpressionContext { - let localctx: ConstructorExpressionContext = new ConstructorExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 16, SysMLv2Parser.RULE_constructorExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1132; - this.match(SysMLv2Parser.NEW); - this.state = 1133; - this.qualifiedName(); - this.state = 1134; - this.argumentList(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bodyExpression(): BodyExpressionContext { - let localctx: BodyExpressionContext = new BodyExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 18, SysMLv2Parser.RULE_bodyExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1136; - this.match(SysMLv2Parser.LBRACE); - this.state = 1137; - this.functionBodyPart(); - this.state = 1138; - this.match(SysMLv2Parser.RBRACE); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public argumentList(): ArgumentListContext { - let localctx: ArgumentListContext = new ArgumentListContext(this, this._ctx, this.state); - this.enterRule(localctx, 20, SysMLv2Parser.RULE_argumentList); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1140; - this.match(SysMLv2Parser.LPAREN); - this.state = 1143; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) { - case 1: - { - this.state = 1141; - this.positionalArgumentList(); - } - break; - case 2: - { - this.state = 1142; - this.namedArgumentList(); - } - break; - } - this.state = 1145; - this.match(SysMLv2Parser.RPAREN); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public positionalArgumentList(): PositionalArgumentListContext { - let localctx: PositionalArgumentListContext = new PositionalArgumentListContext(this, this._ctx, this.state); - this.enterRule(localctx, 22, SysMLv2Parser.RULE_positionalArgumentList); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1147; - this.ownedExpression(0); - this.state = 1152; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1148; - this.match(SysMLv2Parser.COMMA); - this.state = 1149; - this.ownedExpression(0); - } - } - this.state = 1154; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namedArgumentList(): NamedArgumentListContext { - let localctx: NamedArgumentListContext = new NamedArgumentListContext(this, this._ctx, this.state); - this.enterRule(localctx, 24, SysMLv2Parser.RULE_namedArgumentList); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1155; - this.namedArgument(); - this.state = 1160; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1156; - this.match(SysMLv2Parser.COMMA); - this.state = 1157; - this.namedArgument(); - } - } - this.state = 1162; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namedArgument(): NamedArgumentContext { - let localctx: NamedArgumentContext = new NamedArgumentContext(this, this._ctx, this.state); - this.enterRule(localctx, 26, SysMLv2Parser.RULE_namedArgument); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1163; - this.qualifiedName(); - this.state = 1164; - this.match(SysMLv2Parser.EQ); - this.state = 1165; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public literalExpression(): LiteralExpressionContext { - let localctx: LiteralExpressionContext = new LiteralExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 28, SysMLv2Parser.RULE_literalExpression); - try { - this.state = 1172; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 64: - case 156: - this.enterOuterAlt(localctx, 1); - { - this.state = 1167; - this.literalBoolean(); - } - break; - case 220: - this.enterOuterAlt(localctx, 2); - { - this.state = 1168; - this.literalString(); - } - break; - case 221: - this.enterOuterAlt(localctx, 3); - { - this.state = 1169; - this.literalInteger(); - } - break; - case 222: - this.enterOuterAlt(localctx, 4); - { - this.state = 1170; - this.literalReal(); - } - break; - case 198: - this.enterOuterAlt(localctx, 5); - { - this.state = 1171; - this.literalInfinity(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public literalBoolean(): LiteralBooleanContext { - let localctx: LiteralBooleanContext = new LiteralBooleanContext(this, this._ctx, this.state); - this.enterRule(localctx, 30, SysMLv2Parser.RULE_literalBoolean); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1174; - _la = this._input.LA(1); - if(!(_la===64 || _la===156)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public literalString(): LiteralStringContext { - let localctx: LiteralStringContext = new LiteralStringContext(this, this._ctx, this.state); - this.enterRule(localctx, 32, SysMLv2Parser.RULE_literalString); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1176; - this.match(SysMLv2Parser.DOUBLE_STRING); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public literalInteger(): LiteralIntegerContext { - let localctx: LiteralIntegerContext = new LiteralIntegerContext(this, this._ctx, this.state); - this.enterRule(localctx, 34, SysMLv2Parser.RULE_literalInteger); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1178; - this.match(SysMLv2Parser.INTEGER); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public literalReal(): LiteralRealContext { - let localctx: LiteralRealContext = new LiteralRealContext(this, this._ctx, this.state); - this.enterRule(localctx, 36, SysMLv2Parser.RULE_literalReal); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1180; - this.match(SysMLv2Parser.REAL); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public literalInfinity(): LiteralInfinityContext { - let localctx: LiteralInfinityContext = new LiteralInfinityContext(this, this._ctx, this.state); - this.enterRule(localctx, 38, SysMLv2Parser.RULE_literalInfinity); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1182; - this.match(SysMLv2Parser.STAR); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public argumentMember(): ArgumentMemberContext { - let localctx: ArgumentMemberContext = new ArgumentMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 40, SysMLv2Parser.RULE_argumentMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1184; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public argumentExpressionMember(): ArgumentExpressionMemberContext { - let localctx: ArgumentExpressionMemberContext = new ArgumentExpressionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 42, SysMLv2Parser.RULE_argumentExpressionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1186; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public name(): NameContext { - let localctx: NameContext = new NameContext(this, this._ctx, this.state); - this.enterRule(localctx, 44, SysMLv2Parser.RULE_name); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1188; - _la = this._input.LA(1); - if(!(_la===218 || _la===219)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public identification(): IdentificationContext { - let localctx: IdentificationContext = new IdentificationContext(this, this._ctx, this.state); - this.enterRule(localctx, 46, SysMLv2Parser.RULE_identification); - try { - this.state = 1200; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 15, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1190; - this.match(SysMLv2Parser.LT); - this.state = 1191; - this.name(); - this.state = 1192; - this.match(SysMLv2Parser.GT); - this.state = 1193; - this.name(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1195; - this.match(SysMLv2Parser.LT); - this.state = 1196; - this.name(); - this.state = 1197; - this.match(SysMLv2Parser.GT); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1199; - this.name(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public relationshipBody(): RelationshipBodyContext { - let localctx: RelationshipBodyContext = new RelationshipBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 48, SysMLv2Parser.RULE_relationshipBody); - let _la: number; - try { - this.state = 1219; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 18, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1202; - this.match(SysMLv2Parser.SEMI); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1203; - this.match(SysMLv2Parser.LBRACE); - this.state = 1207; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4040229124) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1085130343) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 1909228581) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 1259892783) !== 0) || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 37232361) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 2684756995) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 9091) !== 0)) { - { - { - this.state = 1204; - this.relationshipOwnedElement(); - } - } - this.state = 1209; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1210; - this.match(SysMLv2Parser.RBRACE); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1211; - this.match(SysMLv2Parser.LBRACE); - this.state = 1215; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===30 || _la===54 || ((((_la - 93)) & ~0x1F) === 0 && ((1 << (_la - 93)) & 517) !== 0) || _la===131 || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 2147745793) !== 0)) { - { - { - this.state = 1212; - this.ownedAnnotation(); - } - } - this.state = 1217; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1218; - this.match(SysMLv2Parser.RBRACE); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public relationshipOwnedElement(): RelationshipOwnedElementContext { - let localctx: RelationshipOwnedElementContext = new RelationshipOwnedElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 50, SysMLv2Parser.RULE_relationshipOwnedElement); - try { - this.state = 1223; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 19, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1221; - this.ownedRelatedElement(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1222; - this.ownedAnnotation(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedRelatedElement(): OwnedRelatedElementContext { - let localctx: OwnedRelatedElementContext = new OwnedRelatedElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 52, SysMLv2Parser.RULE_ownedRelatedElement); - try { - this.state = 1227; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 20, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1225; - this.nonFeatureElement(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1226; - this.featureElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public dependency(): DependencyContext { - let localctx: DependencyContext = new DependencyContext(this, this._ctx, this.state); - this.enterRule(localctx, 54, SysMLv2Parser.RULE_dependency); - let _la: number; - try { - this.state = 1271; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 27, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1232; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 1229; - this.prefixMetadataAnnotation(); - } - } - this.state = 1234; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1235; - this.match(SysMLv2Parser.DEPENDENCY); - this.state = 1240; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 23, this._ctx) ) { - case 1: - { - this.state = 1237; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1236; - this.identification(); - } - } - - this.state = 1239; - this.match(SysMLv2Parser.FROM); - } - break; - } - this.state = 1242; - this.qualifiedName(); - this.state = 1247; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1243; - this.match(SysMLv2Parser.COMMA); - this.state = 1244; - this.qualifiedName(); - } - } - this.state = 1249; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1250; - this.match(SysMLv2Parser.TO); - this.state = 1251; - this.qualifiedName(); - this.state = 1256; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1252; - this.match(SysMLv2Parser.COMMA); - this.state = 1253; - this.qualifiedName(); - } - } - this.state = 1258; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1259; - this.relationshipBody(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1264; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 1261; - this.prefixMetadataAnnotation(); - } - } - this.state = 1266; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1267; - this.match(SysMLv2Parser.DEPENDENCY); - this.state = 1268; - this.dependencyDeclaration(); - this.state = 1269; - this.relationshipBody(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public annotation(): AnnotationContext { - let localctx: AnnotationContext = new AnnotationContext(this, this._ctx, this.state); - this.enterRule(localctx, 56, SysMLv2Parser.RULE_annotation); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1273; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedAnnotation(): OwnedAnnotationContext { - let localctx: OwnedAnnotationContext = new OwnedAnnotationContext(this, this._ctx, this.state); - this.enterRule(localctx, 58, SysMLv2Parser.RULE_ownedAnnotation); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1275; - this.annotatingElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public annotatingElement(): AnnotatingElementContext { - let localctx: AnnotatingElementContext = new AnnotatingElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 60, SysMLv2Parser.RULE_annotatingElement); - try { - this.state = 1281; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 30: - case 95: - case 223: - this.enterOuterAlt(localctx, 1); - { - this.state = 1277; - this.comment(); - } - break; - case 54: - this.enterOuterAlt(localctx, 2); - { - this.state = 1278; - this.documentation(); - } - break; - case 93: - case 131: - this.enterOuterAlt(localctx, 3); - { - this.state = 1279; - this.textualRepresentation(); - } - break; - case 102: - case 192: - case 210: - this.enterOuterAlt(localctx, 4); - { - this.state = 1280; - this.metadataFeature(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public comment(): CommentContext { - let localctx: CommentContext = new CommentContext(this, this._ctx, this.state); - this.enterRule(localctx, 62, SysMLv2Parser.RULE_comment); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1298; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===30) { - { - this.state = 1283; - this.match(SysMLv2Parser.COMMENT); - this.state = 1285; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1284; - this.identification(); - } - } - - this.state = 1296; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===1) { - { - this.state = 1287; - this.match(SysMLv2Parser.ABOUT); - this.state = 1288; - this.annotation(); - this.state = 1293; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1289; - this.match(SysMLv2Parser.COMMA); - this.state = 1290; - this.annotation(); - } - } - this.state = 1295; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - } - } - - this.state = 1302; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===95) { - { - this.state = 1300; - this.match(SysMLv2Parser.LOCALE); - this.state = 1301; - this.match(SysMLv2Parser.DOUBLE_STRING); - } - } - - this.state = 1304; - this.match(SysMLv2Parser.REGULAR_COMMENT); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public documentation(): DocumentationContext { - let localctx: DocumentationContext = new DocumentationContext(this, this._ctx, this.state); - this.enterRule(localctx, 64, SysMLv2Parser.RULE_documentation); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1306; - this.match(SysMLv2Parser.DOC); - this.state = 1308; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1307; - this.identification(); - } - } - - this.state = 1312; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===95) { - { - this.state = 1310; - this.match(SysMLv2Parser.LOCALE); - this.state = 1311; - this.match(SysMLv2Parser.DOUBLE_STRING); - } - } - - this.state = 1314; - this.match(SysMLv2Parser.REGULAR_COMMENT); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public textualRepresentation(): TextualRepresentationContext { - let localctx: TextualRepresentationContext = new TextualRepresentationContext(this, this._ctx, this.state); - this.enterRule(localctx, 66, SysMLv2Parser.RULE_textualRepresentation); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1320; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===131) { - { - this.state = 1316; - this.match(SysMLv2Parser.REP); - this.state = 1318; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1317; - this.identification(); - } - } - - } - } - - this.state = 1322; - this.match(SysMLv2Parser.LANGUAGE); - this.state = 1323; - this.match(SysMLv2Parser.DOUBLE_STRING); - this.state = 1324; - this.match(SysMLv2Parser.REGULAR_COMMENT); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public rootNamespace(): RootNamespaceContext { - let localctx: RootNamespaceContext = new RootNamespaceContext(this, this._ctx, this.state); - this.enterRule(localctx, 68, SysMLv2Parser.RULE_rootNamespace); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1329; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490981169) !== 0) || ((((_la - 68)) & ~0x1F) === 0 && ((1 << (_la - 68)) & 2390947847) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3364135109) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 1326; - this.packageBodyElement(); - } - } - this.state = 1331; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1332; - this.match(SysMLv2Parser.EOF); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespace(): NamespaceContext { - let localctx: NamespaceContext = new NamespaceContext(this, this._ctx, this.state); - this.enterRule(localctx, 70, SysMLv2Parser.RULE_namespace); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1337; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 1334; - this.prefixMetadataMember(); - } - } - this.state = 1339; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1340; - this.namespaceDeclaration(); - this.state = 1341; - this.namespaceBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceDeclaration(): NamespaceDeclarationContext { - let localctx: NamespaceDeclarationContext = new NamespaceDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 72, SysMLv2Parser.RULE_namespaceDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1343; - this.match(SysMLv2Parser.NAMESPACE); - this.state = 1345; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1344; - this.identification(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceBody(): NamespaceBodyContext { - let localctx: NamespaceBodyContext = new NamespaceBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 74, SysMLv2Parser.RULE_namespaceBody); - let _la: number; - try { - this.state = 1356; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 1347; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 1348; - this.match(SysMLv2Parser.LBRACE); - this.state = 1352; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4040229252) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1085130343) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 1909244965) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 1274572847) !== 0) || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 37232361) !== 0) || ((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 2684756995) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 9091) !== 0)) { - { - { - this.state = 1349; - this.namespaceBodyElement(); - } - } - this.state = 1354; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1355; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceBodyElement(): NamespaceBodyElementContext { - let localctx: NamespaceBodyElementContext = new NamespaceBodyElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 76, SysMLv2Parser.RULE_namespaceBodyElement); - try { - this.state = 1361; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 43, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1358; - this.namespaceMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1359; - this.aliasMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1360; - this.importRule(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public memberPrefix(): MemberPrefixContext { - let localctx: MemberPrefixContext = new MemberPrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 78, SysMLv2Parser.RULE_memberPrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1364; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 122)) & ~0x1F) === 0 && ((1 << (_la - 122)) & 7) !== 0)) { - { - this.state = 1363; - this.visibilityIndicator(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public visibilityIndicator(): VisibilityIndicatorContext { - let localctx: VisibilityIndicatorContext = new VisibilityIndicatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 80, SysMLv2Parser.RULE_visibilityIndicator); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1366; - _la = this._input.LA(1); - if(!(((((_la - 122)) & ~0x1F) === 0 && ((1 << (_la - 122)) & 7) !== 0))) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceMember(): NamespaceMemberContext { - let localctx: NamespaceMemberContext = new NamespaceMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 82, SysMLv2Parser.RULE_namespaceMember); - try { - this.state = 1370; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 45, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1368; - this.nonFeatureMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1369; - this.namespaceFeatureMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nonFeatureMember(): NonFeatureMemberContext { - let localctx: NonFeatureMemberContext = new NonFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 84, SysMLv2Parser.RULE_nonFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1372; - this.memberPrefix(); - this.state = 1373; - this.memberElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceFeatureMember(): NamespaceFeatureMemberContext { - let localctx: NamespaceFeatureMemberContext = new NamespaceFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 86, SysMLv2Parser.RULE_namespaceFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1375; - this.memberPrefix(); - this.state = 1376; - this.featureElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public aliasMember(): AliasMemberContext { - let localctx: AliasMemberContext = new AliasMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 88, SysMLv2Parser.RULE_aliasMember); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1378; - this.memberPrefix(); - this.state = 1379; - this.match(SysMLv2Parser.ALIAS); - this.state = 1384; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===206) { - { - this.state = 1380; - this.match(SysMLv2Parser.LT); - this.state = 1381; - this.name(); - this.state = 1382; - this.match(SysMLv2Parser.GT); - } - } - - this.state = 1387; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===218 || _la===219) { - { - this.state = 1386; - this.name(); - } - } - - this.state = 1389; - this.match(SysMLv2Parser.FOR); - this.state = 1390; - this.qualifiedName(); - this.state = 1391; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public qualifiedName(): QualifiedNameContext { - let localctx: QualifiedNameContext = new QualifiedNameContext(this, this._ctx, this.state); - this.enterRule(localctx, 90, SysMLv2Parser.RULE_qualifiedName); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(localctx, 1); - { - this.state = 1395; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===193) { - { - this.state = 1393; - this.match(SysMLv2Parser.DOLLAR); - this.state = 1394; - this.match(SysMLv2Parser.COLON_COLON); - } - } - - this.state = 1402; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 1397; - this.name(); - this.state = 1398; - this.match(SysMLv2Parser.COLON_COLON); - } - } - } - this.state = 1404; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); - } - this.state = 1405; - this.name(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public importRule(): ImportRuleContext { - let localctx: ImportRuleContext = new ImportRuleContext(this, this._ctx, this.state); - this.enterRule(localctx, 92, SysMLv2Parser.RULE_importRule); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1408; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 122)) & ~0x1F) === 0 && ((1 << (_la - 122)) & 7) !== 0)) { - { - this.state = 1407; - this.visibilityIndicator(); - } - } - - this.state = 1410; - this.match(SysMLv2Parser.IMPORT); - this.state = 1412; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 1411; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 1414; - this.importDeclaration(); - this.state = 1415; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public importDeclaration(): ImportDeclarationContext { - let localctx: ImportDeclarationContext = new ImportDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 94, SysMLv2Parser.RULE_importDeclaration); - try { - this.state = 1419; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 52, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1417; - this.membershipImport(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1418; - this.namespaceImport(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public membershipImport(): MembershipImportContext { - let localctx: MembershipImportContext = new MembershipImportContext(this, this._ctx, this.state); - this.enterRule(localctx, 96, SysMLv2Parser.RULE_membershipImport); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1421; - this.qualifiedName(); - this.state = 1424; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 1422; - this.match(SysMLv2Parser.COLON_COLON); - this.state = 1423; - this.match(SysMLv2Parser.STAR_STAR); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceImport(): NamespaceImportContext { - let localctx: NamespaceImportContext = new NamespaceImportContext(this, this._ctx, this.state); - this.enterRule(localctx, 98, SysMLv2Parser.RULE_namespaceImport); - let _la: number; - try { - this.state = 1434; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 55, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1426; - this.qualifiedName(); - this.state = 1427; - this.match(SysMLv2Parser.COLON_COLON); - this.state = 1428; - this.match(SysMLv2Parser.STAR); - this.state = 1431; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 1429; - this.match(SysMLv2Parser.COLON_COLON); - this.state = 1430; - this.match(SysMLv2Parser.STAR_STAR); - } - } - - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1433; - this.filterPackage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public filterPackage(): FilterPackageContext { - let localctx: FilterPackageContext = new FilterPackageContext(this, this._ctx, this.state); - this.enterRule(localctx, 100, SysMLv2Parser.RULE_filterPackage); - let _la: number; - try { - this.state = 1448; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1436; - this.filterPackageImportDeclaration(); - this.state = 1438; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 1437; - this.filterPackageMember(); - } - } - this.state = 1440; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===211); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1442; - this.filterPackageImport(); - this.state = 1444; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 1443; - this.filterPackageMember(); - } - } - this.state = 1446; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===211); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public filterPackageMember(): FilterPackageMemberContext { - let localctx: FilterPackageMemberContext = new FilterPackageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 102, SysMLv2Parser.RULE_filterPackageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1450; - this.match(SysMLv2Parser.LBRACK); - this.state = 1451; - this.ownedExpression(0); - this.state = 1452; - this.match(SysMLv2Parser.RBRACK); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public memberElement(): MemberElementContext { - let localctx: MemberElementContext = new MemberElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 104, SysMLv2Parser.RULE_memberElement); - try { - this.state = 1456; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 59, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1454; - this.annotatingElement(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1455; - this.nonFeatureElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nonFeatureElement(): NonFeatureElementContext { - let localctx: NonFeatureElementContext = new NonFeatureElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 106, SysMLv2Parser.RULE_nonFeatureElement); - try { - this.state = 1484; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 60, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1458; - this.dependency(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1459; - this.namespace(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1460; - this.type_(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 1461; - this.classifier(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 1462; - this.dataType(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 1463; - this.class_(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 1464; - this.structure(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 1465; - this.metaclass(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 1466; - this.association(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 1467; - this.associationStructure(); - } - break; - case 11: - this.enterOuterAlt(localctx, 11); - { - this.state = 1468; - this.interaction(); - } - break; - case 12: - this.enterOuterAlt(localctx, 12); - { - this.state = 1469; - this.behavior(); - } - break; - case 13: - this.enterOuterAlt(localctx, 13); - { - this.state = 1470; - this.function_(); - } - break; - case 14: - this.enterOuterAlt(localctx, 14); - { - this.state = 1471; - this.predicate(); - } - break; - case 15: - this.enterOuterAlt(localctx, 15); - { - this.state = 1472; - this.multiplicity(); - } - break; - case 16: - this.enterOuterAlt(localctx, 16); - { - this.state = 1473; - this.package_(); - } - break; - case 17: - this.enterOuterAlt(localctx, 17); - { - this.state = 1474; - this.libraryPackage(); - } - break; - case 18: - this.enterOuterAlt(localctx, 18); - { - this.state = 1475; - this.specialization(); - } - break; - case 19: - this.enterOuterAlt(localctx, 19); - { - this.state = 1476; - this.conjugation(); - } - break; - case 20: - this.enterOuterAlt(localctx, 20); - { - this.state = 1477; - this.subclassification(); - } - break; - case 21: - this.enterOuterAlt(localctx, 21); - { - this.state = 1478; - this.disjoining(); - } - break; - case 22: - this.enterOuterAlt(localctx, 22); - { - this.state = 1479; - this.featureInverting(); - } - break; - case 23: - this.enterOuterAlt(localctx, 23); - { - this.state = 1480; - this.featureTyping(); - } - break; - case 24: - this.enterOuterAlt(localctx, 24); - { - this.state = 1481; - this.subsetting(); - } - break; - case 25: - this.enterOuterAlt(localctx, 25); - { - this.state = 1482; - this.redefinition(); - } - break; - case 26: - this.enterOuterAlt(localctx, 26); - { - this.state = 1483; - this.typeFeaturing(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureElement(): FeatureElementContext { - let localctx: FeatureElementContext = new FeatureElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 108, SysMLv2Parser.RULE_featureElement); - try { - this.state = 1496; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 61, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1486; - this.feature(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1487; - this.step(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1488; - this.expression(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 1489; - this.booleanExpression(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 1490; - this.invariant(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 1491; - this.connector(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 1492; - this.bindingConnector(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 1493; - this.succession(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 1494; - this.flow(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 1495; - this.successionFlow(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public type_(): TypeContext { - let localctx: TypeContext = new TypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 110, SysMLv2Parser.RULE_type); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1498; - this.typePrefix(); - this.state = 1499; - this.match(SysMLv2Parser.TYPE); - this.state = 1500; - this.typeDeclaration(); - this.state = 1501; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typePrefix(): TypePrefixContext { - let localctx: TypePrefixContext = new TypePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 112, SysMLv2Parser.RULE_typePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1504; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2) { - { - this.state = 1503; - this.match(SysMLv2Parser.ABSTRACT); - } - } - - this.state = 1509; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 1506; - this.prefixMetadataMember(); - } - } - this.state = 1511; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeDeclaration(): TypeDeclarationContext { - let localctx: TypeDeclarationContext = new TypeDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 114, SysMLv2Parser.RULE_typeDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1513; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 1512; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 1516; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1515; - this.identification(); - } - } - - this.state = 1519; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===211) { - { - this.state = 1518; - this.ownedMultiplicity(); - } - } - - this.state = 1523; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - this.state = 1523; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 139: - case 185: - { - this.state = 1521; - this.specializationPart(); - } - break; - case 34: - case 217: - { - this.state = 1522; - this.conjugationPart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - this.state = 1525; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===34 || _la===139 || _la===185 || _la===217); - this.state = 1530; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===50 || _la===52 || _la===86 || _la===160) { - { - { - this.state = 1527; - this.typeRelationshipPart(); - } - } - this.state = 1532; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public specializationPart(): SpecializationPartContext { - let localctx: SpecializationPartContext = new SpecializationPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 116, SysMLv2Parser.RULE_specializationPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1533; - _la = this._input.LA(1); - if(!(_la===139 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1534; - this.ownedSpecialization(); - this.state = 1539; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1535; - this.match(SysMLv2Parser.COMMA); - this.state = 1536; - this.ownedSpecialization(); - } - } - this.state = 1541; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public conjugationPart(): ConjugationPartContext { - let localctx: ConjugationPartContext = new ConjugationPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 118, SysMLv2Parser.RULE_conjugationPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1542; - _la = this._input.LA(1); - if(!(_la===34 || _la===217)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1543; - this.ownedConjugation(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeRelationshipPart(): TypeRelationshipPartContext { - let localctx: TypeRelationshipPartContext = new TypeRelationshipPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 120, SysMLv2Parser.RULE_typeRelationshipPart); - try { - this.state = 1549; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 52: - this.enterOuterAlt(localctx, 1); - { - this.state = 1545; - this.disjoiningPart(); - } - break; - case 160: - this.enterOuterAlt(localctx, 2); - { - this.state = 1546; - this.unioningPart(); - } - break; - case 86: - this.enterOuterAlt(localctx, 3); - { - this.state = 1547; - this.intersectingPart(); - } - break; - case 50: - this.enterOuterAlt(localctx, 4); - { - this.state = 1548; - this.differencingPart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public disjoiningPart(): DisjoiningPartContext { - let localctx: DisjoiningPartContext = new DisjoiningPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 122, SysMLv2Parser.RULE_disjoiningPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1551; - this.match(SysMLv2Parser.DISJOINT); - this.state = 1552; - this.match(SysMLv2Parser.FROM); - this.state = 1553; - this.ownedDisjoining(); - this.state = 1558; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1554; - this.match(SysMLv2Parser.COMMA); - this.state = 1555; - this.ownedDisjoining(); - } - } - this.state = 1560; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public unioningPart(): UnioningPartContext { - let localctx: UnioningPartContext = new UnioningPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 124, SysMLv2Parser.RULE_unioningPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1561; - this.match(SysMLv2Parser.UNIONS); - this.state = 1562; - this.unioning(); - this.state = 1567; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1563; - this.match(SysMLv2Parser.COMMA); - this.state = 1564; - this.unioning(); - } - } - this.state = 1569; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public intersectingPart(): IntersectingPartContext { - let localctx: IntersectingPartContext = new IntersectingPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 126, SysMLv2Parser.RULE_intersectingPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1570; - this.match(SysMLv2Parser.INTERSECTS); - this.state = 1571; - this.intersecting(); - this.state = 1576; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1572; - this.match(SysMLv2Parser.COMMA); - this.state = 1573; - this.intersecting(); - } - } - this.state = 1578; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public differencingPart(): DifferencingPartContext { - let localctx: DifferencingPartContext = new DifferencingPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 128, SysMLv2Parser.RULE_differencingPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1579; - this.match(SysMLv2Parser.DIFFERENCES); - this.state = 1580; - this.differencing(); - this.state = 1585; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1581; - this.match(SysMLv2Parser.COMMA); - this.state = 1582; - this.differencing(); - } - } - this.state = 1587; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeBody(): TypeBodyContext { - let localctx: TypeBodyContext = new TypeBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 130, SysMLv2Parser.RULE_typeBody); - let _la: number; - try { - this.state = 1597; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 1588; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 1589; - this.match(SysMLv2Parser.LBRACE); - this.state = 1593; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4040229252) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1085130343) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 1909244965) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 3213296369) !== 0) || ((((_la - 131)) & ~0x1F) === 0 && ((1 << (_la - 131)) & 470774913) !== 0) || ((((_la - 163)) & ~0x1F) === 0 && ((1 << (_la - 163)) & 1648373761) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 581829) !== 0)) { - { - { - this.state = 1590; - this.typeBodyElement(); - } - } - this.state = 1595; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1596; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeBodyElement(): TypeBodyElementContext { - let localctx: TypeBodyElementContext = new TypeBodyElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 132, SysMLv2Parser.RULE_typeBodyElement); - try { - this.state = 1603; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 78, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1599; - this.nonFeatureMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1600; - this.featureMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 1601; - this.aliasMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 1602; - this.importRule(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public specialization(): SpecializationContext { - let localctx: SpecializationContext = new SpecializationContext(this, this._ctx, this.state); - this.enterRule(localctx, 134, SysMLv2Parser.RULE_specialization); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1609; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===138) { - { - this.state = 1605; - this.match(SysMLv2Parser.SPECIALIZATION); - this.state = 1607; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1606; - this.identification(); - } - } - - } - } - - this.state = 1611; - this.match(SysMLv2Parser.SUBTYPE); - this.state = 1612; - this.specificType(); - this.state = 1613; - _la = this._input.LA(1); - if(!(_la===139 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1614; - this.generalType(); - this.state = 1615; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedSpecialization(): OwnedSpecializationContext { - let localctx: OwnedSpecializationContext = new OwnedSpecializationContext(this, this._ctx, this.state); - this.enterRule(localctx, 136, SysMLv2Parser.RULE_ownedSpecialization); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1617; - this.generalType(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public specificType(): SpecificTypeContext { - let localctx: SpecificTypeContext = new SpecificTypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 138, SysMLv2Parser.RULE_specificType); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1619; - this.qualifiedName(); - this.state = 1624; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1620; - this.match(SysMLv2Parser.DOT); - this.state = 1621; - this.qualifiedName(); - } - } - this.state = 1626; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public generalType(): GeneralTypeContext { - let localctx: GeneralTypeContext = new GeneralTypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 140, SysMLv2Parser.RULE_generalType); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1627; - this.qualifiedName(); - this.state = 1632; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1628; - this.match(SysMLv2Parser.DOT); - this.state = 1629; - this.qualifiedName(); - } - } - this.state = 1634; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public conjugation(): ConjugationContext { - let localctx: ConjugationContext = new ConjugationContext(this, this._ctx, this.state); - this.enterRule(localctx, 142, SysMLv2Parser.RULE_conjugation); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1639; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===35) { - { - this.state = 1635; - this.match(SysMLv2Parser.CONJUGATION); - this.state = 1637; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1636; - this.identification(); - } - } - - } - } - - this.state = 1641; - this.match(SysMLv2Parser.CONJUGATE); - this.state = 1642; - this.qualifiedName(); - this.state = 1647; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1643; - this.match(SysMLv2Parser.DOT); - this.state = 1644; - this.qualifiedName(); - } - } - this.state = 1649; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1650; - _la = this._input.LA(1); - if(!(_la===34 || _la===217)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1651; - this.qualifiedName(); - this.state = 1656; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1652; - this.match(SysMLv2Parser.DOT); - this.state = 1653; - this.qualifiedName(); - } - } - this.state = 1658; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1659; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedConjugation(): OwnedConjugationContext { - let localctx: OwnedConjugationContext = new OwnedConjugationContext(this, this._ctx, this.state); - this.enterRule(localctx, 144, SysMLv2Parser.RULE_ownedConjugation); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1661; - this.qualifiedName(); - this.state = 1666; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1662; - this.match(SysMLv2Parser.DOT); - this.state = 1663; - this.qualifiedName(); - } - } - this.state = 1668; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public disjoining(): DisjoiningContext { - let localctx: DisjoiningContext = new DisjoiningContext(this, this._ctx, this.state); - this.enterRule(localctx, 146, SysMLv2Parser.RULE_disjoining); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1673; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===51) { - { - this.state = 1669; - this.match(SysMLv2Parser.DISJOINING); - this.state = 1671; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1670; - this.identification(); - } - } - - } - } - - this.state = 1675; - this.match(SysMLv2Parser.DISJOINT); - this.state = 1676; - this.qualifiedName(); - this.state = 1681; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1677; - this.match(SysMLv2Parser.DOT); - this.state = 1678; - this.qualifiedName(); - } - } - this.state = 1683; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1684; - this.match(SysMLv2Parser.FROM); - this.state = 1685; - this.qualifiedName(); - this.state = 1690; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1686; - this.match(SysMLv2Parser.DOT); - this.state = 1687; - this.qualifiedName(); - } - } - this.state = 1692; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 1693; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedDisjoining(): OwnedDisjoiningContext { - let localctx: OwnedDisjoiningContext = new OwnedDisjoiningContext(this, this._ctx, this.state); - this.enterRule(localctx, 148, SysMLv2Parser.RULE_ownedDisjoining); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1695; - this.qualifiedName(); - this.state = 1700; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1696; - this.match(SysMLv2Parser.DOT); - this.state = 1697; - this.qualifiedName(); - } - } - this.state = 1702; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public unioning(): UnioningContext { - let localctx: UnioningContext = new UnioningContext(this, this._ctx, this.state); - this.enterRule(localctx, 150, SysMLv2Parser.RULE_unioning); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1703; - this.qualifiedName(); - this.state = 1708; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1704; - this.match(SysMLv2Parser.DOT); - this.state = 1705; - this.qualifiedName(); - } - } - this.state = 1710; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public intersecting(): IntersectingContext { - let localctx: IntersectingContext = new IntersectingContext(this, this._ctx, this.state); - this.enterRule(localctx, 152, SysMLv2Parser.RULE_intersecting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1711; - this.qualifiedName(); - this.state = 1716; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1712; - this.match(SysMLv2Parser.DOT); - this.state = 1713; - this.qualifiedName(); - } - } - this.state = 1718; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public differencing(): DifferencingContext { - let localctx: DifferencingContext = new DifferencingContext(this, this._ctx, this.state); - this.enterRule(localctx, 154, SysMLv2Parser.RULE_differencing); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1719; - this.qualifiedName(); - this.state = 1724; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1720; - this.match(SysMLv2Parser.DOT); - this.state = 1721; - this.qualifiedName(); - } - } - this.state = 1726; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureMember(): FeatureMemberContext { - let localctx: FeatureMemberContext = new FeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 156, SysMLv2Parser.RULE_featureMember); - try { - this.state = 1729; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 96, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1727; - this.typeFeatureMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1728; - this.ownedFeatureMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeFeatureMember(): TypeFeatureMemberContext { - let localctx: TypeFeatureMemberContext = new TypeFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 158, SysMLv2Parser.RULE_typeFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1731; - this.memberPrefix(); - this.state = 1732; - this.match(SysMLv2Parser.MEMBER); - this.state = 1733; - this.featureElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedFeatureMember(): OwnedFeatureMemberContext { - let localctx: OwnedFeatureMemberContext = new OwnedFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 160, SysMLv2Parser.RULE_ownedFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1735; - this.memberPrefix(); - this.state = 1736; - this.featureElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public classifier(): ClassifierContext { - let localctx: ClassifierContext = new ClassifierContext(this, this._ctx, this.state); - this.enterRule(localctx, 162, SysMLv2Parser.RULE_classifier); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1738; - this.typePrefix(); - this.state = 1739; - this.match(SysMLv2Parser.CLASSIFIER); - this.state = 1740; - this.classifierDeclaration(); - this.state = 1741; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public classifierDeclaration(): ClassifierDeclarationContext { - let localctx: ClassifierDeclarationContext = new ClassifierDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 164, SysMLv2Parser.RULE_classifierDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1744; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 1743; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 1747; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1746; - this.identification(); - } - } - - this.state = 1750; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===211) { - { - this.state = 1749; - this.ownedMultiplicity(); - } - } - - this.state = 1754; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 139: - case 185: - { - this.state = 1752; - this.superclassingPart(); - } - break; - case 34: - case 217: - { - this.state = 1753; - this.conjugationPart(); - } - break; - case 50: - case 52: - case 86: - case 160: - case 205: - case 214: - break; - default: - break; - } - this.state = 1759; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===50 || _la===52 || _la===86 || _la===160) { - { - { - this.state = 1756; - this.typeRelationshipPart(); - } - } - this.state = 1761; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public superclassingPart(): SuperclassingPartContext { - let localctx: SuperclassingPartContext = new SuperclassingPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 166, SysMLv2Parser.RULE_superclassingPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1762; - _la = this._input.LA(1); - if(!(_la===139 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1763; - this.ownedSubclassification(); - this.state = 1768; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1764; - this.match(SysMLv2Parser.COMMA); - this.state = 1765; - this.ownedSubclassification(); - } - } - this.state = 1770; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subclassification(): SubclassificationContext { - let localctx: SubclassificationContext = new SubclassificationContext(this, this._ctx, this.state); - this.enterRule(localctx, 168, SysMLv2Parser.RULE_subclassification); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1775; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===138) { - { - this.state = 1771; - this.match(SysMLv2Parser.SPECIALIZATION); - this.state = 1773; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 1772; - this.identification(); - } - } - - } - } - - this.state = 1777; - this.match(SysMLv2Parser.SUBCLASSIFIER); - this.state = 1778; - this.qualifiedName(); - this.state = 1779; - _la = this._input.LA(1); - if(!(_la===139 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1780; - this.qualifiedName(); - this.state = 1781; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedSubclassification(): OwnedSubclassificationContext { - let localctx: OwnedSubclassificationContext = new OwnedSubclassificationContext(this, this._ctx, this.state); - this.enterRule(localctx, 170, SysMLv2Parser.RULE_ownedSubclassification); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1783; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public feature(): FeatureContext { - let localctx: FeatureContext = new FeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 172, SysMLv2Parser.RULE_feature); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1799; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 108, this._ctx) ) { - case 1: - { - this.state = 1785; - this.featurePrefix(); - this.state = 1788; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 65: - { - this.state = 1786; - this.match(SysMLv2Parser.FEATURE); - } - break; - case 192: - { - this.state = 1787; - this.prefixMetadataMember(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 1791; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 8449) !== 0) || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 7) !== 0)) { - { - this.state = 1790; - this.featureDeclaration(); - } - } - - } - break; - case 2: - { - this.state = 1795; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 107, this._ctx) ) { - case 1: - { - this.state = 1793; - this.endFeaturePrefix(); - } - break; - case 2: - { - this.state = 1794; - this.basicFeaturePrefix(); - } - break; - } - this.state = 1797; - this.featureDeclaration(); - } - break; - } - this.state = 1802; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 1801; - this.valuePart(); - } - } - - this.state = 1804; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public endFeaturePrefix(): EndFeaturePrefixContext { - let localctx: EndFeaturePrefixContext = new EndFeaturePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 174, SysMLv2Parser.RULE_endFeaturePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1807; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===39) { - { - this.state = 1806; - this.match(SysMLv2Parser.CONST); - } - } - - this.state = 1809; - this.match(SysMLv2Parser.END); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public basicFeaturePrefix(): BasicFeaturePrefixContext { - let localctx: BasicFeaturePrefixContext = new BasicFeaturePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 176, SysMLv2Parser.RULE_basicFeaturePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1812; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===80 || _la===83 || _la===114) { - { - this.state = 1811; - this.featureDirection(); - } - } - - this.state = 1815; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===49) { - { - this.state = 1814; - this.match(SysMLv2Parser.DERIVED); - } - } - - this.state = 1818; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2) { - { - this.state = 1817; - this.match(SysMLv2Parser.ABSTRACT); - } - } - - this.state = 1821; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===31 || _la===120) { - { - this.state = 1820; - _la = this._input.LA(1); - if(!(_la===31 || _la===120)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 1824; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===39 || _la===163) { - { - this.state = 1823; - _la = this._input.LA(1); - if(!(_la===39 || _la===163)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featurePrefix(): FeaturePrefixContext { - let localctx: FeaturePrefixContext = new FeaturePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 178, SysMLv2Parser.RULE_featurePrefix); - try { - let _alt: number; - this.enterOuterAlt(localctx, 1); - { - this.state = 1830; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 116, this._ctx) ) { - case 1: - { - this.state = 1826; - this.endFeaturePrefix(); - this.state = 1827; - this.ownedCrossFeatureMember(); - } - break; - case 2: - { - this.state = 1829; - this.basicFeaturePrefix(); - } - break; - } - this.state = 1835; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 117, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 1832; - this.prefixMetadataMember(); - } - } - } - this.state = 1837; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 117, this._ctx); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedCrossFeatureMember(): OwnedCrossFeatureMemberContext { - let localctx: OwnedCrossFeatureMemberContext = new OwnedCrossFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 180, SysMLv2Parser.RULE_ownedCrossFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1838; - this.ownedCrossFeature(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedCrossFeature(): OwnedCrossFeatureContext { - let localctx: OwnedCrossFeatureContext = new OwnedCrossFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 182, SysMLv2Parser.RULE_ownedCrossFeature); - try { - this.state = 1847; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 119, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 1840; - this.basicFeaturePrefix(); - this.state = 1841; - this.featureDeclaration(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 1843; - this.basicUsagePrefix(); - this.state = 1845; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 118, this._ctx) ) { - case 1: - { - this.state = 1844; - this.usageDeclaration(); - } - break; - } - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureDirection(): FeatureDirectionContext { - let localctx: FeatureDirectionContext = new FeatureDirectionContext(this, this._ctx, this.state); - this.enterRule(localctx, 184, SysMLv2Parser.RULE_featureDirection); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1849; - _la = this._input.LA(1); - if(!(_la===80 || _la===83 || _la===114)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureDeclaration(): FeatureDeclarationContext { - let localctx: FeatureDeclarationContext = new FeatureDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 186, SysMLv2Parser.RULE_featureDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1852; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 1851; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 1861; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 206: - case 218: - case 219: - { - this.state = 1854; - this.featureIdentification(); - this.state = 1857; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 121, this._ctx) ) { - case 1: - { - this.state = 1855; - this.featureSpecializationPart(); - } - break; - case 2: - { - this.state = 1856; - this.conjugationPart(); - } - break; - } - } - break; - case 42: - case 47: - case 106: - case 113: - case 125: - case 128: - case 148: - case 158: - case 175: - case 176: - case 185: - case 188: - case 204: - case 211: - { - this.state = 1859; - this.featureSpecializationPart(); - } - break; - case 34: - case 217: - { - this.state = 1860; - this.conjugationPart(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 1866; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (((((_la - 27)) & ~0x1F) === 0 && ((1 << (_la - 27)) & 41943041) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 5242881) !== 0) || _la===160) { - { - { - this.state = 1863; - this.featureRelationshipPart(); - } - } - this.state = 1868; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureIdentification(): FeatureIdentificationContext { - let localctx: FeatureIdentificationContext = new FeatureIdentificationContext(this, this._ctx, this.state); - this.enterRule(localctx, 188, SysMLv2Parser.RULE_featureIdentification); - try { - this.state = 1876; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 206: - this.enterOuterAlt(localctx, 1); - { - this.state = 1869; - this.match(SysMLv2Parser.LT); - this.state = 1870; - this.name(); - this.state = 1871; - this.match(SysMLv2Parser.GT); - this.state = 1873; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 124, this._ctx) ) { - case 1: - { - this.state = 1872; - this.name(); - } - break; - } - } - break; - case 218: - case 219: - this.enterOuterAlt(localctx, 2); - { - this.state = 1875; - this.name(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureRelationshipPart(): FeatureRelationshipPartContext { - let localctx: FeatureRelationshipPartContext = new FeatureRelationshipPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 190, SysMLv2Parser.RULE_featureRelationshipPart); - try { - this.state = 1882; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 50: - case 52: - case 86: - case 160: - this.enterOuterAlt(localctx, 1); - { - this.state = 1878; - this.typeRelationshipPart(); - } - break; - case 27: - this.enterOuterAlt(localctx, 2); - { - this.state = 1879; - this.chainingPart(); - } - break; - case 88: - this.enterOuterAlt(localctx, 3); - { - this.state = 1880; - this.invertingPart(); - } - break; - case 66: - this.enterOuterAlt(localctx, 4); - { - this.state = 1881; - this.typeFeaturingPart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public chainingPart(): ChainingPartContext { - let localctx: ChainingPartContext = new ChainingPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 192, SysMLv2Parser.RULE_chainingPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1884; - this.match(SysMLv2Parser.CHAINS); - this.state = 1885; - this.qualifiedName(); - this.state = 1890; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 1886; - this.match(SysMLv2Parser.DOT); - this.state = 1887; - this.qualifiedName(); - } - } - this.state = 1892; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public invertingPart(): InvertingPartContext { - let localctx: InvertingPartContext = new InvertingPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 194, SysMLv2Parser.RULE_invertingPart); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1893; - this.match(SysMLv2Parser.INVERSE); - this.state = 1894; - this.match(SysMLv2Parser.OF); - this.state = 1895; - this.ownedFeatureInverting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeFeaturingPart(): TypeFeaturingPartContext { - let localctx: TypeFeaturingPartContext = new TypeFeaturingPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 196, SysMLv2Parser.RULE_typeFeaturingPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1897; - this.match(SysMLv2Parser.FEATURED); - this.state = 1898; - this.match(SysMLv2Parser.BY); - this.state = 1899; - this.ownedTypeFeaturing(); - this.state = 1904; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1900; - this.match(SysMLv2Parser.COMMA); - this.state = 1901; - this.ownedTypeFeaturing(); - } - } - this.state = 1906; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureSpecializationPart(): FeatureSpecializationPartContext { - let localctx: FeatureSpecializationPartContext = new FeatureSpecializationPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 198, SysMLv2Parser.RULE_featureSpecializationPart); - try { - let _alt: number; - this.state = 1928; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 42: - case 47: - case 125: - case 128: - case 148: - case 158: - case 175: - case 176: - case 185: - case 188: - case 204: - this.enterOuterAlt(localctx, 1); - { - this.state = 1908; - this._errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - this.state = 1907; - this.featureSpecialization(); - } - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 1910; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 129, this._ctx); - } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); - this.state = 1913; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 130, this._ctx) ) { - case 1: - { - this.state = 1912; - this.multiplicityPart(); - } - break; - } - this.state = 1918; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 131, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 1915; - this.featureSpecialization(); - } - } - } - this.state = 1920; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 131, this._ctx); - } - } - break; - case 106: - case 113: - case 211: - this.enterOuterAlt(localctx, 2); - { - this.state = 1921; - this.multiplicityPart(); - this.state = 1925; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 132, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 1922; - this.featureSpecialization(); - } - } - } - this.state = 1927; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 132, this._ctx); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public multiplicityPart(): MultiplicityPartContext { - let localctx: MultiplicityPartContext = new MultiplicityPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 200, SysMLv2Parser.RULE_multiplicityPart); - try { - this.state = 1951; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 211: - this.enterOuterAlt(localctx, 1); - { - this.state = 1930; - this.ownedMultiplicity(); - this.state = 1939; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 136, this._ctx) ) { - case 1: - { - this.state = 1931; - this.match(SysMLv2Parser.ORDERED); - this.state = 1933; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 134, this._ctx) ) { - case 1: - { - this.state = 1932; - this.match(SysMLv2Parser.NONUNIQUE); - } - break; - } - } - break; - case 2: - { - this.state = 1935; - this.match(SysMLv2Parser.NONUNIQUE); - this.state = 1937; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 135, this._ctx) ) { - case 1: - { - this.state = 1936; - this.match(SysMLv2Parser.ORDERED); - } - break; - } - } - break; - } - } - break; - case 106: - case 113: - this.enterOuterAlt(localctx, 2); - { - this.state = 1949; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 113: - { - this.state = 1941; - this.match(SysMLv2Parser.ORDERED); - this.state = 1943; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 137, this._ctx) ) { - case 1: - { - this.state = 1942; - this.match(SysMLv2Parser.NONUNIQUE); - } - break; - } - } - break; - case 106: - { - this.state = 1945; - this.match(SysMLv2Parser.NONUNIQUE); - this.state = 1947; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 138, this._ctx) ) { - case 1: - { - this.state = 1946; - this.match(SysMLv2Parser.ORDERED); - } - break; - } - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureSpecialization(): FeatureSpecializationContext { - let localctx: FeatureSpecializationContext = new FeatureSpecializationContext(this, this._ctx, this.state); - this.enterRule(localctx, 202, SysMLv2Parser.RULE_featureSpecialization); - try { - this.state = 1958; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 47: - case 158: - case 204: - this.enterOuterAlt(localctx, 1); - { - this.state = 1953; - this.typings(); - } - break; - case 148: - case 185: - this.enterOuterAlt(localctx, 2); - { - this.state = 1954; - this.subsettings(); - } - break; - case 128: - case 175: - this.enterOuterAlt(localctx, 3); - { - this.state = 1955; - this.references(); - } - break; - case 42: - case 188: - this.enterOuterAlt(localctx, 4); - { - this.state = 1956; - this.crosses(); - } - break; - case 125: - case 176: - this.enterOuterAlt(localctx, 5); - { - this.state = 1957; - this.redefinitions(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typings(): TypingsContext { - let localctx: TypingsContext = new TypingsContext(this, this._ctx, this.state); - this.enterRule(localctx, 204, SysMLv2Parser.RULE_typings); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1960; - this.typedBy(); - this.state = 1965; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1961; - this.match(SysMLv2Parser.COMMA); - this.state = 1962; - this.featureTyping(); - } - } - this.state = 1967; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typedBy(): TypedByContext { - let localctx: TypedByContext = new TypedByContext(this, this._ctx, this.state); - this.enterRule(localctx, 206, SysMLv2Parser.RULE_typedBy); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1973; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 204: - { - this.state = 1968; - this.match(SysMLv2Parser.COLON); - } - break; - case 158: - { - this.state = 1969; - this.match(SysMLv2Parser.TYPED); - this.state = 1970; - this.match(SysMLv2Parser.BY); - } - break; - case 47: - { - this.state = 1971; - this.match(SysMLv2Parser.DEFINED); - this.state = 1972; - this.match(SysMLv2Parser.BY); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 1975; - this.featureTyping(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subsettings(): SubsettingsContext { - let localctx: SubsettingsContext = new SubsettingsContext(this, this._ctx, this.state); - this.enterRule(localctx, 208, SysMLv2Parser.RULE_subsettings); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1977; - this.subsets(); - this.state = 1982; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1978; - this.match(SysMLv2Parser.COMMA); - this.state = 1979; - this.ownedSubsetting(); - } - } - this.state = 1984; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subsets(): SubsetsContext { - let localctx: SubsetsContext = new SubsetsContext(this, this._ctx, this.state); - this.enterRule(localctx, 210, SysMLv2Parser.RULE_subsets); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1985; - _la = this._input.LA(1); - if(!(_la===148 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1986; - this.ownedSubsetting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public references(): ReferencesContext { - let localctx: ReferencesContext = new ReferencesContext(this, this._ctx, this.state); - this.enterRule(localctx, 212, SysMLv2Parser.RULE_references); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1988; - _la = this._input.LA(1); - if(!(_la===128 || _la===175)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1989; - this.ownedReferenceSubsetting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public crosses(): CrossesContext { - let localctx: CrossesContext = new CrossesContext(this, this._ctx, this.state); - this.enterRule(localctx, 214, SysMLv2Parser.RULE_crosses); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1991; - _la = this._input.LA(1); - if(!(_la===42 || _la===188)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 1992; - this.ownedCrossSubsetting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public redefinitions(): RedefinitionsContext { - let localctx: RedefinitionsContext = new RedefinitionsContext(this, this._ctx, this.state); - this.enterRule(localctx, 216, SysMLv2Parser.RULE_redefinitions); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 1994; - this.redefines(); - this.state = 1999; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 1995; - this.match(SysMLv2Parser.COMMA); - this.state = 1996; - this.ownedRedefinition(); - } - } - this.state = 2001; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public redefines(): RedefinesContext { - let localctx: RedefinesContext = new RedefinesContext(this, this._ctx, this.state); - this.enterRule(localctx, 218, SysMLv2Parser.RULE_redefines); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2002; - _la = this._input.LA(1); - if(!(_la===125 || _la===176)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 2003; - this.ownedRedefinition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureTyping(): FeatureTypingContext { - let localctx: FeatureTypingContext = new FeatureTypingContext(this, this._ctx, this.state); - this.enterRule(localctx, 220, SysMLv2Parser.RULE_featureTyping); - let _la: number; - try { - this.state = 2023; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 138: - case 159: - this.enterOuterAlt(localctx, 1); - { - this.state = 2009; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===138) { - { - this.state = 2005; - this.match(SysMLv2Parser.SPECIALIZATION); - this.state = 2007; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2006; - this.identification(); - } - } - - } - } - - this.state = 2011; - this.match(SysMLv2Parser.TYPING); - this.state = 2012; - this.qualifiedName(); - this.state = 2016; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 204: - { - this.state = 2013; - this.match(SysMLv2Parser.COLON); - } - break; - case 158: - { - this.state = 2014; - this.match(SysMLv2Parser.TYPED); - this.state = 2015; - this.match(SysMLv2Parser.BY); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 2018; - this.generalType(); - this.state = 2019; - this.relationshipBody(); - } - break; - case 193: - case 218: - case 219: - this.enterOuterAlt(localctx, 2); - { - this.state = 2021; - this.ownedFeatureTyping(); - } - break; - case 217: - this.enterOuterAlt(localctx, 3); - { - this.state = 2022; - this.conjugatedPortTyping(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedFeatureTyping(): OwnedFeatureTypingContext { - let localctx: OwnedFeatureTypingContext = new OwnedFeatureTypingContext(this, this._ctx, this.state); - this.enterRule(localctx, 222, SysMLv2Parser.RULE_ownedFeatureTyping); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2025; - this.qualifiedName(); - this.state = 2030; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2026; - this.match(SysMLv2Parser.DOT); - this.state = 2027; - this.qualifiedName(); - } - } - this.state = 2032; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subsetting(): SubsettingContext { - let localctx: SubsettingContext = new SubsettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 224, SysMLv2Parser.RULE_subsetting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2037; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===138) { - { - this.state = 2033; - this.match(SysMLv2Parser.SPECIALIZATION); - this.state = 2035; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2034; - this.identification(); - } - } - - } - } - - this.state = 2039; - this.match(SysMLv2Parser.SUBSET); - this.state = 2040; - this.specificType(); - this.state = 2041; - _la = this._input.LA(1); - if(!(_la===148 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 2042; - this.generalType(); - this.state = 2043; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedSubsetting(): OwnedSubsettingContext { - let localctx: OwnedSubsettingContext = new OwnedSubsettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 226, SysMLv2Parser.RULE_ownedSubsetting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2045; - this.qualifiedName(); - this.state = 2050; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2046; - this.match(SysMLv2Parser.DOT); - this.state = 2047; - this.qualifiedName(); - } - } - this.state = 2052; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - let localctx: OwnedReferenceSubsettingContext = new OwnedReferenceSubsettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 228, SysMLv2Parser.RULE_ownedReferenceSubsetting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2053; - this.qualifiedName(); - this.state = 2058; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2054; - this.match(SysMLv2Parser.DOT); - this.state = 2055; - this.qualifiedName(); - } - } - this.state = 2060; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedCrossSubsetting(): OwnedCrossSubsettingContext { - let localctx: OwnedCrossSubsettingContext = new OwnedCrossSubsettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 230, SysMLv2Parser.RULE_ownedCrossSubsetting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2061; - this.qualifiedName(); - this.state = 2066; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2062; - this.match(SysMLv2Parser.DOT); - this.state = 2063; - this.qualifiedName(); - } - } - this.state = 2068; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public redefinition(): RedefinitionContext { - let localctx: RedefinitionContext = new RedefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 232, SysMLv2Parser.RULE_redefinition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2073; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===138) { - { - this.state = 2069; - this.match(SysMLv2Parser.SPECIALIZATION); - this.state = 2071; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2070; - this.identification(); - } - } - - } - } - - this.state = 2075; - this.match(SysMLv2Parser.REDEFINITION); - this.state = 2076; - this.specificType(); - this.state = 2077; - _la = this._input.LA(1); - if(!(_la===125 || _la===176)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 2078; - this.generalType(); - this.state = 2079; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedRedefinition(): OwnedRedefinitionContext { - let localctx: OwnedRedefinitionContext = new OwnedRedefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 234, SysMLv2Parser.RULE_ownedRedefinition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2081; - this.qualifiedName(); - this.state = 2086; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2082; - this.match(SysMLv2Parser.DOT); - this.state = 2083; - this.qualifiedName(); - } - } - this.state = 2088; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedFeatureChain(): OwnedFeatureChainContext { - let localctx: OwnedFeatureChainContext = new OwnedFeatureChainContext(this, this._ctx, this.state); - this.enterRule(localctx, 236, SysMLv2Parser.RULE_ownedFeatureChain); - let _la: number; - try { - this.state = 2097; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 160, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2089; - this.featureChain(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2090; - this.ownedFeatureChaining(); - this.state = 2093; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 2091; - this.match(SysMLv2Parser.DOT); - this.state = 2092; - this.ownedFeatureChaining(); - } - } - this.state = 2095; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===202); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureChain(): FeatureChainContext { - let localctx: FeatureChainContext = new FeatureChainContext(this, this._ctx, this.state); - this.enterRule(localctx, 238, SysMLv2Parser.RULE_featureChain); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2099; - this.ownedFeatureChaining(); - this.state = 2102; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 2100; - this.match(SysMLv2Parser.DOT); - this.state = 2101; - this.ownedFeatureChaining(); - } - } - this.state = 2104; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===202); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedFeatureChaining(): OwnedFeatureChainingContext { - let localctx: OwnedFeatureChainingContext = new OwnedFeatureChainingContext(this, this._ctx, this.state); - this.enterRule(localctx, 240, SysMLv2Parser.RULE_ownedFeatureChaining); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2106; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureInverting(): FeatureInvertingContext { - let localctx: FeatureInvertingContext = new FeatureInvertingContext(this, this._ctx, this.state); - this.enterRule(localctx, 242, SysMLv2Parser.RULE_featureInverting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2112; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===89) { - { - this.state = 2108; - this.match(SysMLv2Parser.INVERTING); - this.state = 2110; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2109; - this.identification(); - } - } - - } - } - - this.state = 2114; - this.match(SysMLv2Parser.INVERSE); - this.state = 2115; - this.qualifiedName(); - this.state = 2120; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2116; - this.match(SysMLv2Parser.DOT); - this.state = 2117; - this.qualifiedName(); - } - } - this.state = 2122; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2123; - this.match(SysMLv2Parser.OF); - this.state = 2124; - this.qualifiedName(); - this.state = 2129; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2125; - this.match(SysMLv2Parser.DOT); - this.state = 2126; - this.qualifiedName(); - } - } - this.state = 2131; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2132; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedFeatureInverting(): OwnedFeatureInvertingContext { - let localctx: OwnedFeatureInvertingContext = new OwnedFeatureInvertingContext(this, this._ctx, this.state); - this.enterRule(localctx, 244, SysMLv2Parser.RULE_ownedFeatureInverting); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2134; - this.qualifiedName(); - this.state = 2139; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2135; - this.match(SysMLv2Parser.DOT); - this.state = 2136; - this.qualifiedName(); - } - } - this.state = 2141; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeFeaturing(): TypeFeaturingContext { - let localctx: TypeFeaturingContext = new TypeFeaturingContext(this, this._ctx, this.state); - this.enterRule(localctx, 246, SysMLv2Parser.RULE_typeFeaturing); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2142; - this.match(SysMLv2Parser.FEATURING); - this.state = 2147; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 168, this._ctx) ) { - case 1: - { - this.state = 2144; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2143; - this.identification(); - } - } - - this.state = 2146; - this.match(SysMLv2Parser.OF); - } - break; - } - this.state = 2149; - this.qualifiedName(); - this.state = 2150; - this.match(SysMLv2Parser.BY); - this.state = 2151; - this.qualifiedName(); - this.state = 2152; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedTypeFeaturing(): OwnedTypeFeaturingContext { - let localctx: OwnedTypeFeaturingContext = new OwnedTypeFeaturingContext(this, this._ctx, this.state); - this.enterRule(localctx, 248, SysMLv2Parser.RULE_ownedTypeFeaturing); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2154; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public dataType(): DataTypeContext { - let localctx: DataTypeContext = new DataTypeContext(this, this._ctx, this.state); - this.enterRule(localctx, 250, SysMLv2Parser.RULE_dataType); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2156; - this.typePrefix(); - this.state = 2157; - this.match(SysMLv2Parser.DATATYPE); - this.state = 2158; - this.classifierDeclaration(); - this.state = 2159; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public class_(): ClassContext { - let localctx: ClassContext = new ClassContext(this, this._ctx, this.state); - this.enterRule(localctx, 252, SysMLv2Parser.RULE_class); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2161; - this.typePrefix(); - this.state = 2162; - this.match(SysMLv2Parser.CLASS); - this.state = 2163; - this.classifierDeclaration(); - this.state = 2164; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public structure(): StructureContext { - let localctx: StructureContext = new StructureContext(this, this._ctx, this.state); - this.enterRule(localctx, 254, SysMLv2Parser.RULE_structure); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2166; - this.typePrefix(); - this.state = 2167; - this.match(SysMLv2Parser.STRUCT); - this.state = 2168; - this.classifierDeclaration(); - this.state = 2169; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public association(): AssociationContext { - let localctx: AssociationContext = new AssociationContext(this, this._ctx, this.state); - this.enterRule(localctx, 256, SysMLv2Parser.RULE_association); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2171; - this.typePrefix(); - this.state = 2172; - this.match(SysMLv2Parser.ASSOC); - this.state = 2173; - this.classifierDeclaration(); - this.state = 2174; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public associationStructure(): AssociationStructureContext { - let localctx: AssociationStructureContext = new AssociationStructureContext(this, this._ctx, this.state); - this.enterRule(localctx, 258, SysMLv2Parser.RULE_associationStructure); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2176; - this.typePrefix(); - this.state = 2177; - this.match(SysMLv2Parser.ASSOC); - this.state = 2178; - this.match(SysMLv2Parser.STRUCT); - this.state = 2179; - this.classifierDeclaration(); - this.state = 2180; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connector(): ConnectorContext { - let localctx: ConnectorContext = new ConnectorContext(this, this._ctx, this.state); - this.enterRule(localctx, 260, SysMLv2Parser.RULE_connector); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2182; - this.featurePrefix(); - this.state = 2183; - this.match(SysMLv2Parser.CONNECTOR); - this.state = 2191; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 171, this._ctx) ) { - case 1: - { - this.state = 2185; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 8449) !== 0) || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 7) !== 0)) { - { - this.state = 2184; - this.featureDeclaration(); - } - } - - this.state = 2188; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2187; - this.valuePart(); - } - } - - } - break; - case 2: - { - this.state = 2190; - this.connectorDeclaration(); - } - break; - } - this.state = 2193; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connectorDeclaration(): ConnectorDeclarationContext { - let localctx: ConnectorDeclarationContext = new ConnectorDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 262, SysMLv2Parser.RULE_connectorDeclaration); - try { - this.state = 2197; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 172, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2195; - this.binaryConnectorDeclaration(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2196; - this.naryConnectorDeclaration(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public binaryConnectorDeclaration(): BinaryConnectorDeclarationContext { - let localctx: BinaryConnectorDeclarationContext = new BinaryConnectorDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 264, SysMLv2Parser.RULE_binaryConnectorDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2207; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 175, this._ctx) ) { - case 1: - { - this.state = 2200; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 8449) !== 0) || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 7) !== 0)) { - { - this.state = 2199; - this.featureDeclaration(); - } - } - - this.state = 2202; - this.match(SysMLv2Parser.FROM); - } - break; - case 2: - { - this.state = 2203; - this.match(SysMLv2Parser.ALL); - this.state = 2205; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===74) { - { - this.state = 2204; - this.match(SysMLv2Parser.FROM); - } - } - - } - break; - } - this.state = 2209; - this.connectorEndMember(); - this.state = 2210; - this.match(SysMLv2Parser.TO); - this.state = 2211; - this.connectorEndMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public naryConnectorDeclaration(): NaryConnectorDeclarationContext { - let localctx: NaryConnectorDeclarationContext = new NaryConnectorDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 266, SysMLv2Parser.RULE_naryConnectorDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2214; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 8449) !== 0) || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 7) !== 0)) { - { - this.state = 2213; - this.featureDeclaration(); - } - } - - this.state = 2216; - this.match(SysMLv2Parser.LPAREN); - this.state = 2217; - this.connectorEndMember(); - this.state = 2218; - this.match(SysMLv2Parser.COMMA); - this.state = 2219; - this.connectorEndMember(); - this.state = 2224; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 2220; - this.match(SysMLv2Parser.COMMA); - this.state = 2221; - this.connectorEndMember(); - } - } - this.state = 2226; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2227; - this.match(SysMLv2Parser.RPAREN); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connectorEndMember(): ConnectorEndMemberContext { - let localctx: ConnectorEndMemberContext = new ConnectorEndMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 268, SysMLv2Parser.RULE_connectorEndMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2229; - this.connectorEnd(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connectorEnd(): ConnectorEndContext { - let localctx: ConnectorEndContext = new ConnectorEndContext(this, this._ctx, this.state); - this.enterRule(localctx, 270, SysMLv2Parser.RULE_connectorEnd); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2232; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===211) { - { - this.state = 2231; - this.ownedCrossMultiplicityMember(); - } - } - - this.state = 2237; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 179, this._ctx) ) { - case 1: - { - this.state = 2234; - this.name(); - this.state = 2235; - _la = this._input.LA(1); - if(!(_la===128 || _la===175)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - } - this.state = 2239; - this.ownedReferenceSubsetting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedCrossMultiplicityMember(): OwnedCrossMultiplicityMemberContext { - let localctx: OwnedCrossMultiplicityMemberContext = new OwnedCrossMultiplicityMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 272, SysMLv2Parser.RULE_ownedCrossMultiplicityMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2241; - this.ownedCrossMultiplicity(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedCrossMultiplicity(): OwnedCrossMultiplicityContext { - let localctx: OwnedCrossMultiplicityContext = new OwnedCrossMultiplicityContext(this, this._ctx, this.state); - this.enterRule(localctx, 274, SysMLv2Parser.RULE_ownedCrossMultiplicity); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2243; - this.ownedMultiplicity(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bindingConnector(): BindingConnectorContext { - let localctx: BindingConnectorContext = new BindingConnectorContext(this, this._ctx, this.state); - this.enterRule(localctx, 276, SysMLv2Parser.RULE_bindingConnector); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2245; - this.featurePrefix(); - this.state = 2246; - this.match(SysMLv2Parser.BINDING); - this.state = 2247; - this.bindingConnectorDeclaration(); - this.state = 2248; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bindingConnectorDeclaration(): BindingConnectorDeclarationContext { - let localctx: BindingConnectorDeclarationContext = new BindingConnectorDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 278, SysMLv2Parser.RULE_bindingConnectorDeclaration); - let _la: number; - try { - this.state = 2270; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 184, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2250; - this.featureDeclaration(); - this.state = 2256; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===111) { - { - this.state = 2251; - this.match(SysMLv2Parser.OF); - this.state = 2252; - this.connectorEndMember(); - this.state = 2253; - this.match(SysMLv2Parser.EQ); - this.state = 2254; - this.connectorEndMember(); - } - } - - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2259; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 2258; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 2268; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===111 || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 100925441) !== 0)) { - { - this.state = 2262; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===111) { - { - this.state = 2261; - this.match(SysMLv2Parser.OF); - } - } - - this.state = 2264; - this.connectorEndMember(); - this.state = 2265; - this.match(SysMLv2Parser.EQ); - this.state = 2266; - this.connectorEndMember(); - } - } - - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public succession(): SuccessionContext { - let localctx: SuccessionContext = new SuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 280, SysMLv2Parser.RULE_succession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2272; - this.featurePrefix(); - this.state = 2273; - this.match(SysMLv2Parser.SUCCESSION); - this.state = 2274; - this.successionDeclaration(); - this.state = 2275; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public successionDeclaration(): SuccessionDeclarationContext { - let localctx: SuccessionDeclarationContext = new SuccessionDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 282, SysMLv2Parser.RULE_successionDeclaration); - let _la: number; - try { - this.state = 2297; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 189, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2277; - this.featureDeclaration(); - this.state = 2283; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===69) { - { - this.state = 2278; - this.match(SysMLv2Parser.FIRST); - this.state = 2279; - this.connectorEndMember(); - this.state = 2280; - this.match(SysMLv2Parser.THEN); - this.state = 2281; - this.connectorEndMember(); - } - } - - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2286; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 2285; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 2295; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===69 || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 100925441) !== 0)) { - { - this.state = 2289; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===69) { - { - this.state = 2288; - this.match(SysMLv2Parser.FIRST); - } - } - - this.state = 2291; - this.connectorEndMember(); - this.state = 2292; - this.match(SysMLv2Parser.THEN); - this.state = 2293; - this.connectorEndMember(); - } - } - - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public behavior(): BehaviorContext { - let localctx: BehaviorContext = new BehaviorContext(this, this._ctx, this.state); - this.enterRule(localctx, 284, SysMLv2Parser.RULE_behavior); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2299; - this.typePrefix(); - this.state = 2300; - this.match(SysMLv2Parser.BEHAVIOR); - this.state = 2301; - this.classifierDeclaration(); - this.state = 2302; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public step(): StepContext { - let localctx: StepContext = new StepContext(this, this._ctx, this.state); - this.enterRule(localctx, 286, SysMLv2Parser.RULE_step); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2304; - this.featurePrefix(); - this.state = 2305; - this.match(SysMLv2Parser.STEP); - this.state = 2306; - this.featureDeclaration(); - this.state = 2308; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2307; - this.valuePart(); - } - } - - this.state = 2310; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public function_(): FunctionContext { - let localctx: FunctionContext = new FunctionContext(this, this._ctx, this.state); - this.enterRule(localctx, 288, SysMLv2Parser.RULE_function); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2312; - this.typePrefix(); - this.state = 2313; - this.match(SysMLv2Parser.FUNCTION); - this.state = 2314; - this.classifierDeclaration(); - this.state = 2315; - this.functionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionBody(): FunctionBodyContext { - let localctx: FunctionBodyContext = new FunctionBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 290, SysMLv2Parser.RULE_functionBody); - try { - this.state = 2322; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 2317; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 2318; - this.match(SysMLv2Parser.LBRACE); - this.state = 2319; - this.functionBodyPart(); - this.state = 2320; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionBodyPart(): FunctionBodyPartContext { - let localctx: FunctionBodyPartContext = new FunctionBodyPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 292, SysMLv2Parser.RULE_functionBodyPart); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(localctx, 1); - { - this.state = 2328; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 193, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - this.state = 2326; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 192, this._ctx) ) { - case 1: - { - this.state = 2324; - this.typeBodyElement(); - } - break; - case 2: - { - this.state = 2325; - this.returnFeatureMember(); - } - break; - } - } - } - this.state = 2330; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 193, this._ctx); - } - this.state = 2332; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || _la===64 || _la===77 || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 917517) !== 0) || _la===156 || ((((_la - 191)) & ~0x1F) === 0 && ((1 << (_la - 191)) & 4236772773) !== 0)) { - { - this.state = 2331; - this.resultExpressionMember(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public returnFeatureMember(): ReturnFeatureMemberContext { - let localctx: ReturnFeatureMemberContext = new ReturnFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 294, SysMLv2Parser.RULE_returnFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2334; - this.memberPrefix(); - this.state = 2335; - this.match(SysMLv2Parser.RETURN); - this.state = 2336; - this.featureElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public resultExpressionMember(): ResultExpressionMemberContext { - let localctx: ResultExpressionMemberContext = new ResultExpressionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 296, SysMLv2Parser.RULE_resultExpressionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2338; - this.memberPrefix(); - this.state = 2339; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public expression(): ExpressionContext { - let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 298, SysMLv2Parser.RULE_expression); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2341; - this.featurePrefix(); - this.state = 2342; - this.match(SysMLv2Parser.EXPR); - this.state = 2343; - this.featureDeclaration(); - this.state = 2345; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2344; - this.valuePart(); - } - } - - this.state = 2347; - this.functionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public predicate(): PredicateContext { - let localctx: PredicateContext = new PredicateContext(this, this._ctx, this.state); - this.enterRule(localctx, 300, SysMLv2Parser.RULE_predicate); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2349; - this.typePrefix(); - this.state = 2350; - this.match(SysMLv2Parser.PREDICATE); - this.state = 2351; - this.classifierDeclaration(); - this.state = 2352; - this.functionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public booleanExpression(): BooleanExpressionContext { - let localctx: BooleanExpressionContext = new BooleanExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 302, SysMLv2Parser.RULE_booleanExpression); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2354; - this.featurePrefix(); - this.state = 2355; - this.match(SysMLv2Parser.BOOL); - this.state = 2356; - this.featureDeclaration(); - this.state = 2358; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2357; - this.valuePart(); - } - } - - this.state = 2360; - this.functionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public invariant(): InvariantContext { - let localctx: InvariantContext = new InvariantContext(this, this._ctx, this.state); - this.enterRule(localctx, 304, SysMLv2Parser.RULE_invariant); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2362; - this.featurePrefix(); - this.state = 2363; - this.match(SysMLv2Parser.INV); - this.state = 2365; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===64 || _la===156) { - { - this.state = 2364; - _la = this._input.LA(1); - if(!(_la===64 || _la===156)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 2367; - this.featureDeclaration(); - this.state = 2369; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2368; - this.valuePart(); - } - } - - this.state = 2371; - this.functionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedExpressionMember(): OwnedExpressionMemberContext { - let localctx: OwnedExpressionMemberContext = new OwnedExpressionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 306, SysMLv2Parser.RULE_ownedExpressionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2373; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataReference(): MetadataReferenceContext { - let localctx: MetadataReferenceContext = new MetadataReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 308, SysMLv2Parser.RULE_metadataReference); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2375; - this.elementReferenceMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeReferenceMember(): TypeReferenceMemberContext { - let localctx: TypeReferenceMemberContext = new TypeReferenceMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 310, SysMLv2Parser.RULE_typeReferenceMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2377; - this.typeReference(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public typeResultMember(): TypeResultMemberContext { - let localctx: TypeResultMemberContext = new TypeResultMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 312, SysMLv2Parser.RULE_typeResultMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2379; - this.typeReference(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public referenceTyping(): ReferenceTypingContext { - let localctx: ReferenceTypingContext = new ReferenceTypingContext(this, this._ctx, this.state); - this.enterRule(localctx, 314, SysMLv2Parser.RULE_referenceTyping); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2381; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyResultMember(): EmptyResultMemberContext { - let localctx: EmptyResultMemberContext = new EmptyResultMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 316, SysMLv2Parser.RULE_emptyResultMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2383; - this.emptyFeature_(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sequenceOperatorExpression(): SequenceOperatorExpressionContext { - let localctx: SequenceOperatorExpressionContext = new SequenceOperatorExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 318, SysMLv2Parser.RULE_sequenceOperatorExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2385; - this.ownedExpressionMember(); - this.state = 2386; - this.match(SysMLv2Parser.COMMA); - this.state = 2387; - this.sequenceExpressionListMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sequenceExpressionListMember(): SequenceExpressionListMemberContext { - let localctx: SequenceExpressionListMemberContext = new SequenceExpressionListMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 320, SysMLv2Parser.RULE_sequenceExpressionListMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2389; - this.sequenceExpressionList(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bodyArgumentMember(): BodyArgumentMemberContext { - let localctx: BodyArgumentMemberContext = new BodyArgumentMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 322, SysMLv2Parser.RULE_bodyArgumentMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2391; - this.bodyArgument(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bodyArgument(): BodyArgumentContext { - let localctx: BodyArgumentContext = new BodyArgumentContext(this, this._ctx, this.state); - this.enterRule(localctx, 324, SysMLv2Parser.RULE_bodyArgument); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2393; - this.bodyArgumentValue(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bodyArgumentValue(): BodyArgumentValueContext { - let localctx: BodyArgumentValueContext = new BodyArgumentValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 326, SysMLv2Parser.RULE_bodyArgumentValue); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2395; - this.bodyExpression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionReferenceArgumentMember(): FunctionReferenceArgumentMemberContext { - let localctx: FunctionReferenceArgumentMemberContext = new FunctionReferenceArgumentMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 328, SysMLv2Parser.RULE_functionReferenceArgumentMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2397; - this.functionReferenceArgument(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionReferenceArgument(): FunctionReferenceArgumentContext { - let localctx: FunctionReferenceArgumentContext = new FunctionReferenceArgumentContext(this, this._ctx, this.state); - this.enterRule(localctx, 330, SysMLv2Parser.RULE_functionReferenceArgument); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2399; - this.functionReferenceArgumentValue(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionReferenceArgumentValue(): FunctionReferenceArgumentValueContext { - let localctx: FunctionReferenceArgumentValueContext = new FunctionReferenceArgumentValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 332, SysMLv2Parser.RULE_functionReferenceArgumentValue); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2401; - this.functionReferenceExpression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionReferenceExpression(): FunctionReferenceExpressionContext { - let localctx: FunctionReferenceExpressionContext = new FunctionReferenceExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 334, SysMLv2Parser.RULE_functionReferenceExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2403; - this.functionReferenceMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionReferenceMember(): FunctionReferenceMemberContext { - let localctx: FunctionReferenceMemberContext = new FunctionReferenceMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 336, SysMLv2Parser.RULE_functionReferenceMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2405; - this.functionReference(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public functionReference(): FunctionReferenceContext { - let localctx: FunctionReferenceContext = new FunctionReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 338, SysMLv2Parser.RULE_functionReference); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2407; - this.referenceTyping(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureChainMember(): FeatureChainMemberContext { - let localctx: FeatureChainMemberContext = new FeatureChainMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 340, SysMLv2Parser.RULE_featureChainMember); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2409; - this.qualifiedName(); - this.state = 2414; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2410; - this.match(SysMLv2Parser.DOT); - this.state = 2411; - this.qualifiedName(); - } - } - this.state = 2416; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedFeatureChainMember(): OwnedFeatureChainMemberContext { - let localctx: OwnedFeatureChainMemberContext = new OwnedFeatureChainMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 342, SysMLv2Parser.RULE_ownedFeatureChainMember); - try { - this.state = 2419; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 200, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2417; - this.featureChain(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2418; - this.ownedFeatureChain(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureReferenceMember(): FeatureReferenceMemberContext { - let localctx: FeatureReferenceMemberContext = new FeatureReferenceMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 344, SysMLv2Parser.RULE_featureReferenceMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2421; - this.featureReference(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureReference(): FeatureReferenceContext { - let localctx: FeatureReferenceContext = new FeatureReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 346, SysMLv2Parser.RULE_featureReference); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2423; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public elementReferenceMember(): ElementReferenceMemberContext { - let localctx: ElementReferenceMemberContext = new ElementReferenceMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 348, SysMLv2Parser.RULE_elementReferenceMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2425; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public constructorResultMember(): ConstructorResultMemberContext { - let localctx: ConstructorResultMemberContext = new ConstructorResultMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 350, SysMLv2Parser.RULE_constructorResultMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2427; - this.constructorResult(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public constructorResult(): ConstructorResultContext { - let localctx: ConstructorResultContext = new ConstructorResultContext(this, this._ctx, this.state); - this.enterRule(localctx, 352, SysMLv2Parser.RULE_constructorResult); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2429; - this.argumentList(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public instantiatedTypeMember(): InstantiatedTypeMemberContext { - let localctx: InstantiatedTypeMemberContext = new InstantiatedTypeMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 354, SysMLv2Parser.RULE_instantiatedTypeMember); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2431; - this.qualifiedName(); - this.state = 2436; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2432; - this.match(SysMLv2Parser.DOT); - this.state = 2433; - this.qualifiedName(); - } - } - this.state = 2438; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public instantiatedTypeReference(): InstantiatedTypeReferenceContext { - let localctx: InstantiatedTypeReferenceContext = new InstantiatedTypeReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 356, SysMLv2Parser.RULE_instantiatedTypeReference); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2439; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namedArgumentMember(): NamedArgumentMemberContext { - let localctx: NamedArgumentMemberContext = new NamedArgumentMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 358, SysMLv2Parser.RULE_namedArgumentMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2441; - this.namedArgument(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public parameterRedefinition(): ParameterRedefinitionContext { - let localctx: ParameterRedefinitionContext = new ParameterRedefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 360, SysMLv2Parser.RULE_parameterRedefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2443; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public expressionBodyMember(): ExpressionBodyMemberContext { - let localctx: ExpressionBodyMemberContext = new ExpressionBodyMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 362, SysMLv2Parser.RULE_expressionBodyMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2445; - this.expressionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public expressionBody(): ExpressionBodyContext { - let localctx: ExpressionBodyContext = new ExpressionBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 364, SysMLv2Parser.RULE_expressionBody); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2447; - this.match(SysMLv2Parser.LBRACE); - this.state = 2448; - this.functionBodyPart(); - this.state = 2449; - this.match(SysMLv2Parser.RBRACE); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public booleanValue(): BooleanValueContext { - let localctx: BooleanValueContext = new BooleanValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 366, SysMLv2Parser.RULE_booleanValue); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2451; - _la = this._input.LA(1); - if(!(_la===64 || _la===156)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public realValue(): RealValueContext { - let localctx: RealValueContext = new RealValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 368, SysMLv2Parser.RULE_realValue); - let _la: number; - try { - this.state = 2459; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 202: - case 221: - this.enterOuterAlt(localctx, 1); - { - this.state = 2454; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===221) { - { - this.state = 2453; - this.match(SysMLv2Parser.INTEGER); - } - } - - this.state = 2456; - this.match(SysMLv2Parser.DOT); - this.state = 2457; - _la = this._input.LA(1); - if(!(_la===221 || _la===222)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - case 222: - this.enterOuterAlt(localctx, 2); - { - this.state = 2458; - this.match(SysMLv2Parser.REAL); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interaction(): InteractionContext { - let localctx: InteractionContext = new InteractionContext(this, this._ctx, this.state); - this.enterRule(localctx, 370, SysMLv2Parser.RULE_interaction); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2461; - this.typePrefix(); - this.state = 2462; - this.match(SysMLv2Parser.INTERACTION); - this.state = 2463; - this.classifierDeclaration(); - this.state = 2464; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flow(): FlowContext { - let localctx: FlowContext = new FlowContext(this, this._ctx, this.state); - this.enterRule(localctx, 372, SysMLv2Parser.RULE_flow); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2466; - this.featurePrefix(); - this.state = 2467; - this.match(SysMLv2Parser.FLOW); - this.state = 2468; - this.flowDeclaration(); - this.state = 2469; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public successionFlow(): SuccessionFlowContext { - let localctx: SuccessionFlowContext = new SuccessionFlowContext(this, this._ctx, this.state); - this.enterRule(localctx, 374, SysMLv2Parser.RULE_successionFlow); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2471; - this.featurePrefix(); - this.state = 2472; - this.match(SysMLv2Parser.SUCCESSION); - this.state = 2473; - this.match(SysMLv2Parser.FLOW); - this.state = 2474; - this.flowDeclaration(); - this.state = 2475; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowDeclaration(): FlowDeclarationContext { - let localctx: FlowDeclarationContext = new FlowDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 376, SysMLv2Parser.RULE_flowDeclaration); - let _la: number; - try { - this.state = 2516; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 212, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2477; - this.featureDeclaration(); - this.state = 2479; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2478; - this.valuePart(); - } - } - - this.state = 2483; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===111) { - { - this.state = 2481; - this.match(SysMLv2Parser.OF); - this.state = 2482; - this.payloadFeatureMember(); - } - } - - this.state = 2490; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===74) { - { - this.state = 2485; - this.match(SysMLv2Parser.FROM); - this.state = 2486; - this.flowEndMember(); - this.state = 2487; - this.match(SysMLv2Parser.TO); - this.state = 2488; - this.flowEndMember(); - } - } - - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2493; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8) { - { - this.state = 2492; - this.match(SysMLv2Parser.ALL); - } - } - - this.state = 2495; - this.flowEndMember(); - this.state = 2496; - this.match(SysMLv2Parser.TO); - this.state = 2497; - this.flowEndMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2500; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 2499; - this.usageDeclaration(); - } - } - - this.state = 2503; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2502; - this.valuePart(); - } - } - - this.state = 2507; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===111) { - { - this.state = 2505; - this.match(SysMLv2Parser.OF); - this.state = 2506; - this.flowPayloadFeatureMember(); - } - } - - this.state = 2514; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===74) { - { - this.state = 2509; - this.match(SysMLv2Parser.FROM); - this.state = 2510; - this.flowEndMember(); - this.state = 2511; - this.match(SysMLv2Parser.TO); - this.state = 2512; - this.flowEndMember(); - } - } - - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public payloadFeatureMember(): PayloadFeatureMemberContext { - let localctx: PayloadFeatureMemberContext = new PayloadFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 378, SysMLv2Parser.RULE_payloadFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2518; - this.payloadFeature(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public payloadFeature(): PayloadFeatureContext { - let localctx: PayloadFeatureContext = new PayloadFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 380, SysMLv2Parser.RULE_payloadFeature); - let _la: number; - try { - this.state = 2539; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 218, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2521; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2520; - this.identification(); - } - } - - this.state = 2523; - this.valuePart(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2525; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2524; - this.identification(); - } - } - - this.state = 2527; - this.payloadFeatureSpecializationPart(); - this.state = 2529; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2528; - this.valuePart(); - } - } - - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2531; - this.ownedFeatureTyping(); - this.state = 2533; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===211) { - { - this.state = 2532; - this.ownedMultiplicity(); - } - } - - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 2535; - this.ownedMultiplicity(); - this.state = 2537; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 100663297) !== 0)) { - { - this.state = 2536; - this.ownedFeatureTyping(); - } - } - - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public payloadFeatureSpecializationPart(): PayloadFeatureSpecializationPartContext { - let localctx: PayloadFeatureSpecializationPartContext = new PayloadFeatureSpecializationPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 382, SysMLv2Parser.RULE_payloadFeatureSpecializationPart); - let _la: number; - try { - let _alt: number; - this.state = 2561; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 42: - case 47: - case 125: - case 128: - case 148: - case 158: - case 175: - case 176: - case 185: - case 188: - case 204: - this.enterOuterAlt(localctx, 1); - { - this.state = 2542; - this._errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - this.state = 2541; - this.featureSpecialization(); - } - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 2544; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 219, this._ctx); - } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); - this.state = 2547; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===106 || _la===113 || _la===211) { - { - this.state = 2546; - this.multiplicityPart(); - } - } - - this.state = 2552; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===42 || _la===47 || ((((_la - 125)) & ~0x1F) === 0 && ((1 << (_la - 125)) & 8388617) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 1208352769) !== 0) || _la===204) { - { - { - this.state = 2549; - this.featureSpecialization(); - } - } - this.state = 2554; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - break; - case 106: - case 113: - case 211: - this.enterOuterAlt(localctx, 2); - { - this.state = 2555; - this.multiplicityPart(); - this.state = 2557; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 2556; - this.featureSpecialization(); - } - } - this.state = 2559; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===42 || _la===47 || ((((_la - 125)) & ~0x1F) === 0 && ((1 << (_la - 125)) & 8388617) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 1208352769) !== 0) || _la===204); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowEndMember(): FlowEndMemberContext { - let localctx: FlowEndMemberContext = new FlowEndMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 384, SysMLv2Parser.RULE_flowEndMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2563; - this.flowEnd(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowEnd(): FlowEndContext { - let localctx: FlowEndContext = new FlowEndContext(this, this._ctx, this.state); - this.enterRule(localctx, 386, SysMLv2Parser.RULE_flowEnd); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2565; - this.qualifiedName(); - this.state = 2570; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===202) { - { - { - this.state = 2566; - this.match(SysMLv2Parser.DOT); - this.state = 2567; - this.qualifiedName(); - } - } - this.state = 2572; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowFeatureMember(): FlowFeatureMemberContext { - let localctx: FlowFeatureMemberContext = new FlowFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 388, SysMLv2Parser.RULE_flowFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2573; - this.flowFeature(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowFeature(): FlowFeatureContext { - let localctx: FlowFeatureContext = new FlowFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 390, SysMLv2Parser.RULE_flowFeature); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2575; - this.flowFeatureRedefinition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowFeatureRedefinition(): FlowFeatureRedefinitionContext { - let localctx: FlowFeatureRedefinitionContext = new FlowFeatureRedefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 392, SysMLv2Parser.RULE_flowFeatureRedefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2577; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public valuePart(): ValuePartContext { - let localctx: ValuePartContext = new ValuePartContext(this, this._ctx, this.state); - this.enterRule(localctx, 394, SysMLv2Parser.RULE_valuePart); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2579; - this.featureValue(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureValue(): FeatureValueContext { - let localctx: FeatureValueContext = new FeatureValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 396, SysMLv2Parser.RULE_featureValue); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2587; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 207: - { - this.state = 2581; - this.match(SysMLv2Parser.EQ); - } - break; - case 184: - { - this.state = 2582; - this.match(SysMLv2Parser.COLON_EQ); - } - break; - case 46: - { - this.state = 2583; - this.match(SysMLv2Parser.DEFAULT); - this.state = 2585; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===184 || _la===207) { - { - this.state = 2584; - _la = this._input.LA(1); - if(!(_la===184 || _la===207)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 2589; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public multiplicity(): MultiplicityContext { - let localctx: MultiplicityContext = new MultiplicityContext(this, this._ctx, this.state); - this.enterRule(localctx, 398, SysMLv2Parser.RULE_multiplicity); - try { - this.state = 2593; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 227, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2591; - this.multiplicitySubset(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2592; - this.multiplicityRange(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public multiplicitySubset(): MultiplicitySubsetContext { - let localctx: MultiplicitySubsetContext = new MultiplicitySubsetContext(this, this._ctx, this.state); - this.enterRule(localctx, 400, SysMLv2Parser.RULE_multiplicitySubset); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2595; - this.match(SysMLv2Parser.MULTIPLICITY); - this.state = 2597; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2596; - this.identification(); - } - } - - this.state = 2599; - this.subsets(); - this.state = 2600; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public multiplicityRange(): MultiplicityRangeContext { - let localctx: MultiplicityRangeContext = new MultiplicityRangeContext(this, this._ctx, this.state); - this.enterRule(localctx, 402, SysMLv2Parser.RULE_multiplicityRange); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2602; - this.match(SysMLv2Parser.MULTIPLICITY); - this.state = 2604; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2603; - this.identification(); - } - } - - this.state = 2606; - this.multiplicityBounds(); - this.state = 2607; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedMultiplicity(): OwnedMultiplicityContext { - let localctx: OwnedMultiplicityContext = new OwnedMultiplicityContext(this, this._ctx, this.state); - this.enterRule(localctx, 404, SysMLv2Parser.RULE_ownedMultiplicity); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2609; - this.ownedMultiplicityRange(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ownedMultiplicityRange(): OwnedMultiplicityRangeContext { - let localctx: OwnedMultiplicityRangeContext = new OwnedMultiplicityRangeContext(this, this._ctx, this.state); - this.enterRule(localctx, 406, SysMLv2Parser.RULE_ownedMultiplicityRange); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2611; - this.multiplicityBounds(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public multiplicityBounds(): MultiplicityBoundsContext { - let localctx: MultiplicityBoundsContext = new MultiplicityBoundsContext(this, this._ctx, this.state); - this.enterRule(localctx, 408, SysMLv2Parser.RULE_multiplicityBounds); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2613; - this.match(SysMLv2Parser.LBRACK); - this.state = 2617; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 230, this._ctx) ) { - case 1: - { - this.state = 2614; - this.multiplicityExpressionMember(); - this.state = 2615; - this.match(SysMLv2Parser.DOT_DOT); - } - break; - } - this.state = 2619; - this.multiplicityExpressionMember(); - this.state = 2620; - this.match(SysMLv2Parser.RBRACK); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public multiplicityExpressionMember(): MultiplicityExpressionMemberContext { - let localctx: MultiplicityExpressionMemberContext = new MultiplicityExpressionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 410, SysMLv2Parser.RULE_multiplicityExpressionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2624; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 64: - case 156: - case 198: - case 220: - case 221: - case 222: - { - this.state = 2622; - this.literalExpression(); - } - break; - case 193: - case 218: - case 219: - { - this.state = 2623; - this.featureReferenceExpression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metaclass(): MetaclassContext { - let localctx: MetaclassContext = new MetaclassContext(this, this._ctx, this.state); - this.enterRule(localctx, 412, SysMLv2Parser.RULE_metaclass); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2626; - this.typePrefix(); - this.state = 2627; - this.match(SysMLv2Parser.METACLASS); - this.state = 2628; - this.classifierDeclaration(); - this.state = 2629; - this.typeBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public prefixMetadataAnnotation(): PrefixMetadataAnnotationContext { - let localctx: PrefixMetadataAnnotationContext = new PrefixMetadataAnnotationContext(this, this._ctx, this.state); - this.enterRule(localctx, 414, SysMLv2Parser.RULE_prefixMetadataAnnotation); - try { - this.state = 2635; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 232, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2631; - this.match(SysMLv2Parser.HASH); - this.state = 2632; - this.prefixMetadataFeature(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2633; - this.match(SysMLv2Parser.HASH); - this.state = 2634; - this.prefixMetadataUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public prefixMetadataMember(): PrefixMetadataMemberContext { - let localctx: PrefixMetadataMemberContext = new PrefixMetadataMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 416, SysMLv2Parser.RULE_prefixMetadataMember); - try { - this.state = 2641; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 233, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2637; - this.match(SysMLv2Parser.HASH); - this.state = 2638; - this.prefixMetadataFeature(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2639; - this.match(SysMLv2Parser.HASH); - this.state = 2640; - this.prefixMetadataUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public prefixMetadataFeature(): PrefixMetadataFeatureContext { - let localctx: PrefixMetadataFeatureContext = new PrefixMetadataFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 418, SysMLv2Parser.RULE_prefixMetadataFeature); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2643; - this.ownedFeatureTyping(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataFeature(): MetadataFeatureContext { - let localctx: MetadataFeatureContext = new MetadataFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 420, SysMLv2Parser.RULE_metadataFeature); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2648; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 2645; - this.prefixMetadataMember(); - } - } - this.state = 2650; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2651; - _la = this._input.LA(1); - if(!(_la===102 || _la===210)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 2652; - this.metadataFeatureDeclaration(); - this.state = 2662; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===1) { - { - this.state = 2653; - this.match(SysMLv2Parser.ABOUT); - this.state = 2654; - this.annotation(); - this.state = 2659; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 2655; - this.match(SysMLv2Parser.COMMA); - this.state = 2656; - this.annotation(); - } - } - this.state = 2661; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 2664; - this.metadataBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataFeatureDeclaration(): MetadataFeatureDeclarationContext { - let localctx: MetadataFeatureDeclarationContext = new MetadataFeatureDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 422, SysMLv2Parser.RULE_metadataFeatureDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2674; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 239, this._ctx) ) { - case 1: - { - this.state = 2667; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2666; - this.identification(); - } - } - - this.state = 2672; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 204: - { - this.state = 2669; - this.match(SysMLv2Parser.COLON); - } - break; - case 158: - { - this.state = 2670; - this.match(SysMLv2Parser.TYPED); - this.state = 2671; - this.match(SysMLv2Parser.BY); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - } - this.state = 2676; - this.ownedFeatureTyping(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataBody(): MetadataBodyContext { - let localctx: MetadataBodyContext = new MetadataBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 424, SysMLv2Parser.RULE_metadataBody); - let _la: number; - try { - this.state = 2698; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 243, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2678; - this.match(SysMLv2Parser.SEMI); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2679; - this.match(SysMLv2Parser.LBRACE); - this.state = 2683; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1880162436) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 2917381) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 1904755717) !== 0) || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 1139818511) !== 0) || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 2624201) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 196609) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 9089) !== 0)) { - { - { - this.state = 2680; - this.metadataBodyElement(); - } - } - this.state = 2685; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2686; - this.match(SysMLv2Parser.RBRACE); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2687; - this.match(SysMLv2Parser.LBRACE); - this.state = 2694; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1174932628) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 71369249) !== 0) || ((((_la - 70)) & ~0x1F) === 0 && ((1 << (_la - 70)) & 60854785) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3002245377) !== 0) || ((((_la - 141)) & ~0x1F) === 0 && ((1 << (_la - 141)) & 857735171) !== 0) || ((((_la - 176)) & ~0x1F) === 0 && ((1 << (_la - 176)) & 196609) !== 0) || ((((_la - 210)) & ~0x1F) === 0 && ((1 << (_la - 210)) & 8961) !== 0)) { - { - this.state = 2692; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 241, this._ctx) ) { - case 1: - { - this.state = 2688; - this.definitionMember(); - } - break; - case 2: - { - this.state = 2689; - this.metadataBodyUsageMember(); - } - break; - case 3: - { - this.state = 2690; - this.aliasMember(); - } - break; - case 4: - { - this.state = 2691; - this.importRule(); - } - break; - } - } - this.state = 2696; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2697; - this.match(SysMLv2Parser.RBRACE); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataBodyElement(): MetadataBodyElementContext { - let localctx: MetadataBodyElementContext = new MetadataBodyElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 426, SysMLv2Parser.RULE_metadataBodyElement); - try { - this.state = 2704; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 244, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2700; - this.nonFeatureMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2701; - this.metadataBodyFeatureMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2702; - this.aliasMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 2703; - this.importRule(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataBodyFeatureMember(): MetadataBodyFeatureMemberContext { - let localctx: MetadataBodyFeatureMemberContext = new MetadataBodyFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 428, SysMLv2Parser.RULE_metadataBodyFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2706; - this.metadataBodyFeature(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataBodyFeature(): MetadataBodyFeatureContext { - let localctx: MetadataBodyFeatureContext = new MetadataBodyFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 430, SysMLv2Parser.RULE_metadataBodyFeature); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2709; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===65) { - { - this.state = 2708; - this.match(SysMLv2Parser.FEATURE); - } - } - - this.state = 2712; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===125 || _la===176) { - { - this.state = 2711; - _la = this._input.LA(1); - if(!(_la===125 || _la===176)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 2714; - this.ownedRedefinition(); - this.state = 2716; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 2715; - this.featureSpecializationPart(); - } - } - - this.state = 2719; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2718; - this.valuePart(); - } - } - - this.state = 2721; - this.metadataBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public package_(): PackageContext { - let localctx: PackageContext = new PackageContext(this, this._ctx, this.state); - this.enterRule(localctx, 432, SysMLv2Parser.RULE_package); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2726; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 2723; - this.prefixMetadataMember(); - } - } - this.state = 2728; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2729; - this.packageDeclaration(); - this.state = 2730; - this.packageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public libraryPackage(): LibraryPackageContext { - let localctx: LibraryPackageContext = new LibraryPackageContext(this, this._ctx, this.state); - this.enterRule(localctx, 434, SysMLv2Parser.RULE_libraryPackage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2733; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===141) { - { - this.state = 2732; - this.match(SysMLv2Parser.STANDARD); - } - } - - this.state = 2735; - this.match(SysMLv2Parser.LIBRARY); - this.state = 2739; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 2736; - this.prefixMetadataMember(); - } - } - this.state = 2741; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2742; - this.packageDeclaration(); - this.state = 2743; - this.packageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public packageDeclaration(): PackageDeclarationContext { - let localctx: PackageDeclarationContext = new PackageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 436, SysMLv2Parser.RULE_packageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2745; - this.match(SysMLv2Parser.PACKAGE); - this.state = 2747; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2746; - this.identification(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public packageBody(): PackageBodyContext { - let localctx: PackageBodyContext = new PackageBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 438, SysMLv2Parser.RULE_packageBody); - let _la: number; - try { - this.state = 2758; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 2749; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 2750; - this.match(SysMLv2Parser.LBRACE); - this.state = 2754; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490981169) !== 0) || ((((_la - 68)) & ~0x1F) === 0 && ((1 << (_la - 68)) & 2390947847) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3364135109) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 2751; - this.packageBodyElement(); - } - } - this.state = 2756; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2757; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public elementFilterMember(): ElementFilterMemberContext { - let localctx: ElementFilterMemberContext = new ElementFilterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 440, SysMLv2Parser.RULE_elementFilterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2760; - this.memberPrefix(); - this.state = 2761; - this.match(SysMLv2Parser.FILTER); - this.state = 2762; - this.ownedExpression(0); - this.state = 2763; - this.match(SysMLv2Parser.SEMI); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public dependencyDeclaration(): DependencyDeclarationContext { - let localctx: DependencyDeclarationContext = new DependencyDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 442, SysMLv2Parser.RULE_dependencyDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2769; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 256, this._ctx) ) { - case 1: - { - this.state = 2766; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2765; - this.identification(); - } - } - - this.state = 2768; - this.match(SysMLv2Parser.FROM); - } - break; - } - this.state = 2771; - this.qualifiedName(); - this.state = 2776; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 2772; - this.match(SysMLv2Parser.COMMA); - this.state = 2773; - this.qualifiedName(); - } - } - this.state = 2778; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2779; - this.match(SysMLv2Parser.TO); - this.state = 2780; - this.qualifiedName(); - this.state = 2785; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 2781; - this.match(SysMLv2Parser.COMMA); - this.state = 2782; - this.qualifiedName(); - } - } - this.state = 2787; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public annotatingMember(): AnnotatingMemberContext { - let localctx: AnnotatingMemberContext = new AnnotatingMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 444, SysMLv2Parser.RULE_annotatingMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2788; - this.annotatingElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public packageBodyElement(): PackageBodyElementContext { - let localctx: PackageBodyElementContext = new PackageBodyElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 446, SysMLv2Parser.RULE_packageBodyElement); - try { - this.state = 2794; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 259, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2790; - this.packageMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2791; - this.elementFilterMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2792; - this.aliasMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 2793; - this.importRule(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public packageMember(): PackageMemberContext { - let localctx: PackageMemberContext = new PackageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 448, SysMLv2Parser.RULE_packageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2796; - this.memberPrefix(); - this.state = 2799; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 260, this._ctx) ) { - case 1: - { - this.state = 2797; - this.definitionElement(); - } - break; - case 2: - { - this.state = 2798; - this.usageElement(); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionElement(): DefinitionElementContext { - let localctx: DefinitionElementContext = new DefinitionElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 450, SysMLv2Parser.RULE_definitionElement); - try { - this.state = 2831; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 261, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2801; - this.package_(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2802; - this.libraryPackage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2803; - this.annotatingElement(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 2804; - this.dependency(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 2805; - this.attributeDefinition(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 2806; - this.enumerationDefinition(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 2807; - this.occurrenceDefinition(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 2808; - this.individualDefinition(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 2809; - this.itemDefinition(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 2810; - this.partDefinition(); - } - break; - case 11: - this.enterOuterAlt(localctx, 11); - { - this.state = 2811; - this.connectionDefinition(); - } - break; - case 12: - this.enterOuterAlt(localctx, 12); - { - this.state = 2812; - this.flowDefinition(); - } - break; - case 13: - this.enterOuterAlt(localctx, 13); - { - this.state = 2813; - this.interfaceDefinition(); - } - break; - case 14: - this.enterOuterAlt(localctx, 14); - { - this.state = 2814; - this.portDefinition(); - } - break; - case 15: - this.enterOuterAlt(localctx, 15); - { - this.state = 2815; - this.actionDefinition(); - } - break; - case 16: - this.enterOuterAlt(localctx, 16); - { - this.state = 2816; - this.calculationDefinition(); - } - break; - case 17: - this.enterOuterAlt(localctx, 17); - { - this.state = 2817; - this.stateDefinition(); - } - break; - case 18: - this.enterOuterAlt(localctx, 18); - { - this.state = 2818; - this.constraintDefinition(); - } - break; - case 19: - this.enterOuterAlt(localctx, 19); - { - this.state = 2819; - this.requirementDefinition(); - } - break; - case 20: - this.enterOuterAlt(localctx, 20); - { - this.state = 2820; - this.concernDefinition(); - } - break; - case 21: - this.enterOuterAlt(localctx, 21); - { - this.state = 2821; - this.caseDefinition(); - } - break; - case 22: - this.enterOuterAlt(localctx, 22); - { - this.state = 2822; - this.analysisCaseDefinition(); - } - break; - case 23: - this.enterOuterAlt(localctx, 23); - { - this.state = 2823; - this.verificationCaseDefinition(); - } - break; - case 24: - this.enterOuterAlt(localctx, 24); - { - this.state = 2824; - this.useCaseDefinition(); - } - break; - case 25: - this.enterOuterAlt(localctx, 25); - { - this.state = 2825; - this.viewDefinition(); - } - break; - case 26: - this.enterOuterAlt(localctx, 26); - { - this.state = 2826; - this.viewpointDefinition(); - } - break; - case 27: - this.enterOuterAlt(localctx, 27); - { - this.state = 2827; - this.renderingDefinition(); - } - break; - case 28: - this.enterOuterAlt(localctx, 28); - { - this.state = 2828; - this.metadataDefinition(); - } - break; - case 29: - this.enterOuterAlt(localctx, 29); - { - this.state = 2829; - this.allocationDefinition(); - } - break; - case 30: - this.enterOuterAlt(localctx, 30); - { - this.state = 2830; - this.extendedDefinition(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usageElement(): UsageElementContext { - let localctx: UsageElementContext = new UsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 452, SysMLv2Parser.RULE_usageElement); - try { - this.state = 2835; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 262, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2833; - this.nonOccurrenceUsageElement(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2834; - this.occurrenceUsageElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public basicDefinitionPrefix(): BasicDefinitionPrefixContext { - let localctx: BasicDefinitionPrefixContext = new BasicDefinitionPrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 454, SysMLv2Parser.RULE_basicDefinitionPrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2837; - _la = this._input.LA(1); - if(!(_la===2 || _la===165)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionExtensionKeyword(): DefinitionExtensionKeywordContext { - let localctx: DefinitionExtensionKeywordContext = new DefinitionExtensionKeywordContext(this, this._ctx, this.state); - this.enterRule(localctx, 456, SysMLv2Parser.RULE_definitionExtensionKeyword); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2839; - this.prefixMetadataMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionPrefix(): DefinitionPrefixContext { - let localctx: DefinitionPrefixContext = new DefinitionPrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 458, SysMLv2Parser.RULE_definitionPrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2842; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2 || _la===165) { - { - this.state = 2841; - this.basicDefinitionPrefix(); - } - } - - this.state = 2847; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 2844; - this.definitionExtensionKeyword(); - } - } - this.state = 2849; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definition(): DefinitionContext { - let localctx: DefinitionContext = new DefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 460, SysMLv2Parser.RULE_definition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2850; - this.definitionDeclaration(); - this.state = 2851; - this.definitionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionDeclaration(): DefinitionDeclarationContext { - let localctx: DefinitionDeclarationContext = new DefinitionDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 462, SysMLv2Parser.RULE_definitionDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2854; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 2853; - this.identification(); - } - } - - this.state = 2857; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===139 || _la===185) { - { - this.state = 2856; - this.subclassificationPart(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionBody(): DefinitionBodyContext { - let localctx: DefinitionBodyContext = new DefinitionBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 464, SysMLv2Parser.RULE_definitionBody); - let _la: number; - try { - this.state = 2868; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 2859; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 2860; - this.match(SysMLv2Parser.LBRACE); - this.state = 2864; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490981169) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1195473923) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901137093) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 2861; - this.definitionBodyItem(); - } - } - this.state = 2866; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2867; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionBodyItem(): DefinitionBodyItemContext { - let localctx: DefinitionBodyItemContext = new DefinitionBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 466, SysMLv2Parser.RULE_definitionBodyItem); - let _la: number; - try { - this.state = 2880; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 270, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2870; - this.importRule(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2871; - this.memberPrefix(); - this.state = 2872; - this.definitionBodyItemContent(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2875; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===152) { - { - this.state = 2874; - this.sourceSuccessionMember(); - } - } - - this.state = 2877; - this.memberPrefix(); - this.state = 2878; - this.occurrenceUsageElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionBodyItemContent(): DefinitionBodyItemContentContext { - let localctx: DefinitionBodyItemContentContext = new DefinitionBodyItemContentContext(this, this._ctx, this.state); - this.enterRule(localctx, 468, SysMLv2Parser.RULE_definitionBodyItemContent); - let _la: number; - try { - this.state = 2900; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 273, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2882; - this.match(SysMLv2Parser.ALIAS); - this.state = 2887; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===206) { - { - this.state = 2883; - this.match(SysMLv2Parser.LT); - this.state = 2884; - this.name(); - this.state = 2885; - this.match(SysMLv2Parser.GT); - } - } - - this.state = 2890; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===218 || _la===219) { - { - this.state = 2889; - this.name(); - } - } - - this.state = 2892; - this.match(SysMLv2Parser.FOR); - this.state = 2893; - this.qualifiedName(); - this.state = 2894; - this.relationshipBody(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2896; - this.match(SysMLv2Parser.VARIANT); - this.state = 2897; - this.variantUsageElement(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2898; - this.definitionElement(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 2899; - this.nonOccurrenceUsageElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public definitionMember(): DefinitionMemberContext { - let localctx: DefinitionMemberContext = new DefinitionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 470, SysMLv2Parser.RULE_definitionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2902; - this.memberPrefix(); - this.state = 2903; - this.definitionElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public variantUsageMember(): VariantUsageMemberContext { - let localctx: VariantUsageMemberContext = new VariantUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 472, SysMLv2Parser.RULE_variantUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2905; - this.memberPrefix(); - this.state = 2906; - this.match(SysMLv2Parser.VARIANT); - this.state = 2907; - this.variantUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nonOccurrenceUsageMember(): NonOccurrenceUsageMemberContext { - let localctx: NonOccurrenceUsageMemberContext = new NonOccurrenceUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 474, SysMLv2Parser.RULE_nonOccurrenceUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2909; - this.memberPrefix(); - this.state = 2910; - this.nonOccurrenceUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public occurrenceUsageMember(): OccurrenceUsageMemberContext { - let localctx: OccurrenceUsageMemberContext = new OccurrenceUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 476, SysMLv2Parser.RULE_occurrenceUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2912; - this.memberPrefix(); - this.state = 2913; - this.occurrenceUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public structureUsageMember(): StructureUsageMemberContext { - let localctx: StructureUsageMemberContext = new StructureUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 478, SysMLv2Parser.RULE_structureUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2915; - this.memberPrefix(); - this.state = 2916; - this.structureUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public behaviorUsageMember(): BehaviorUsageMemberContext { - let localctx: BehaviorUsageMemberContext = new BehaviorUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 480, SysMLv2Parser.RULE_behaviorUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2918; - this.memberPrefix(); - this.state = 2919; - this.behaviorUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public refPrefix(): RefPrefixContext { - let localctx: RefPrefixContext = new RefPrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 482, SysMLv2Parser.RULE_refPrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2922; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===80 || _la===83 || _la===114) { - { - this.state = 2921; - this.featureDirection(); - } - } - - this.state = 2925; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===49) { - { - this.state = 2924; - this.match(SysMLv2Parser.DERIVED); - } - } - - this.state = 2928; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2 || _la===165) { - { - this.state = 2927; - _la = this._input.LA(1); - if(!(_la===2 || _la===165)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 2931; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===40) { - { - this.state = 2930; - this.match(SysMLv2Parser.CONSTANT); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public basicUsagePrefix(): BasicUsagePrefixContext { - let localctx: BasicUsagePrefixContext = new BasicUsagePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 484, SysMLv2Parser.RULE_basicUsagePrefix); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2933; - this.refPrefix(); - this.state = 2935; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 278, this._ctx) ) { - case 1: - { - this.state = 2934; - this.match(SysMLv2Parser.REF); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public endUsagePrefix(): EndUsagePrefixContext { - let localctx: EndUsagePrefixContext = new EndUsagePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 486, SysMLv2Parser.RULE_endUsagePrefix); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2937; - this.match(SysMLv2Parser.END); - this.state = 2938; - this.ownedCrossFeatureMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usageExtensionKeyword(): UsageExtensionKeywordContext { - let localctx: UsageExtensionKeywordContext = new UsageExtensionKeywordContext(this, this._ctx, this.state); - this.enterRule(localctx, 488, SysMLv2Parser.RULE_usageExtensionKeyword); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2940; - this.prefixMetadataMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public unextendedUsagePrefix(): UnextendedUsagePrefixContext { - let localctx: UnextendedUsagePrefixContext = new UnextendedUsagePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 490, SysMLv2Parser.RULE_unextendedUsagePrefix); - try { - this.state = 2944; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 56: - this.enterOuterAlt(localctx, 1); - { - this.state = 2942; - this.endUsagePrefix(); - } - break; - case 2: - case 19: - case 21: - case 22: - case 40: - case 49: - case 58: - case 69: - case 80: - case 83: - case 114: - case 127: - case 150: - case 165: - case 192: - this.enterOuterAlt(localctx, 2); - { - this.state = 2943; - this.basicUsagePrefix(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usagePrefix(): UsagePrefixContext { - let localctx: UsagePrefixContext = new UsagePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 492, SysMLv2Parser.RULE_usagePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2946; - this.unextendedUsagePrefix(); - this.state = 2950; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 2947; - this.usageExtensionKeyword(); - } - } - this.state = 2952; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usage(): UsageContext { - let localctx: UsageContext = new UsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 494, SysMLv2Parser.RULE_usage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2954; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 2953; - this.usageDeclaration(); - } - } - - this.state = 2956; - this.usageCompletion(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usageDeclaration(): UsageDeclarationContext { - let localctx: UsageDeclarationContext = new UsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 496, SysMLv2Parser.RULE_usageDeclaration); - try { - this.state = 2963; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 206: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 2958; - this.identification(); - this.state = 2960; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 282, this._ctx) ) { - case 1: - { - this.state = 2959; - this.featureSpecializationPart(); - } - break; - } - } - break; - case 42: - case 47: - case 106: - case 113: - case 125: - case 128: - case 148: - case 158: - case 175: - case 176: - case 185: - case 188: - case 204: - case 211: - this.enterOuterAlt(localctx, 2); - { - this.state = 2962; - this.featureSpecializationPart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usageCompletion(): UsageCompletionContext { - let localctx: UsageCompletionContext = new UsageCompletionContext(this, this._ctx, this.state); - this.enterRule(localctx, 498, SysMLv2Parser.RULE_usageCompletion); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2966; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 2965; - this.valuePart(); - } - } - - this.state = 2968; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public usageBody(): UsageBodyContext { - let localctx: UsageBodyContext = new UsageBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 500, SysMLv2Parser.RULE_usageBody); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2970; - this.definitionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public defaultReferenceUsage(): DefaultReferenceUsageContext { - let localctx: DefaultReferenceUsageContext = new DefaultReferenceUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 502, SysMLv2Parser.RULE_defaultReferenceUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2972; - this.refPrefix(); - this.state = 2973; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public referenceUsage(): ReferenceUsageContext { - let localctx: ReferenceUsageContext = new ReferenceUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 504, SysMLv2Parser.RULE_referenceUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2977; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 56: - { - this.state = 2975; - this.endUsagePrefix(); - } - break; - case 2: - case 40: - case 49: - case 80: - case 83: - case 114: - case 127: - case 165: - { - this.state = 2976; - this.refPrefix(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 2979; - this.match(SysMLv2Parser.REF); - this.state = 2980; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public endFeatureUsage(): EndFeatureUsageContext { - let localctx: EndFeatureUsageContext = new EndFeatureUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 506, SysMLv2Parser.RULE_endFeatureUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2982; - this.endUsagePrefix(); - this.state = 2983; - this.featureDeclaration(); - this.state = 2984; - this.usageCompletion(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public variantReference(): VariantReferenceContext { - let localctx: VariantReferenceContext = new VariantReferenceContext(this, this._ctx, this.state); - this.enterRule(localctx, 508, SysMLv2Parser.RULE_variantReference); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 2986; - this.ownedReferenceSubsetting(); - this.state = 2990; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===42 || _la===47 || ((((_la - 125)) & ~0x1F) === 0 && ((1 << (_la - 125)) & 8388617) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 1208352769) !== 0) || _la===204) { - { - { - this.state = 2987; - this.featureSpecialization(); - } - } - this.state = 2992; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 2993; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nonOccurrenceUsageElement(): NonOccurrenceUsageElementContext { - let localctx: NonOccurrenceUsageElementContext = new NonOccurrenceUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 510, SysMLv2Parser.RULE_nonOccurrenceUsageElement); - try { - this.state = 3003; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 287, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 2995; - this.referenceUsage(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 2996; - this.endFeatureUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 2997; - this.attributeUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 2998; - this.enumerationUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 2999; - this.bindingConnectorAsUsage(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3000; - this.successionAsUsage(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 3001; - this.extendedUsage(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 3002; - this.defaultReferenceUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public occurrenceUsageElement(): OccurrenceUsageElementContext { - let localctx: OccurrenceUsageElementContext = new OccurrenceUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 512, SysMLv2Parser.RULE_occurrenceUsageElement); - try { - this.state = 3007; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 288, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3005; - this.structureUsageElement(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3006; - this.behaviorUsageElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public structureUsageElement(): StructureUsageElementContext { - let localctx: StructureUsageElementContext = new StructureUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 514, SysMLv2Parser.RULE_structureUsageElement); - try { - this.state = 3024; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 289, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3009; - this.occurrenceUsage(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3010; - this.individualUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3011; - this.portionUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3012; - this.eventOccurrenceUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3013; - this.itemUsage(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3014; - this.partUsage(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 3015; - this.viewUsage(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 3016; - this.renderingUsage(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 3017; - this.portUsage(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 3018; - this.connectionUsage(); - } - break; - case 11: - this.enterOuterAlt(localctx, 11); - { - this.state = 3019; - this.interfaceUsage(); - } - break; - case 12: - this.enterOuterAlt(localctx, 12); - { - this.state = 3020; - this.allocationUsage(); - } - break; - case 13: - this.enterOuterAlt(localctx, 13); - { - this.state = 3021; - this.message(); - } - break; - case 14: - this.enterOuterAlt(localctx, 14); - { - this.state = 3022; - this.flowUsage(); - } - break; - case 15: - this.enterOuterAlt(localctx, 15); - { - this.state = 3023; - this.successionFlowUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public behaviorUsageElement(): BehaviorUsageElementContext { - let localctx: BehaviorUsageElementContext = new BehaviorUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 516, SysMLv2Parser.RULE_behaviorUsageElement); - try { - this.state = 3042; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 290, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3026; - this.actionUsage(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3027; - this.calculationUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3028; - this.stateUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3029; - this.constraintUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3030; - this.requirementUsage(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3031; - this.concernUsage(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 3032; - this.caseUsage(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 3033; - this.analysisCaseUsage(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 3034; - this.verificationCaseUsage(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 3035; - this.useCaseUsage(); - } - break; - case 11: - this.enterOuterAlt(localctx, 11); - { - this.state = 3036; - this.viewpointUsage(); - } - break; - case 12: - this.enterOuterAlt(localctx, 12); - { - this.state = 3037; - this.performActionUsage(); - } - break; - case 13: - this.enterOuterAlt(localctx, 13); - { - this.state = 3038; - this.exhibitStateUsage(); - } - break; - case 14: - this.enterOuterAlt(localctx, 14); - { - this.state = 3039; - this.includeUseCaseUsage(); - } - break; - case 15: - this.enterOuterAlt(localctx, 15); - { - this.state = 3040; - this.assertConstraintUsage(); - } - break; - case 16: - this.enterOuterAlt(localctx, 16); - { - this.state = 3041; - this.satisfyRequirementUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public variantUsageElement(): VariantUsageElementContext { - let localctx: VariantUsageElementContext = new VariantUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 518, SysMLv2Parser.RULE_variantUsageElement); - try { - this.state = 3065; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 291, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3044; - this.variantReference(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3045; - this.referenceUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3046; - this.attributeUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3047; - this.bindingConnectorAsUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3048; - this.successionAsUsage(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3049; - this.occurrenceUsage(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 3050; - this.individualUsage(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 3051; - this.portionUsage(); - } - break; - case 9: - this.enterOuterAlt(localctx, 9); - { - this.state = 3052; - this.eventOccurrenceUsage(); - } - break; - case 10: - this.enterOuterAlt(localctx, 10); - { - this.state = 3053; - this.itemUsage(); - } - break; - case 11: - this.enterOuterAlt(localctx, 11); - { - this.state = 3054; - this.partUsage(); - } - break; - case 12: - this.enterOuterAlt(localctx, 12); - { - this.state = 3055; - this.viewUsage(); - } - break; - case 13: - this.enterOuterAlt(localctx, 13); - { - this.state = 3056; - this.renderingUsage(); - } - break; - case 14: - this.enterOuterAlt(localctx, 14); - { - this.state = 3057; - this.portUsage(); - } - break; - case 15: - this.enterOuterAlt(localctx, 15); - { - this.state = 3058; - this.connectionUsage(); - } - break; - case 16: - this.enterOuterAlt(localctx, 16); - { - this.state = 3059; - this.interfaceUsage(); - } - break; - case 17: - this.enterOuterAlt(localctx, 17); - { - this.state = 3060; - this.allocationUsage(); - } - break; - case 18: - this.enterOuterAlt(localctx, 18); - { - this.state = 3061; - this.message(); - } - break; - case 19: - this.enterOuterAlt(localctx, 19); - { - this.state = 3062; - this.flowUsage(); - } - break; - case 20: - this.enterOuterAlt(localctx, 20); - { - this.state = 3063; - this.successionFlowUsage(); - } - break; - case 21: - this.enterOuterAlt(localctx, 21); - { - this.state = 3064; - this.behaviorUsageElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subclassificationPart(): SubclassificationPartContext { - let localctx: SubclassificationPartContext = new SubclassificationPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 520, SysMLv2Parser.RULE_subclassificationPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3067; - _la = this._input.LA(1); - if(!(_la===139 || _la===185)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 3068; - this.ownedSubclassification(); - this.state = 3073; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 3069; - this.match(SysMLv2Parser.COMMA); - this.state = 3070; - this.ownedSubclassification(); - } - } - this.state = 3075; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public attributeDefinition(): AttributeDefinitionContext { - let localctx: AttributeDefinitionContext = new AttributeDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 522, SysMLv2Parser.RULE_attributeDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3076; - this.definitionPrefix(); - this.state = 3077; - this.match(SysMLv2Parser.ATTRIBUTE); - this.state = 3078; - this.match(SysMLv2Parser.DEF); - this.state = 3079; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public attributeUsage(): AttributeUsageContext { - let localctx: AttributeUsageContext = new AttributeUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 524, SysMLv2Parser.RULE_attributeUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3081; - this.usagePrefix(); - this.state = 3082; - this.match(SysMLv2Parser.ATTRIBUTE); - this.state = 3083; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public enumerationDefinition(): EnumerationDefinitionContext { - let localctx: EnumerationDefinitionContext = new EnumerationDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 526, SysMLv2Parser.RULE_enumerationDefinition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3088; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3085; - this.definitionExtensionKeyword(); - } - } - this.state = 3090; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3091; - this.match(SysMLv2Parser.ENUM); - this.state = 3092; - this.match(SysMLv2Parser.DEF); - this.state = 3093; - this.definitionDeclaration(); - this.state = 3094; - this.enumerationBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public enumerationBody(): EnumerationBodyContext { - let localctx: EnumerationBodyContext = new EnumerationBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 528, SysMLv2Parser.RULE_enumerationBody); - let _la: number; - try { - this.state = 3106; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 3096; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 3097; - this.match(SysMLv2Parser.LBRACE); - this.state = 3102; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & 285413377) !== 0) || ((((_la - 93)) & ~0x1F) === 0 && ((1 << (_la - 93)) & 3759153669) !== 0) || ((((_la - 125)) & ~0x1F) === 0 && ((1 << (_la - 125)) & 8388681) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 1275461633) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 2353852417) !== 0)) { - { - this.state = 3100; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 30: - case 54: - case 93: - case 95: - case 102: - case 131: - case 192: - case 210: - case 223: - { - this.state = 3098; - this.annotatingMember(); - } - break; - case 42: - case 46: - case 47: - case 58: - case 106: - case 113: - case 122: - case 123: - case 124: - case 125: - case 128: - case 148: - case 158: - case 175: - case 176: - case 184: - case 185: - case 188: - case 204: - case 205: - case 206: - case 207: - case 211: - case 214: - case 218: - case 219: - { - this.state = 3099; - this.enumerationUsageMember(); - } - break; - default: - throw new NoViableAltException(this); - } - } - this.state = 3104; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3105; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public enumerationUsageMember(): EnumerationUsageMemberContext { - let localctx: EnumerationUsageMemberContext = new EnumerationUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 530, SysMLv2Parser.RULE_enumerationUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3108; - this.memberPrefix(); - this.state = 3109; - this.enumeratedValue(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public enumeratedValue(): EnumeratedValueContext { - let localctx: EnumeratedValueContext = new EnumeratedValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 532, SysMLv2Parser.RULE_enumeratedValue); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3112; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===58) { - { - this.state = 3111; - this.match(SysMLv2Parser.ENUM); - } - } - - this.state = 3114; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public enumerationUsage(): EnumerationUsageContext { - let localctx: EnumerationUsageContext = new EnumerationUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 534, SysMLv2Parser.RULE_enumerationUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3116; - this.usagePrefix(); - this.state = 3117; - this.match(SysMLv2Parser.ENUM); - this.state = 3118; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - let localctx: OccurrenceDefinitionPrefixContext = new OccurrenceDefinitionPrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 536, SysMLv2Parser.RULE_occurrenceDefinitionPrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3121; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2 || _la===165) { - { - this.state = 3120; - this.basicDefinitionPrefix(); - } - } - - this.state = 3125; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===82) { - { - this.state = 3123; - this.match(SysMLv2Parser.INDIVIDUAL); - this.state = 3124; - this.emptyMultiplicityMember(); - } - } - - this.state = 3130; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3127; - this.definitionExtensionKeyword(); - } - } - this.state = 3132; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public occurrenceDefinition(): OccurrenceDefinitionContext { - let localctx: OccurrenceDefinitionContext = new OccurrenceDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 538, SysMLv2Parser.RULE_occurrenceDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3133; - this.occurrenceDefinitionPrefix(); - this.state = 3134; - this.match(SysMLv2Parser.OCCURRENCE); - this.state = 3135; - this.match(SysMLv2Parser.DEF); - this.state = 3136; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public individualDefinition(): IndividualDefinitionContext { - let localctx: IndividualDefinitionContext = new IndividualDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 540, SysMLv2Parser.RULE_individualDefinition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3139; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2 || _la===165) { - { - this.state = 3138; - this.basicDefinitionPrefix(); - } - } - - this.state = 3141; - this.match(SysMLv2Parser.INDIVIDUAL); - this.state = 3145; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3142; - this.definitionExtensionKeyword(); - } - } - this.state = 3147; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3148; - this.match(SysMLv2Parser.DEF); - this.state = 3149; - this.definition(); - this.state = 3150; - this.emptyMultiplicityMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyMultiplicityMember(): EmptyMultiplicityMemberContext { - let localctx: EmptyMultiplicityMemberContext = new EmptyMultiplicityMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 542, SysMLv2Parser.RULE_emptyMultiplicityMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3152; - this.emptyMultiplicity_(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - let localctx: OccurrenceUsagePrefixContext = new OccurrenceUsagePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 544, SysMLv2Parser.RULE_occurrenceUsagePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3154; - this.basicUsagePrefix(); - this.state = 3156; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===82) { - { - this.state = 3155; - this.match(SysMLv2Parser.INDIVIDUAL); - } - } - - this.state = 3159; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===137 || _la===153) { - { - this.state = 3158; - this.portionKind(); - } - } - - this.state = 3164; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3161; - this.usageExtensionKeyword(); - } - } - this.state = 3166; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public occurrenceUsage(): OccurrenceUsageContext { - let localctx: OccurrenceUsageContext = new OccurrenceUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 546, SysMLv2Parser.RULE_occurrenceUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3167; - this.occurrenceUsagePrefix(); - this.state = 3168; - this.match(SysMLv2Parser.OCCURRENCE); - this.state = 3169; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public individualUsage(): IndividualUsageContext { - let localctx: IndividualUsageContext = new IndividualUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 548, SysMLv2Parser.RULE_individualUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3171; - this.basicUsagePrefix(); - this.state = 3172; - this.match(SysMLv2Parser.INDIVIDUAL); - this.state = 3176; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3173; - this.usageExtensionKeyword(); - } - } - this.state = 3178; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3179; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public portionUsage(): PortionUsageContext { - let localctx: PortionUsageContext = new PortionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 550, SysMLv2Parser.RULE_portionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3181; - this.basicUsagePrefix(); - this.state = 3183; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===82) { - { - this.state = 3182; - this.match(SysMLv2Parser.INDIVIDUAL); - } - } - - this.state = 3185; - this.portionKind(); - this.state = 3189; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3186; - this.usageExtensionKeyword(); - } - } - this.state = 3191; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3192; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public portionKind(): PortionKindContext { - let localctx: PortionKindContext = new PortionKindContext(this, this._ctx, this.state); - this.enterRule(localctx, 552, SysMLv2Parser.RULE_portionKind); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3194; - _la = this._input.LA(1); - if(!(_la===137 || _la===153)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public eventOccurrenceUsage(): EventOccurrenceUsageContext { - let localctx: EventOccurrenceUsageContext = new EventOccurrenceUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 554, SysMLv2Parser.RULE_eventOccurrenceUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3196; - this.occurrenceUsagePrefix(); - this.state = 3197; - this.match(SysMLv2Parser.EVENT); - this.state = 3206; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - { - this.state = 3198; - this.ownedReferenceSubsetting(); - this.state = 3200; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 3199; - this.featureSpecializationPart(); - } - } - - } - break; - case 110: - { - this.state = 3202; - this.match(SysMLv2Parser.OCCURRENCE); - this.state = 3204; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3203; - this.usageDeclaration(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3208; - this.usageCompletion(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sourceSuccessionMember(): SourceSuccessionMemberContext { - let localctx: SourceSuccessionMemberContext = new SourceSuccessionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 556, SysMLv2Parser.RULE_sourceSuccessionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3210; - this.match(SysMLv2Parser.THEN); - this.state = 3211; - this.sourceSuccession(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sourceSuccession(): SourceSuccessionContext { - let localctx: SourceSuccessionContext = new SourceSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 558, SysMLv2Parser.RULE_sourceSuccession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3213; - this.sourceEndMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sourceEndMember(): SourceEndMemberContext { - let localctx: SourceEndMemberContext = new SourceEndMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 560, SysMLv2Parser.RULE_sourceEndMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3215; - this.sourceEnd(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sourceEnd(): SourceEndContext { - let localctx: SourceEndContext = new SourceEndContext(this, this._ctx, this.state); - this.enterRule(localctx, 562, SysMLv2Parser.RULE_sourceEnd); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3218; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 312, this._ctx) ) { - case 1: - { - this.state = 3217; - this.ownedMultiplicity(); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public itemDefinition(): ItemDefinitionContext { - let localctx: ItemDefinitionContext = new ItemDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 564, SysMLv2Parser.RULE_itemDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3220; - this.occurrenceDefinitionPrefix(); - this.state = 3221; - this.match(SysMLv2Parser.ITEM); - this.state = 3222; - this.match(SysMLv2Parser.DEF); - this.state = 3223; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public itemUsage(): ItemUsageContext { - let localctx: ItemUsageContext = new ItemUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 566, SysMLv2Parser.RULE_itemUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3225; - this.occurrenceUsagePrefix(); - this.state = 3226; - this.match(SysMLv2Parser.ITEM); - this.state = 3227; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public partDefinition(): PartDefinitionContext { - let localctx: PartDefinitionContext = new PartDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 568, SysMLv2Parser.RULE_partDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3229; - this.occurrenceDefinitionPrefix(); - this.state = 3230; - this.match(SysMLv2Parser.PART); - this.state = 3231; - this.match(SysMLv2Parser.DEF); - this.state = 3232; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public partUsage(): PartUsageContext { - let localctx: PartUsageContext = new PartUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 570, SysMLv2Parser.RULE_partUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3234; - this.occurrenceUsagePrefix(); - this.state = 3235; - this.match(SysMLv2Parser.PART); - this.state = 3236; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public portDefinition(): PortDefinitionContext { - let localctx: PortDefinitionContext = new PortDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 572, SysMLv2Parser.RULE_portDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3238; - this.definitionPrefix(); - this.state = 3239; - this.match(SysMLv2Parser.PORT); - this.state = 3240; - this.match(SysMLv2Parser.DEF); - this.state = 3241; - this.definition(); - this.state = 3242; - this.conjugatedPortDefinitionMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public conjugatedPortDefinitionMember(): ConjugatedPortDefinitionMemberContext { - let localctx: ConjugatedPortDefinitionMemberContext = new ConjugatedPortDefinitionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 574, SysMLv2Parser.RULE_conjugatedPortDefinitionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3244; - this.conjugatedPortDefinition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public conjugatedPortDefinition(): ConjugatedPortDefinitionContext { - let localctx: ConjugatedPortDefinitionContext = new ConjugatedPortDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 576, SysMLv2Parser.RULE_conjugatedPortDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3246; - this.portConjugation(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public portUsage(): PortUsageContext { - let localctx: PortUsageContext = new PortUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 578, SysMLv2Parser.RULE_portUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3248; - this.occurrenceUsagePrefix(); - this.state = 3249; - this.match(SysMLv2Parser.PORT); - this.state = 3250; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public conjugatedPortTyping(): ConjugatedPortTypingContext { - let localctx: ConjugatedPortTypingContext = new ConjugatedPortTypingContext(this, this._ctx, this.state); - this.enterRule(localctx, 580, SysMLv2Parser.RULE_conjugatedPortTyping); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3252; - this.match(SysMLv2Parser.TILDE); - this.state = 3253; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connectionDefinition(): ConnectionDefinitionContext { - let localctx: ConnectionDefinitionContext = new ConnectionDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 582, SysMLv2Parser.RULE_connectionDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3255; - this.occurrenceDefinitionPrefix(); - this.state = 3256; - this.match(SysMLv2Parser.CONNECTION); - this.state = 3257; - this.match(SysMLv2Parser.DEF); - this.state = 3258; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connectionUsage(): ConnectionUsageContext { - let localctx: ConnectionUsageContext = new ConnectionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 584, SysMLv2Parser.RULE_connectionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3260; - this.occurrenceUsagePrefix(); - this.state = 3274; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 37: - { - this.state = 3261; - this.match(SysMLv2Parser.CONNECTION); - this.state = 3263; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3262; - this.usageDeclaration(); - } - } - - this.state = 3266; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 3265; - this.valuePart(); - } - } - - this.state = 3270; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===36) { - { - this.state = 3268; - this.match(SysMLv2Parser.CONNECT); - this.state = 3269; - this.connectorPart(); - } - } - - } - break; - case 36: - { - this.state = 3272; - this.match(SysMLv2Parser.CONNECT); - this.state = 3273; - this.connectorPart(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3276; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public connectorPart(): ConnectorPartContext { - let localctx: ConnectorPartContext = new ConnectorPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 586, SysMLv2Parser.RULE_connectorPart); - try { - this.state = 3280; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 211: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 3278; - this.binaryConnectorPart(); - } - break; - case 196: - this.enterOuterAlt(localctx, 2); - { - this.state = 3279; - this.naryConnectorPart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public binaryConnectorPart(): BinaryConnectorPartContext { - let localctx: BinaryConnectorPartContext = new BinaryConnectorPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 588, SysMLv2Parser.RULE_binaryConnectorPart); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3282; - this.connectorEndMember(); - this.state = 3283; - this.match(SysMLv2Parser.TO); - this.state = 3284; - this.connectorEndMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public naryConnectorPart(): NaryConnectorPartContext { - let localctx: NaryConnectorPartContext = new NaryConnectorPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 590, SysMLv2Parser.RULE_naryConnectorPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3286; - this.match(SysMLv2Parser.LPAREN); - this.state = 3287; - this.connectorEndMember(); - this.state = 3288; - this.match(SysMLv2Parser.COMMA); - this.state = 3289; - this.connectorEndMember(); - this.state = 3294; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 3290; - this.match(SysMLv2Parser.COMMA); - this.state = 3291; - this.connectorEndMember(); - } - } - this.state = 3296; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3297; - this.match(SysMLv2Parser.RPAREN); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public bindingConnectorAsUsage(): BindingConnectorAsUsageContext { - let localctx: BindingConnectorAsUsageContext = new BindingConnectorAsUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 592, SysMLv2Parser.RULE_bindingConnectorAsUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3299; - this.usagePrefix(); - this.state = 3304; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===22) { - { - this.state = 3300; - this.match(SysMLv2Parser.BINDING); - this.state = 3302; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3301; - this.usageDeclaration(); - } - } - - } - } - - this.state = 3306; - this.match(SysMLv2Parser.BIND); - this.state = 3307; - this.connectorEndMember(); - this.state = 3308; - this.match(SysMLv2Parser.EQ); - this.state = 3309; - this.connectorEndMember(); - this.state = 3310; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public successionAsUsage(): SuccessionAsUsageContext { - let localctx: SuccessionAsUsageContext = new SuccessionAsUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 594, SysMLv2Parser.RULE_successionAsUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3312; - this.usagePrefix(); - this.state = 3317; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===150) { - { - this.state = 3313; - this.match(SysMLv2Parser.SUCCESSION); - this.state = 3315; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3314; - this.usageDeclaration(); - } - } - - } - } - - this.state = 3319; - this.match(SysMLv2Parser.FIRST); - this.state = 3320; - this.connectorEndMember(); - this.state = 3321; - this.match(SysMLv2Parser.THEN); - this.state = 3322; - this.connectorEndMember(); - this.state = 3323; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceDefinition(): InterfaceDefinitionContext { - let localctx: InterfaceDefinitionContext = new InterfaceDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 596, SysMLv2Parser.RULE_interfaceDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3325; - this.occurrenceDefinitionPrefix(); - this.state = 3326; - this.match(SysMLv2Parser.INTERFACE); - this.state = 3327; - this.match(SysMLv2Parser.DEF); - this.state = 3328; - this.definitionDeclaration(); - this.state = 3329; - this.interfaceBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceBody(): InterfaceBodyContext { - let localctx: InterfaceBodyContext = new InterfaceBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 598, SysMLv2Parser.RULE_interfaceBody); - let _la: number; - try { - this.state = 3340; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 3331; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 3332; - this.match(SysMLv2Parser.LBRACE); - this.state = 3336; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490930993) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1195473923) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 2993926401) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3892740293) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 8388611) !== 0) || _la===210 || _la===223) { - { - { - this.state = 3333; - this.interfaceBodyItem(); - } - } - this.state = 3338; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3339; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceBodyItem(): InterfaceBodyItemContext { - let localctx: InterfaceBodyItemContext = new InterfaceBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 600, SysMLv2Parser.RULE_interfaceBodyItem); - let _la: number; - try { - this.state = 3351; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 326, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3342; - this.definitionMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3343; - this.variantUsageMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3344; - this.interfaceNonOccurrenceUsageMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3346; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===152) { - { - this.state = 3345; - this.sourceSuccessionMember(); - } - } - - this.state = 3348; - this.interfaceOccurrenceUsageMember(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3349; - this.aliasMember(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3350; - this.importRule(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceNonOccurrenceUsageMember(): InterfaceNonOccurrenceUsageMemberContext { - let localctx: InterfaceNonOccurrenceUsageMemberContext = new InterfaceNonOccurrenceUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 602, SysMLv2Parser.RULE_interfaceNonOccurrenceUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3353; - this.memberPrefix(); - this.state = 3354; - this.interfaceNonOccurrenceUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceNonOccurrenceUsageElement(): InterfaceNonOccurrenceUsageElementContext { - let localctx: InterfaceNonOccurrenceUsageElementContext = new InterfaceNonOccurrenceUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 604, SysMLv2Parser.RULE_interfaceNonOccurrenceUsageElement); - try { - this.state = 3361; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 327, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3356; - this.referenceUsage(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3357; - this.attributeUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3358; - this.enumerationUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3359; - this.bindingConnectorAsUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3360; - this.successionAsUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceOccurrenceUsageMember(): InterfaceOccurrenceUsageMemberContext { - let localctx: InterfaceOccurrenceUsageMemberContext = new InterfaceOccurrenceUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 606, SysMLv2Parser.RULE_interfaceOccurrenceUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3363; - this.memberPrefix(); - this.state = 3364; - this.interfaceOccurrenceUsageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceOccurrenceUsageElement(): InterfaceOccurrenceUsageElementContext { - let localctx: InterfaceOccurrenceUsageElementContext = new InterfaceOccurrenceUsageElementContext(this, this._ctx, this.state); - this.enterRule(localctx, 608, SysMLv2Parser.RULE_interfaceOccurrenceUsageElement); - try { - this.state = 3369; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 328, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3366; - this.defaultInterfaceEnd(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3367; - this.structureUsageElement(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3368; - this.behaviorUsageElement(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public defaultInterfaceEnd(): DefaultInterfaceEndContext { - let localctx: DefaultInterfaceEndContext = new DefaultInterfaceEndContext(this, this._ctx, this.state); - this.enterRule(localctx, 610, SysMLv2Parser.RULE_defaultInterfaceEnd); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3371; - this.match(SysMLv2Parser.END); - this.state = 3372; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceUsage(): InterfaceUsageContext { - let localctx: InterfaceUsageContext = new InterfaceUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 612, SysMLv2Parser.RULE_interfaceUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3374; - this.occurrenceUsagePrefix(); - this.state = 3375; - this.match(SysMLv2Parser.INTERFACE); - this.state = 3376; - this.interfaceUsageDeclaration(); - this.state = 3377; - this.interfaceBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceUsageDeclaration(): InterfaceUsageDeclarationContext { - let localctx: InterfaceUsageDeclarationContext = new InterfaceUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 614, SysMLv2Parser.RULE_interfaceUsageDeclaration); - let _la: number; - try { - this.state = 3390; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 332, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3380; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3379; - this.usageDeclaration(); - } - } - - this.state = 3383; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 3382; - this.valuePart(); - } - } - - this.state = 3387; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===36) { - { - this.state = 3385; - this.match(SysMLv2Parser.CONNECT); - this.state = 3386; - this.interfacePart(); - } - } - - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3389; - this.interfacePart(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfacePart(): InterfacePartContext { - let localctx: InterfacePartContext = new InterfacePartContext(this, this._ctx, this.state); - this.enterRule(localctx, 616, SysMLv2Parser.RULE_interfacePart); - try { - this.state = 3394; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 211: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 3392; - this.binaryInterfacePart(); - } - break; - case 196: - this.enterOuterAlt(localctx, 2); - { - this.state = 3393; - this.naryInterfacePart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public binaryInterfacePart(): BinaryInterfacePartContext { - let localctx: BinaryInterfacePartContext = new BinaryInterfacePartContext(this, this._ctx, this.state); - this.enterRule(localctx, 618, SysMLv2Parser.RULE_binaryInterfacePart); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3396; - this.interfaceEndMember(); - this.state = 3397; - this.match(SysMLv2Parser.TO); - this.state = 3398; - this.interfaceEndMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public naryInterfacePart(): NaryInterfacePartContext { - let localctx: NaryInterfacePartContext = new NaryInterfacePartContext(this, this._ctx, this.state); - this.enterRule(localctx, 620, SysMLv2Parser.RULE_naryInterfacePart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3400; - this.match(SysMLv2Parser.LPAREN); - this.state = 3401; - this.interfaceEndMember(); - this.state = 3402; - this.match(SysMLv2Parser.COMMA); - this.state = 3403; - this.interfaceEndMember(); - this.state = 3408; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 3404; - this.match(SysMLv2Parser.COMMA); - this.state = 3405; - this.interfaceEndMember(); - } - } - this.state = 3410; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3411; - this.match(SysMLv2Parser.RPAREN); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceEndMember(): InterfaceEndMemberContext { - let localctx: InterfaceEndMemberContext = new InterfaceEndMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 622, SysMLv2Parser.RULE_interfaceEndMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3413; - this.interfaceEnd(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public interfaceEnd(): InterfaceEndContext { - let localctx: InterfaceEndContext = new InterfaceEndContext(this, this._ctx, this.state); - this.enterRule(localctx, 624, SysMLv2Parser.RULE_interfaceEnd); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3416; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===211) { - { - this.state = 3415; - this.ownedCrossMultiplicityMember(); - } - } - - this.state = 3421; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 336, this._ctx) ) { - case 1: - { - this.state = 3418; - this.name(); - this.state = 3419; - _la = this._input.LA(1); - if(!(_la===128 || _la===175)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - break; - } - this.state = 3423; - this.ownedReferenceSubsetting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public allocationDefinition(): AllocationDefinitionContext { - let localctx: AllocationDefinitionContext = new AllocationDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 626, SysMLv2Parser.RULE_allocationDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3425; - this.occurrenceDefinitionPrefix(); - this.state = 3426; - this.match(SysMLv2Parser.ALLOCATION); - this.state = 3427; - this.match(SysMLv2Parser.DEF); - this.state = 3428; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public allocationUsage(): AllocationUsageContext { - let localctx: AllocationUsageContext = new AllocationUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 628, SysMLv2Parser.RULE_allocationUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3430; - this.occurrenceUsagePrefix(); - this.state = 3431; - this.allocationUsageDeclaration(); - this.state = 3432; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public allocationUsageDeclaration(): AllocationUsageDeclarationContext { - let localctx: AllocationUsageDeclarationContext = new AllocationUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 630, SysMLv2Parser.RULE_allocationUsageDeclaration); - let _la: number; - try { - this.state = 3444; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 10: - this.enterOuterAlt(localctx, 1); - { - this.state = 3434; - this.match(SysMLv2Parser.ALLOCATION); - this.state = 3436; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3435; - this.usageDeclaration(); - } - } - - this.state = 3440; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===9) { - { - this.state = 3438; - this.match(SysMLv2Parser.ALLOCATE); - this.state = 3439; - this.connectorPart(); - } - } - - } - break; - case 9: - this.enterOuterAlt(localctx, 2); - { - this.state = 3442; - this.match(SysMLv2Parser.ALLOCATE); - this.state = 3443; - this.connectorPart(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowDefinition(): FlowDefinitionContext { - let localctx: FlowDefinitionContext = new FlowDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 632, SysMLv2Parser.RULE_flowDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3446; - this.occurrenceDefinitionPrefix(); - this.state = 3447; - this.match(SysMLv2Parser.FLOW); - this.state = 3448; - this.match(SysMLv2Parser.DEF); - this.state = 3449; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public message(): MessageContext { - let localctx: MessageContext = new MessageContext(this, this._ctx, this.state); - this.enterRule(localctx, 634, SysMLv2Parser.RULE_message); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3451; - this.occurrenceUsagePrefix(); - this.state = 3452; - this.match(SysMLv2Parser.MESSAGE); - this.state = 3453; - this.messageDeclaration(); - this.state = 3454; - this.definitionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public messageDeclaration(): MessageDeclarationContext { - let localctx: MessageDeclarationContext = new MessageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 636, SysMLv2Parser.RULE_messageDeclaration); - let _la: number; - try { - this.state = 3477; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 344, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3457; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3456; - this.usageDeclaration(); - } - } - - this.state = 3460; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 3459; - this.valuePart(); - } - } - - this.state = 3464; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===111) { - { - this.state = 3462; - this.match(SysMLv2Parser.OF); - this.state = 3463; - this.flowPayloadFeatureMember(); - } - } - - this.state = 3471; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===74) { - { - this.state = 3466; - this.match(SysMLv2Parser.FROM); - this.state = 3467; - this.messageEventMember(); - this.state = 3468; - this.match(SysMLv2Parser.TO); - this.state = 3469; - this.messageEventMember(); - } - } - - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3473; - this.messageEventMember(); - this.state = 3474; - this.match(SysMLv2Parser.TO); - this.state = 3475; - this.messageEventMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public messageEventMember(): MessageEventMemberContext { - let localctx: MessageEventMemberContext = new MessageEventMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 638, SysMLv2Parser.RULE_messageEventMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3479; - this.messageEvent(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public messageEvent(): MessageEventContext { - let localctx: MessageEventContext = new MessageEventContext(this, this._ctx, this.state); - this.enterRule(localctx, 640, SysMLv2Parser.RULE_messageEvent); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3481; - this.ownedReferenceSubsetting(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowUsage(): FlowUsageContext { - let localctx: FlowUsageContext = new FlowUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 642, SysMLv2Parser.RULE_flowUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3483; - this.occurrenceUsagePrefix(); - this.state = 3484; - this.match(SysMLv2Parser.FLOW); - this.state = 3485; - this.flowDeclaration(); - this.state = 3486; - this.definitionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public successionFlowUsage(): SuccessionFlowUsageContext { - let localctx: SuccessionFlowUsageContext = new SuccessionFlowUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 644, SysMLv2Parser.RULE_successionFlowUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3488; - this.occurrenceUsagePrefix(); - this.state = 3489; - this.match(SysMLv2Parser.SUCCESSION); - this.state = 3490; - this.match(SysMLv2Parser.FLOW); - this.state = 3491; - this.flowDeclaration(); - this.state = 3492; - this.definitionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowPayloadFeatureMember(): FlowPayloadFeatureMemberContext { - let localctx: FlowPayloadFeatureMemberContext = new FlowPayloadFeatureMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 646, SysMLv2Parser.RULE_flowPayloadFeatureMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3494; - this.flowPayloadFeature(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowPayloadFeature(): FlowPayloadFeatureContext { - let localctx: FlowPayloadFeatureContext = new FlowPayloadFeatureContext(this, this._ctx, this.state); - this.enterRule(localctx, 648, SysMLv2Parser.RULE_flowPayloadFeature); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3496; - this.payloadFeature(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public flowEndSubsetting(): FlowEndSubsettingContext { - let localctx: FlowEndSubsettingContext = new FlowEndSubsettingContext(this, this._ctx, this.state); - this.enterRule(localctx, 650, SysMLv2Parser.RULE_flowEndSubsetting); - try { - this.state = 3500; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 345, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3498; - this.qualifiedName(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3499; - this.featureChainPrefix(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureChainPrefix(): FeatureChainPrefixContext { - let localctx: FeatureChainPrefixContext = new FeatureChainPrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 652, SysMLv2Parser.RULE_featureChainPrefix); - try { - let _alt: number; - this.enterOuterAlt(localctx, 1); - { - this.state = 3505; - this._errHandler.sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - this.state = 3502; - this.ownedFeatureChaining(); - this.state = 3503; - this.match(SysMLv2Parser.DOT); - } - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3507; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 346, this._ctx); - } while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER); - this.state = 3509; - this.ownedFeatureChaining(); - this.state = 3510; - this.match(SysMLv2Parser.DOT); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionDefinition(): ActionDefinitionContext { - let localctx: ActionDefinitionContext = new ActionDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 654, SysMLv2Parser.RULE_actionDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3512; - this.occurrenceDefinitionPrefix(); - this.state = 3513; - this.match(SysMLv2Parser.ACTION); - this.state = 3514; - this.match(SysMLv2Parser.DEF); - this.state = 3515; - this.definitionDeclaration(); - this.state = 3516; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionBody(): ActionBodyContext { - let localctx: ActionBodyContext = new ActionBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 656, SysMLv2Parser.RULE_actionBody); - let _la: number; - try { - this.state = 3527; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 3518; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 3519; - this.match(SysMLv2Parser.LBRACE); - this.state = 3523; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181273756) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490985265) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1874951439) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901202631) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011403) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 3520; - this.actionBodyItem(); - } - } - this.state = 3525; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3526; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionBodyItem(): ActionBodyItemContext { - let localctx: ActionBodyItemContext = new ActionBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 658, SysMLv2Parser.RULE_actionBodyItem); - let _la: number; - try { - let _alt: number; - this.state = 3548; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 352, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3529; - this.nonBehaviorBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3530; - this.initialNodeMember(); - this.state = 3534; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 349, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 3531; - this.actionTargetSuccessionMember(); - } - } - } - this.state = 3536; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 349, this._ctx); - } - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3538; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===152) { - { - this.state = 3537; - this.sourceSuccessionMember(); - } - } - - this.state = 3540; - this.actionBehaviorMember(); - this.state = 3544; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 351, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 3541; - this.actionTargetSuccessionMember(); - } - } - } - this.state = 3546; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 351, this._ctx); - } - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3547; - this.guardedSuccessionMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nonBehaviorBodyItem(): NonBehaviorBodyItemContext { - let localctx: NonBehaviorBodyItemContext = new NonBehaviorBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 660, SysMLv2Parser.RULE_nonBehaviorBodyItem); - let _la: number; - try { - this.state = 3559; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 354, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3550; - this.importRule(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3551; - this.aliasMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3552; - this.definitionMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3553; - this.variantUsageMember(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3554; - this.nonOccurrenceUsageMember(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3556; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===152) { - { - this.state = 3555; - this.sourceSuccessionMember(); - } - } - - this.state = 3558; - this.structureUsageMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionBehaviorMember(): ActionBehaviorMemberContext { - let localctx: ActionBehaviorMemberContext = new ActionBehaviorMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 662, SysMLv2Parser.RULE_actionBehaviorMember); - try { - this.state = 3563; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 355, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3561; - this.behaviorUsageMember(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3562; - this.actionNodeMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public initialNodeMember(): InitialNodeMemberContext { - let localctx: InitialNodeMemberContext = new InitialNodeMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 664, SysMLv2Parser.RULE_initialNodeMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3565; - this.memberPrefix(); - this.state = 3566; - this.match(SysMLv2Parser.FIRST); - this.state = 3567; - this.qualifiedName(); - this.state = 3568; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionNodeMember(): ActionNodeMemberContext { - let localctx: ActionNodeMemberContext = new ActionNodeMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 666, SysMLv2Parser.RULE_actionNodeMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3570; - this.memberPrefix(); - this.state = 3571; - this.actionNode(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionTargetSuccessionMember(): ActionTargetSuccessionMemberContext { - let localctx: ActionTargetSuccessionMemberContext = new ActionTargetSuccessionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 668, SysMLv2Parser.RULE_actionTargetSuccessionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3573; - this.memberPrefix(); - this.state = 3574; - this.actionTargetSuccession(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public guardedSuccessionMember(): GuardedSuccessionMemberContext { - let localctx: GuardedSuccessionMemberContext = new GuardedSuccessionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 670, SysMLv2Parser.RULE_guardedSuccessionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3576; - this.memberPrefix(); - this.state = 3577; - this.guardedSuccession(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionUsage(): ActionUsageContext { - let localctx: ActionUsageContext = new ActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 672, SysMLv2Parser.RULE_actionUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3579; - this.occurrenceUsagePrefix(); - this.state = 3580; - this.match(SysMLv2Parser.ACTION); - this.state = 3581; - this.actionUsageDeclaration(); - this.state = 3582; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionUsageDeclaration(): ActionUsageDeclarationContext { - let localctx: ActionUsageDeclarationContext = new ActionUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 674, SysMLv2Parser.RULE_actionUsageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3585; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3584; - this.usageDeclaration(); - } - } - - this.state = 3588; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 3587; - this.valuePart(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public performActionUsage(): PerformActionUsageContext { - let localctx: PerformActionUsageContext = new PerformActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 676, SysMLv2Parser.RULE_performActionUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3590; - this.occurrenceUsagePrefix(); - this.state = 3591; - this.match(SysMLv2Parser.PERFORM); - this.state = 3592; - this.performActionUsageDeclaration(); - this.state = 3593; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public performActionUsageDeclaration(): PerformActionUsageDeclarationContext { - let localctx: PerformActionUsageDeclarationContext = new PerformActionUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 678, SysMLv2Parser.RULE_performActionUsageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3603; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - { - this.state = 3595; - this.ownedReferenceSubsetting(); - this.state = 3597; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 3596; - this.featureSpecializationPart(); - } - } - - } - break; - case 4: - { - this.state = 3599; - this.match(SysMLv2Parser.ACTION); - this.state = 3601; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3600; - this.usageDeclaration(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3606; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 3605; - this.valuePart(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionNode(): ActionNodeContext { - let localctx: ActionNodeContext = new ActionNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 680, SysMLv2Parser.RULE_actionNode); - try { - this.state = 3616; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 362, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3608; - this.controlNode(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3609; - this.sendNode(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3610; - this.acceptNode(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3611; - this.assignmentNode(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3612; - this.terminateNode(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3613; - this.ifNode(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 3614; - this.whileLoopNode(); - } - break; - case 8: - this.enterOuterAlt(localctx, 8); - { - this.state = 3615; - this.forLoopNode(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - let localctx: ActionNodeUsageDeclarationContext = new ActionNodeUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 682, SysMLv2Parser.RULE_actionNodeUsageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3618; - this.match(SysMLv2Parser.ACTION); - this.state = 3620; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3619; - this.usageDeclaration(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionNodePrefix(): ActionNodePrefixContext { - let localctx: ActionNodePrefixContext = new ActionNodePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 684, SysMLv2Parser.RULE_actionNodePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3622; - this.occurrenceUsagePrefix(); - this.state = 3624; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===4) { - { - this.state = 3623; - this.actionNodeUsageDeclaration(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public controlNode(): ControlNodeContext { - let localctx: ControlNodeContext = new ControlNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 686, SysMLv2Parser.RULE_controlNode); - try { - this.state = 3630; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 365, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3626; - this.mergeNode(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3627; - this.decisionNode(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3628; - this.joinNode(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3629; - this.forkNode(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public controlNodePrefix(): ControlNodePrefixContext { - let localctx: ControlNodePrefixContext = new ControlNodePrefixContext(this, this._ctx, this.state); - this.enterRule(localctx, 688, SysMLv2Parser.RULE_controlNodePrefix); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3632; - this.refPrefix(); - this.state = 3634; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===82) { - { - this.state = 3633; - this.match(SysMLv2Parser.INDIVIDUAL); - } - } - - this.state = 3637; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===137 || _la===153) { - { - this.state = 3636; - this.portionKind(); - } - } - - this.state = 3642; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 3639; - this.usageExtensionKeyword(); - } - } - this.state = 3644; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public mergeNode(): MergeNodeContext { - let localctx: MergeNodeContext = new MergeNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 690, SysMLv2Parser.RULE_mergeNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3645; - this.controlNodePrefix(); - this.state = 3646; - this.match(SysMLv2Parser.MERGE); - this.state = 3648; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3647; - this.usageDeclaration(); - } - } - - this.state = 3650; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public decisionNode(): DecisionNodeContext { - let localctx: DecisionNodeContext = new DecisionNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 692, SysMLv2Parser.RULE_decisionNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3652; - this.controlNodePrefix(); - this.state = 3653; - this.match(SysMLv2Parser.DECIDE); - this.state = 3655; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3654; - this.usageDeclaration(); - } - } - - this.state = 3657; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public joinNode(): JoinNodeContext { - let localctx: JoinNodeContext = new JoinNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 694, SysMLv2Parser.RULE_joinNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3659; - this.controlNodePrefix(); - this.state = 3660; - this.match(SysMLv2Parser.JOIN); - this.state = 3662; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3661; - this.usageDeclaration(); - } - } - - this.state = 3664; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public forkNode(): ForkNodeContext { - let localctx: ForkNodeContext = new ForkNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 696, SysMLv2Parser.RULE_forkNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3666; - this.controlNodePrefix(); - this.state = 3667; - this.match(SysMLv2Parser.FORK); - this.state = 3669; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3668; - this.usageDeclaration(); - } - } - - this.state = 3671; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public acceptNode(): AcceptNodeContext { - let localctx: AcceptNodeContext = new AcceptNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 698, SysMLv2Parser.RULE_acceptNode); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3673; - this.occurrenceUsagePrefix(); - this.state = 3674; - this.acceptNodeDeclaration(); - this.state = 3675; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public acceptNodeDeclaration(): AcceptNodeDeclarationContext { - let localctx: AcceptNodeDeclarationContext = new AcceptNodeDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 700, SysMLv2Parser.RULE_acceptNodeDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3678; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===4) { - { - this.state = 3677; - this.actionNodeUsageDeclaration(); - } - } - - this.state = 3680; - this.match(SysMLv2Parser.ACCEPT); - this.state = 3681; - this.acceptParameterPart(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public acceptParameterPart(): AcceptParameterPartContext { - let localctx: AcceptParameterPartContext = new AcceptParameterPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 702, SysMLv2Parser.RULE_acceptParameterPart); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3683; - this.payloadParameterMember(); - this.state = 3686; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===168) { - { - this.state = 3684; - this.match(SysMLv2Parser.VIA); - this.state = 3685; - this.nodeParameterMember(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public payloadParameterMember(): PayloadParameterMemberContext { - let localctx: PayloadParameterMemberContext = new PayloadParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 704, SysMLv2Parser.RULE_payloadParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3688; - this.payloadParameter(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public payloadParameter(): PayloadParameterContext { - let localctx: PayloadParameterContext = new PayloadParameterContext(this, this._ctx, this.state); - this.enterRule(localctx, 706, SysMLv2Parser.RULE_payloadParameter); - let _la: number; - try { - this.state = 3698; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 377, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3690; - this.payloadFeature(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3692; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 3691; - this.identification(); - } - } - - this.state = 3695; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 3694; - this.payloadFeatureSpecializationPart(); - } - } - - this.state = 3697; - this.triggerValuePart(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public triggerValuePart(): TriggerValuePartContext { - let localctx: TriggerValuePartContext = new TriggerValuePartContext(this, this._ctx, this.state); - this.enterRule(localctx, 708, SysMLv2Parser.RULE_triggerValuePart); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3700; - this.triggerFeatureValue(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public triggerFeatureValue(): TriggerFeatureValueContext { - let localctx: TriggerFeatureValueContext = new TriggerFeatureValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 710, SysMLv2Parser.RULE_triggerFeatureValue); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3702; - this.triggerExpression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public triggerExpression(): TriggerExpressionContext { - let localctx: TriggerExpressionContext = new TriggerExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 712, SysMLv2Parser.RULE_triggerExpression); - let _la: number; - try { - this.state = 3708; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 6: - case 18: - this.enterOuterAlt(localctx, 1); - { - this.state = 3704; - _la = this._input.LA(1); - if(!(_la===6 || _la===18)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 3705; - this.argumentMember(); - } - break; - case 171: - this.enterOuterAlt(localctx, 2); - { - this.state = 3706; - this.match(SysMLv2Parser.WHEN); - this.state = 3707; - this.argumentExpressionMember(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sendNode(): SendNodeContext { - let localctx: SendNodeContext = new SendNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 714, SysMLv2Parser.RULE_sendNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3710; - this.occurrenceUsagePrefix(); - this.state = 3713; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 4: - { - this.state = 3711; - this.actionNodeUsageDeclaration(); - } - break; - case 42: - case 46: - case 47: - case 106: - case 113: - case 125: - case 128: - case 136: - case 148: - case 158: - case 175: - case 176: - case 184: - case 185: - case 188: - case 204: - case 206: - case 207: - case 211: - case 218: - case 219: - { - this.state = 3712; - this.actionUsageDeclaration(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3715; - this.match(SysMLv2Parser.SEND); - this.state = 3723; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 8: - case 64: - case 77: - case 105: - case 107: - case 108: - case 156: - case 191: - case 193: - case 196: - case 198: - case 199: - case 201: - case 210: - case 214: - case 217: - case 218: - case 219: - case 220: - case 221: - case 222: - { - this.state = 3716; - this.nodeParameterMember(); - this.state = 3718; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===154 || _la===168) { - { - this.state = 3717; - this.senderReceiverPart(); - } - } - - } - break; - case 154: - case 168: - { - this.state = 3720; - this.emptyParameterMember(); - this.state = 3721; - this.senderReceiverPart(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3725; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public sendNodeDeclaration(): SendNodeDeclarationContext { - let localctx: SendNodeDeclarationContext = new SendNodeDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 716, SysMLv2Parser.RULE_sendNodeDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3728; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===4) { - { - this.state = 3727; - this.actionNodeUsageDeclaration(); - } - } - - this.state = 3730; - this.match(SysMLv2Parser.SEND); - this.state = 3731; - this.nodeParameterMember(); - this.state = 3733; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===154 || _la===168) { - { - this.state = 3732; - this.senderReceiverPart(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public senderReceiverPart(): SenderReceiverPartContext { - let localctx: SenderReceiverPartContext = new SenderReceiverPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 718, SysMLv2Parser.RULE_senderReceiverPart); - let _la: number; - try { - this.state = 3745; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 168: - this.enterOuterAlt(localctx, 1); - { - this.state = 3735; - this.match(SysMLv2Parser.VIA); - this.state = 3736; - this.nodeParameterMember(); - this.state = 3739; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===154) { - { - this.state = 3737; - this.match(SysMLv2Parser.TO); - this.state = 3738; - this.nodeParameterMember(); - } - } - - } - break; - case 154: - this.enterOuterAlt(localctx, 2); - { - this.state = 3741; - this.emptyParameterMember(); - this.state = 3742; - this.match(SysMLv2Parser.TO); - this.state = 3743; - this.nodeParameterMember(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nodeParameterMember(): NodeParameterMemberContext { - let localctx: NodeParameterMemberContext = new NodeParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 720, SysMLv2Parser.RULE_nodeParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3747; - this.nodeParameter(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nodeParameter(): NodeParameterContext { - let localctx: NodeParameterContext = new NodeParameterContext(this, this._ctx, this.state); - this.enterRule(localctx, 722, SysMLv2Parser.RULE_nodeParameter); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3749; - this.featureBinding(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public featureBinding(): FeatureBindingContext { - let localctx: FeatureBindingContext = new FeatureBindingContext(this, this._ctx, this.state); - this.enterRule(localctx, 724, SysMLv2Parser.RULE_featureBinding); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3751; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyParameterMember(): EmptyParameterMemberContext { - let localctx: EmptyParameterMemberContext = new EmptyParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 726, SysMLv2Parser.RULE_emptyParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3753; - this.emptyUsage_(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public assignmentNode(): AssignmentNodeContext { - let localctx: AssignmentNodeContext = new AssignmentNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 728, SysMLv2Parser.RULE_assignmentNode); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3755; - this.occurrenceUsagePrefix(); - this.state = 3756; - this.assignmentNodeDeclaration(); - this.state = 3757; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public assignmentNodeDeclaration(): AssignmentNodeDeclarationContext { - let localctx: AssignmentNodeDeclarationContext = new AssignmentNodeDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 730, SysMLv2Parser.RULE_assignmentNodeDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3760; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===4) { - { - this.state = 3759; - this.actionNodeUsageDeclaration(); - } - } - - this.state = 3762; - this.match(SysMLv2Parser.ASSIGN); - this.state = 3763; - this.assignmentTargetMember(); - this.state = 3764; - this.featureChainMember(); - this.state = 3765; - this.match(SysMLv2Parser.COLON_EQ); - this.state = 3766; - this.nodeParameterMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public assignmentTargetMember(): AssignmentTargetMemberContext { - let localctx: AssignmentTargetMemberContext = new AssignmentTargetMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 732, SysMLv2Parser.RULE_assignmentTargetMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3768; - this.assignmentTargetParameter(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public assignmentTargetParameter(): AssignmentTargetParameterContext { - let localctx: AssignmentTargetParameterContext = new AssignmentTargetParameterContext(this, this._ctx, this.state); - this.enterRule(localctx, 734, SysMLv2Parser.RULE_assignmentTargetParameter); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3773; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 387, this._ctx) ) { - case 1: - { - this.state = 3770; - this.assignmentTargetBinding(); - this.state = 3771; - this.match(SysMLv2Parser.DOT); - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public assignmentTargetBinding(): AssignmentTargetBindingContext { - let localctx: AssignmentTargetBindingContext = new AssignmentTargetBindingContext(this, this._ctx, this.state); - this.enterRule(localctx, 736, SysMLv2Parser.RULE_assignmentTargetBinding); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3775; - this.nonFeatureChainPrimaryExpression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public terminateNode(): TerminateNodeContext { - let localctx: TerminateNodeContext = new TerminateNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 738, SysMLv2Parser.RULE_terminateNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3777; - this.occurrenceUsagePrefix(); - this.state = 3779; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===4) { - { - this.state = 3778; - this.actionNodeUsageDeclaration(); - } - } - - this.state = 3781; - this.match(SysMLv2Parser.TERMINATE); - this.state = 3783; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 389, this._ctx) ) { - case 1: - { - this.state = 3782; - this.nodeParameterMember(); - } - break; - } - this.state = 3785; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ifNode(): IfNodeContext { - let localctx: IfNodeContext = new IfNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 740, SysMLv2Parser.RULE_ifNode); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3787; - this.actionNodePrefix(); - this.state = 3788; - this.match(SysMLv2Parser.IF); - this.state = 3789; - this.expressionParameterMember(); - this.state = 3790; - this.actionBodyParameterMember(); - this.state = 3796; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 391, this._ctx) ) { - case 1: - { - this.state = 3791; - this.match(SysMLv2Parser.ELSE); - this.state = 3794; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 390, this._ctx) ) { - case 1: - { - this.state = 3792; - this.actionBodyParameterMember(); - } - break; - case 2: - { - this.state = 3793; - this.ifNodeParameterMember(); - } - break; - } - } - break; - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public expressionParameterMember(): ExpressionParameterMemberContext { - let localctx: ExpressionParameterMemberContext = new ExpressionParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 742, SysMLv2Parser.RULE_expressionParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3798; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionBodyParameterMember(): ActionBodyParameterMemberContext { - let localctx: ActionBodyParameterMemberContext = new ActionBodyParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 744, SysMLv2Parser.RULE_actionBodyParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3800; - this.actionBodyParameter(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionBodyParameter(): ActionBodyParameterContext { - let localctx: ActionBodyParameterContext = new ActionBodyParameterContext(this, this._ctx, this.state); - this.enterRule(localctx, 746, SysMLv2Parser.RULE_actionBodyParameter); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3806; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===4) { - { - this.state = 3802; - this.match(SysMLv2Parser.ACTION); - this.state = 3804; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3803; - this.usageDeclaration(); - } - } - - } - } - - this.state = 3808; - this.match(SysMLv2Parser.LBRACE); - this.state = 3812; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181273756) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490985265) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1874951439) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901202631) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011403) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 3809; - this.actionBodyItem(); - } - } - this.state = 3814; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3815; - this.match(SysMLv2Parser.RBRACE); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public ifNodeParameterMember(): IfNodeParameterMemberContext { - let localctx: IfNodeParameterMemberContext = new IfNodeParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 748, SysMLv2Parser.RULE_ifNodeParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3817; - this.ifNode(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public whileLoopNode(): WhileLoopNodeContext { - let localctx: WhileLoopNodeContext = new WhileLoopNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 750, SysMLv2Parser.RULE_whileLoopNode); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3819; - this.actionNodePrefix(); - this.state = 3824; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 172: - { - this.state = 3820; - this.match(SysMLv2Parser.WHILE); - this.state = 3821; - this.expressionParameterMember(); - } - break; - case 96: - { - this.state = 3822; - this.match(SysMLv2Parser.LOOP); - this.state = 3823; - this.emptyParameterMember(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3826; - this.actionBodyParameterMember(); - this.state = 3831; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===161) { - { - this.state = 3827; - this.match(SysMLv2Parser.UNTIL); - this.state = 3828; - this.expressionParameterMember(); - this.state = 3829; - this.match(SysMLv2Parser.SEMI); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public forLoopNode(): ForLoopNodeContext { - let localctx: ForLoopNodeContext = new ForLoopNodeContext(this, this._ctx, this.state); - this.enterRule(localctx, 752, SysMLv2Parser.RULE_forLoopNode); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3833; - this.actionNodePrefix(); - this.state = 3834; - this.match(SysMLv2Parser.FOR); - this.state = 3835; - this.forVariableDeclarationMember(); - this.state = 3836; - this.match(SysMLv2Parser.IN); - this.state = 3837; - this.nodeParameterMember(); - this.state = 3838; - this.actionBodyParameterMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public forVariableDeclarationMember(): ForVariableDeclarationMemberContext { - let localctx: ForVariableDeclarationMemberContext = new ForVariableDeclarationMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 754, SysMLv2Parser.RULE_forVariableDeclarationMember); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3841; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3840; - this.usageDeclaration(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public forVariableDeclaration(): ForVariableDeclarationContext { - let localctx: ForVariableDeclarationContext = new ForVariableDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 756, SysMLv2Parser.RULE_forVariableDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3844; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3843; - this.usageDeclaration(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actionTargetSuccession(): ActionTargetSuccessionContext { - let localctx: ActionTargetSuccessionContext = new ActionTargetSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 758, SysMLv2Parser.RULE_actionTargetSuccession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3849; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 152: - case 211: - { - this.state = 3846; - this.targetSuccession(); - } - break; - case 77: - { - this.state = 3847; - this.guardedTargetSuccession(); - } - break; - case 55: - { - this.state = 3848; - this.defaultTargetSuccession(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3851; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public targetSuccession(): TargetSuccessionContext { - let localctx: TargetSuccessionContext = new TargetSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 760, SysMLv2Parser.RULE_targetSuccession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3853; - this.sourceEndMember(); - this.state = 3854; - this.match(SysMLv2Parser.THEN); - this.state = 3855; - this.connectorEndMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public guardedTargetSuccession(): GuardedTargetSuccessionContext { - let localctx: GuardedTargetSuccessionContext = new GuardedTargetSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 762, SysMLv2Parser.RULE_guardedTargetSuccession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3857; - this.guardExpressionMember(); - this.state = 3858; - this.match(SysMLv2Parser.THEN); - this.state = 3859; - this.transitionSuccessionMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public defaultTargetSuccession(): DefaultTargetSuccessionContext { - let localctx: DefaultTargetSuccessionContext = new DefaultTargetSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 764, SysMLv2Parser.RULE_defaultTargetSuccession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3861; - this.match(SysMLv2Parser.ELSE); - this.state = 3862; - this.transitionSuccessionMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public guardedSuccession(): GuardedSuccessionContext { - let localctx: GuardedSuccessionContext = new GuardedSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 766, SysMLv2Parser.RULE_guardedSuccession); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3868; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===150) { - { - this.state = 3864; - this.match(SysMLv2Parser.SUCCESSION); - this.state = 3866; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3865; - this.usageDeclaration(); - } - } - - } - } - - this.state = 3870; - this.match(SysMLv2Parser.FIRST); - this.state = 3871; - this.featureChainMember(); - this.state = 3872; - this.guardExpressionMember(); - this.state = 3873; - this.match(SysMLv2Parser.THEN); - this.state = 3874; - this.transitionSuccessionMember(); - this.state = 3875; - this.usageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateDefinition(): StateDefinitionContext { - let localctx: StateDefinitionContext = new StateDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 768, SysMLv2Parser.RULE_stateDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3877; - this.occurrenceDefinitionPrefix(); - this.state = 3878; - this.match(SysMLv2Parser.STATE); - this.state = 3879; - this.match(SysMLv2Parser.DEF); - this.state = 3880; - this.definitionDeclaration(); - this.state = 3881; - this.stateDefBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateDefBody(): StateDefBodyContext { - let localctx: StateDefBodyContext = new StateDefBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 770, SysMLv2Parser.RULE_stateDefBody); - let _la: number; - try { - this.state = 3895; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 3883; - this.match(SysMLv2Parser.SEMI); - } - break; - case 116: - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 3885; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===116) { - { - this.state = 3884; - this.match(SysMLv2Parser.PARALLEL); - } - } - - this.state = 3887; - this.match(SysMLv2Parser.LBRACE); - this.state = 3891; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1063503665) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1195473923) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3902185669) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 3888; - this.stateBodyItem(); - } - } - this.state = 3893; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3894; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateBodyItem(): StateBodyItemContext { - let localctx: StateBodyItemContext = new StateBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 772, SysMLv2Parser.RULE_stateBodyItem); - let _la: number; - try { - let _alt: number; - this.state = 3918; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 408, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3897; - this.nonBehaviorBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3899; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===152) { - { - this.state = 3898; - this.sourceSuccessionMember(); - } - } - - this.state = 3901; - this.behaviorUsageMember(); - this.state = 3905; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 406, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 3902; - this.targetTransitionUsageMember(); - } - } - } - this.state = 3907; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 406, this._ctx); - } - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3908; - this.transitionUsageMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3909; - this.entryActionMember(); - this.state = 3913; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 407, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 3910; - this.entryTransitionMember(); - } - } - } - this.state = 3915; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 407, this._ctx); - } - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3916; - this.doActionMember(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 3917; - this.exitActionMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public entryActionMember(): EntryActionMemberContext { - let localctx: EntryActionMemberContext = new EntryActionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 774, SysMLv2Parser.RULE_entryActionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3920; - this.memberPrefix(); - this.state = 3921; - this.match(SysMLv2Parser.ENTRY); - this.state = 3922; - this.stateActionUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public doActionMember(): DoActionMemberContext { - let localctx: DoActionMemberContext = new DoActionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 776, SysMLv2Parser.RULE_doActionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3924; - this.memberPrefix(); - this.state = 3925; - this.match(SysMLv2Parser.DO); - this.state = 3926; - this.stateActionUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public exitActionMember(): ExitActionMemberContext { - let localctx: ExitActionMemberContext = new ExitActionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 778, SysMLv2Parser.RULE_exitActionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3928; - this.memberPrefix(); - this.state = 3929; - this.match(SysMLv2Parser.EXIT); - this.state = 3930; - this.stateActionUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public entryTransitionMember(): EntryTransitionMemberContext { - let localctx: EntryTransitionMemberContext = new EntryTransitionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 780, SysMLv2Parser.RULE_entryTransitionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3932; - this.memberPrefix(); - this.state = 3936; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 77: - { - this.state = 3933; - this.guardedTargetSuccession(); - } - break; - case 152: - { - this.state = 3934; - this.match(SysMLv2Parser.THEN); - this.state = 3935; - this.transitionSuccessionMember(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3938; - this.match(SysMLv2Parser.SEMI); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateActionUsage(): StateActionUsageContext { - let localctx: StateActionUsageContext = new StateActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 782, SysMLv2Parser.RULE_stateActionUsage); - try { - this.state = 3947; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 410, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 3940; - this.emptyActionUsage_(); - this.state = 3941; - this.match(SysMLv2Parser.SEMI); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 3943; - this.statePerformActionUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 3944; - this.stateAcceptActionUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 3945; - this.stateSendActionUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 3946; - this.stateAssignmentActionUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public statePerformActionUsage(): StatePerformActionUsageContext { - let localctx: StatePerformActionUsageContext = new StatePerformActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 784, SysMLv2Parser.RULE_statePerformActionUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3949; - this.performActionUsageDeclaration(); - this.state = 3950; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateAcceptActionUsage(): StateAcceptActionUsageContext { - let localctx: StateAcceptActionUsageContext = new StateAcceptActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 786, SysMLv2Parser.RULE_stateAcceptActionUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3952; - this.acceptNodeDeclaration(); - this.state = 3953; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateSendActionUsage(): StateSendActionUsageContext { - let localctx: StateSendActionUsageContext = new StateSendActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 788, SysMLv2Parser.RULE_stateSendActionUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3955; - this.sendNodeDeclaration(); - this.state = 3956; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateAssignmentActionUsage(): StateAssignmentActionUsageContext { - let localctx: StateAssignmentActionUsageContext = new StateAssignmentActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 790, SysMLv2Parser.RULE_stateAssignmentActionUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3958; - this.assignmentNodeDeclaration(); - this.state = 3959; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionUsageMember(): TransitionUsageMemberContext { - let localctx: TransitionUsageMemberContext = new TransitionUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 792, SysMLv2Parser.RULE_transitionUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3961; - this.memberPrefix(); - this.state = 3962; - this.transitionUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public targetTransitionUsageMember(): TargetTransitionUsageMemberContext { - let localctx: TargetTransitionUsageMemberContext = new TargetTransitionUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 794, SysMLv2Parser.RULE_targetTransitionUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3964; - this.memberPrefix(); - this.state = 3965; - this.targetTransitionUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateUsage(): StateUsageContext { - let localctx: StateUsageContext = new StateUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 796, SysMLv2Parser.RULE_stateUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3967; - this.occurrenceUsagePrefix(); - this.state = 3968; - this.match(SysMLv2Parser.STATE); - this.state = 3969; - this.actionUsageDeclaration(); - this.state = 3970; - this.stateUsageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stateUsageBody(): StateUsageBodyContext { - let localctx: StateUsageBodyContext = new StateUsageBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 798, SysMLv2Parser.RULE_stateUsageBody); - let _la: number; - try { - this.state = 3984; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 3972; - this.match(SysMLv2Parser.SEMI); - } - break; - case 116: - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 3974; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===116) { - { - this.state = 3973; - this.match(SysMLv2Parser.PARALLEL); - } - } - - this.state = 3976; - this.match(SysMLv2Parser.LBRACE); - this.state = 3980; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1063503665) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1195473923) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3902185669) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 3977; - this.stateBodyItem(); - } - } - this.state = 3982; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 3983; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public exhibitStateUsage(): ExhibitStateUsageContext { - let localctx: ExhibitStateUsageContext = new ExhibitStateUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 800, SysMLv2Parser.RULE_exhibitStateUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 3986; - this.occurrenceUsagePrefix(); - this.state = 3987; - this.match(SysMLv2Parser.EXHIBIT); - this.state = 3996; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - { - this.state = 3988; - this.ownedReferenceSubsetting(); - this.state = 3990; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 3989; - this.featureSpecializationPart(); - } - } - - } - break; - case 142: - { - this.state = 3992; - this.match(SysMLv2Parser.STATE); - this.state = 3994; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 3993; - this.usageDeclaration(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 3999; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 3998; - this.valuePart(); - } - } - - this.state = 4001; - this.stateUsageBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionUsage(): TransitionUsageContext { - let localctx: TransitionUsageContext = new TransitionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 802, SysMLv2Parser.RULE_transitionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4003; - this.match(SysMLv2Parser.TRANSITION); - this.state = 4008; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 419, this._ctx) ) { - case 1: - { - this.state = 4005; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 4004; - this.usageDeclaration(); - } - } - - this.state = 4007; - this.match(SysMLv2Parser.FIRST); - } - break; - } - this.state = 4010; - this.featureChainMember(); - this.state = 4011; - this.emptyParameterMember(); - this.state = 4015; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===3) { - { - this.state = 4012; - this.emptyParameterMember(); - this.state = 4013; - this.triggerActionMember(); - } - } - - this.state = 4018; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===77) { - { - this.state = 4017; - this.guardExpressionMember(); - } - } - - this.state = 4021; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===53) { - { - this.state = 4020; - this.effectBehaviorMember(); - } - } - - this.state = 4023; - this.match(SysMLv2Parser.THEN); - this.state = 4024; - this.transitionSuccessionMember(); - this.state = 4025; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public targetTransitionUsage(): TargetTransitionUsageContext { - let localctx: TargetTransitionUsageContext = new TargetTransitionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 804, SysMLv2Parser.RULE_targetTransitionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4027; - this.emptyParameterMember(); - this.state = 4052; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 155: - { - this.state = 4028; - this.match(SysMLv2Parser.TRANSITION); - this.state = 4032; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===3) { - { - this.state = 4029; - this.emptyParameterMember(); - this.state = 4030; - this.triggerActionMember(); - } - } - - this.state = 4035; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===77) { - { - this.state = 4034; - this.guardExpressionMember(); - } - } - - this.state = 4038; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===53) { - { - this.state = 4037; - this.effectBehaviorMember(); - } - } - - } - break; - case 3: - { - this.state = 4040; - this.emptyParameterMember(); - this.state = 4041; - this.triggerActionMember(); - this.state = 4043; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===77) { - { - this.state = 4042; - this.guardExpressionMember(); - } - } - - this.state = 4046; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===53) { - { - this.state = 4045; - this.effectBehaviorMember(); - } - } - - } - break; - case 77: - { - this.state = 4048; - this.guardExpressionMember(); - this.state = 4050; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===53) { - { - this.state = 4049; - this.effectBehaviorMember(); - } - } - - } - break; - case 152: - break; - default: - break; - } - this.state = 4054; - this.match(SysMLv2Parser.THEN); - this.state = 4055; - this.transitionSuccessionMember(); - this.state = 4056; - this.actionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public triggerActionMember(): TriggerActionMemberContext { - let localctx: TriggerActionMemberContext = new TriggerActionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 806, SysMLv2Parser.RULE_triggerActionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4058; - this.match(SysMLv2Parser.ACCEPT); - this.state = 4059; - this.triggerAction(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public triggerAction(): TriggerActionContext { - let localctx: TriggerActionContext = new TriggerActionContext(this, this._ctx, this.state); - this.enterRule(localctx, 808, SysMLv2Parser.RULE_triggerAction); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4061; - this.acceptParameterPart(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public guardExpressionMember(): GuardExpressionMemberContext { - let localctx: GuardExpressionMemberContext = new GuardExpressionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 810, SysMLv2Parser.RULE_guardExpressionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4063; - this.match(SysMLv2Parser.IF); - this.state = 4064; - this.ownedExpression(0); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public effectBehaviorMember(): EffectBehaviorMemberContext { - let localctx: EffectBehaviorMemberContext = new EffectBehaviorMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 812, SysMLv2Parser.RULE_effectBehaviorMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4066; - this.match(SysMLv2Parser.DO); - this.state = 4067; - this.effectBehaviorUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public effectBehaviorUsage(): EffectBehaviorUsageContext { - let localctx: EffectBehaviorUsageContext = new EffectBehaviorUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 814, SysMLv2Parser.RULE_effectBehaviorUsage); - try { - this.state = 4074; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 430, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4069; - this.emptyActionUsage_(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4070; - this.transitionPerformActionUsage(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 4071; - this.transitionAcceptActionUsage(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 4072; - this.transitionSendActionUsage(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 4073; - this.transitionAssignmentActionUsage(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionPerformActionUsage(): TransitionPerformActionUsageContext { - let localctx: TransitionPerformActionUsageContext = new TransitionPerformActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 816, SysMLv2Parser.RULE_transitionPerformActionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4076; - this.performActionUsageDeclaration(); - this.state = 4085; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===214) { - { - this.state = 4077; - this.match(SysMLv2Parser.LBRACE); - this.state = 4081; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181273756) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490985265) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1874951439) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901202631) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011403) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4078; - this.actionBodyItem(); - } - } - this.state = 4083; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4084; - this.match(SysMLv2Parser.RBRACE); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionAcceptActionUsage(): TransitionAcceptActionUsageContext { - let localctx: TransitionAcceptActionUsageContext = new TransitionAcceptActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 818, SysMLv2Parser.RULE_transitionAcceptActionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4087; - this.acceptNodeDeclaration(); - this.state = 4096; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===214) { - { - this.state = 4088; - this.match(SysMLv2Parser.LBRACE); - this.state = 4092; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181273756) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490985265) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1874951439) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901202631) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011403) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4089; - this.actionBodyItem(); - } - } - this.state = 4094; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4095; - this.match(SysMLv2Parser.RBRACE); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionSendActionUsage(): TransitionSendActionUsageContext { - let localctx: TransitionSendActionUsageContext = new TransitionSendActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 820, SysMLv2Parser.RULE_transitionSendActionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4098; - this.sendNodeDeclaration(); - this.state = 4107; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===214) { - { - this.state = 4099; - this.match(SysMLv2Parser.LBRACE); - this.state = 4103; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181273756) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490985265) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1874951439) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901202631) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011403) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4100; - this.actionBodyItem(); - } - } - this.state = 4105; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4106; - this.match(SysMLv2Parser.RBRACE); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionAssignmentActionUsage(): TransitionAssignmentActionUsageContext { - let localctx: TransitionAssignmentActionUsageContext = new TransitionAssignmentActionUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 822, SysMLv2Parser.RULE_transitionAssignmentActionUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4109; - this.assignmentNodeDeclaration(); - this.state = 4118; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===214) { - { - this.state = 4110; - this.match(SysMLv2Parser.LBRACE); - this.state = 4114; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181273756) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490985265) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1874951439) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3069425937) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901202631) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011403) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4111; - this.actionBodyItem(); - } - } - this.state = 4116; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4117; - this.match(SysMLv2Parser.RBRACE); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - let localctx: TransitionSuccessionMemberContext = new TransitionSuccessionMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 824, SysMLv2Parser.RULE_transitionSuccessionMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4120; - this.transitionSuccession(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public transitionSuccession(): TransitionSuccessionContext { - let localctx: TransitionSuccessionContext = new TransitionSuccessionContext(this, this._ctx, this.state); - this.enterRule(localctx, 826, SysMLv2Parser.RULE_transitionSuccession); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4122; - this.emptyEndMember(); - this.state = 4123; - this.connectorEndMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyEndMember(): EmptyEndMemberContext { - let localctx: EmptyEndMemberContext = new EmptyEndMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 828, SysMLv2Parser.RULE_emptyEndMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4125; - this.emptyFeature_(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public calculationDefinition(): CalculationDefinitionContext { - let localctx: CalculationDefinitionContext = new CalculationDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 830, SysMLv2Parser.RULE_calculationDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4127; - this.occurrenceDefinitionPrefix(); - this.state = 4128; - this.match(SysMLv2Parser.CALC); - this.state = 4129; - this.match(SysMLv2Parser.DEF); - this.state = 4130; - this.definitionDeclaration(); - this.state = 4131; - this.calculationBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public calculationUsage(): CalculationUsageContext { - let localctx: CalculationUsageContext = new CalculationUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 832, SysMLv2Parser.RULE_calculationUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4133; - this.occurrenceUsagePrefix(); - this.state = 4134; - this.match(SysMLv2Parser.CALC); - this.state = 4135; - this.actionUsageDeclaration(); - this.state = 4136; - this.calculationBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public calculationBody(): CalculationBodyContext { - let localctx: CalculationBodyContext = new CalculationBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 834, SysMLv2Parser.RULE_calculationBody); - try { - this.state = 4143; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 4138; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 4139; - this.match(SysMLv2Parser.LBRACE); - this.state = 4140; - this.calculationBodyPart(); - this.state = 4141; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public calculationBodyPart(): CalculationBodyPartContext { - let localctx: CalculationBodyPartContext = new CalculationBodyPartContext(this, this._ctx, this.state); - this.enterRule(localctx, 836, SysMLv2Parser.RULE_calculationBodyPart); - let _la: number; - try { - let _alt: number; - this.enterOuterAlt(localctx, 1); - { - this.state = 4148; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 440, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 4145; - this.calculationBodyItem(); - } - } - } - this.state = 4150; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 440, this._ctx); - } - this.state = 4152; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || _la===64 || _la===77 || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 917517) !== 0) || _la===156 || ((((_la - 191)) & ~0x1F) === 0 && ((1 << (_la - 191)) & 4236772773) !== 0)) { - { - this.state = 4151; - this.resultExpressionMember(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public calculationBodyItem(): CalculationBodyItemContext { - let localctx: CalculationBodyItemContext = new CalculationBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 838, SysMLv2Parser.RULE_calculationBodyItem); - try { - this.state = 4156; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 442, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4154; - this.actionBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4155; - this.returnParameterMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public returnParameterMember(): ReturnParameterMemberContext { - let localctx: ReturnParameterMemberContext = new ReturnParameterMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 840, SysMLv2Parser.RULE_returnParameterMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4158; - this.memberPrefix(); - this.state = 4159; - this.match(SysMLv2Parser.RETURN); - this.state = 4160; - this.usageElement(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public constraintDefinition(): ConstraintDefinitionContext { - let localctx: ConstraintDefinitionContext = new ConstraintDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 842, SysMLv2Parser.RULE_constraintDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4162; - this.occurrenceDefinitionPrefix(); - this.state = 4163; - this.match(SysMLv2Parser.CONSTRAINT); - this.state = 4164; - this.match(SysMLv2Parser.DEF); - this.state = 4165; - this.definitionDeclaration(); - this.state = 4166; - this.calculationBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public constraintUsage(): ConstraintUsageContext { - let localctx: ConstraintUsageContext = new ConstraintUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 844, SysMLv2Parser.RULE_constraintUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4168; - this.occurrenceUsagePrefix(); - this.state = 4169; - this.match(SysMLv2Parser.CONSTRAINT); - this.state = 4170; - this.constraintUsageDeclaration(); - this.state = 4171; - this.calculationBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public assertConstraintUsage(): AssertConstraintUsageContext { - let localctx: AssertConstraintUsageContext = new AssertConstraintUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 846, SysMLv2Parser.RULE_assertConstraintUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4173; - this.occurrenceUsagePrefix(); - this.state = 4174; - this.match(SysMLv2Parser.ASSERT); - this.state = 4176; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===107) { - { - this.state = 4175; - this.match(SysMLv2Parser.NOT); - } - } - - this.state = 4184; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - { - this.state = 4178; - this.ownedReferenceSubsetting(); - this.state = 4180; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4179; - this.featureSpecializationPart(); - } - } - - } - break; - case 41: - { - this.state = 4182; - this.match(SysMLv2Parser.CONSTRAINT); - this.state = 4183; - this.constraintUsageDeclaration(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 4186; - this.calculationBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - let localctx: ConstraintUsageDeclarationContext = new ConstraintUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 848, SysMLv2Parser.RULE_constraintUsageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4189; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 4188; - this.usageDeclaration(); - } - } - - this.state = 4192; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 4191; - this.valuePart(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementDefinition(): RequirementDefinitionContext { - let localctx: RequirementDefinitionContext = new RequirementDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 850, SysMLv2Parser.RULE_requirementDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4194; - this.occurrenceDefinitionPrefix(); - this.state = 4195; - this.match(SysMLv2Parser.REQUIREMENT); - this.state = 4196; - this.match(SysMLv2Parser.DEF); - this.state = 4197; - this.definitionDeclaration(); - this.state = 4198; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementBody(): RequirementBodyContext { - let localctx: RequirementBodyContext = new RequirementBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 852, SysMLv2Parser.RULE_requirementBody); - let _la: number; - try { - this.state = 4209; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 4200; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 4201; - this.match(SysMLv2Parser.LBRACE); - this.state = 4205; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181372084) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490981169) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 1195473939) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 4143167761) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901139173) !== 0) || ((((_la - 167)) & ~0x1F) === 0 && ((1 << (_la - 167)) & 36045581) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4202; - this.requirementBodyItem(); - } - } - this.state = 4207; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4208; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementBodyItem(): RequirementBodyItemContext { - let localctx: RequirementBodyItemContext = new RequirementBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 854, SysMLv2Parser.RULE_requirementBodyItem); - try { - this.state = 4218; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 450, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4211; - this.definitionBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4212; - this.subjectMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 4213; - this.requirementConstraintMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 4214; - this.framedConcernMember(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 4215; - this.requirementVerificationMember(); - } - break; - case 6: - this.enterOuterAlt(localctx, 6); - { - this.state = 4216; - this.actorMember(); - } - break; - case 7: - this.enterOuterAlt(localctx, 7); - { - this.state = 4217; - this.stakeholderMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subjectMember(): SubjectMemberContext { - let localctx: SubjectMemberContext = new SubjectMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 856, SysMLv2Parser.RULE_subjectMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4220; - this.memberPrefix(); - this.state = 4221; - this.subjectUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public subjectUsage(): SubjectUsageContext { - let localctx: SubjectUsageContext = new SubjectUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 858, SysMLv2Parser.RULE_subjectUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4223; - this.match(SysMLv2Parser.SUBJECT); - this.state = 4227; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4224; - this.usageExtensionKeyword(); - } - } - this.state = 4229; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4230; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementConstraintMember(): RequirementConstraintMemberContext { - let localctx: RequirementConstraintMemberContext = new RequirementConstraintMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 860, SysMLv2Parser.RULE_requirementConstraintMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4232; - this.memberPrefix(); - this.state = 4233; - this.requirementKind(); - this.state = 4234; - this.requirementConstraintUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementKind(): RequirementKindContext { - let localctx: RequirementKindContext = new RequirementKindContext(this, this._ctx, this.state); - this.enterRule(localctx, 862, SysMLv2Parser.RULE_requirementKind); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4236; - _la = this._input.LA(1); - if(!(_la===17 || _la===132)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementConstraintUsage(): RequirementConstraintUsageContext { - let localctx: RequirementConstraintUsageContext = new RequirementConstraintUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 864, SysMLv2Parser.RULE_requirementConstraintUsage); - let _la: number; - try { - this.state = 4261; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 4238; - this.ownedReferenceSubsetting(); - this.state = 4240; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4239; - this.featureSpecializationPart(); - } - } - - this.state = 4242; - this.requirementBody(); - } - break; - case 41: - case 192: - this.enterOuterAlt(localctx, 2); - { - this.state = 4256; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 455, this._ctx) ) { - case 1: - { - this.state = 4247; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4244; - this.usageExtensionKeyword(); - } - } - this.state = 4249; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4250; - this.match(SysMLv2Parser.CONSTRAINT); - } - break; - case 2: - { - this.state = 4252; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 4251; - this.usageExtensionKeyword(); - } - } - this.state = 4254; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===192); - } - break; - } - this.state = 4258; - this.constraintUsageDeclaration(); - this.state = 4259; - this.calculationBody(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public framedConcernMember(): FramedConcernMemberContext { - let localctx: FramedConcernMemberContext = new FramedConcernMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 866, SysMLv2Parser.RULE_framedConcernMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4263; - this.memberPrefix(); - this.state = 4264; - this.match(SysMLv2Parser.FRAME); - this.state = 4265; - this.framedConcernUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public framedConcernUsage(): FramedConcernUsageContext { - let localctx: FramedConcernUsageContext = new FramedConcernUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 868, SysMLv2Parser.RULE_framedConcernUsage); - let _la: number; - try { - this.state = 4290; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 4267; - this.ownedReferenceSubsetting(); - this.state = 4269; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4268; - this.featureSpecializationPart(); - } - } - - this.state = 4271; - this.calculationBody(); - } - break; - case 32: - case 192: - this.enterOuterAlt(localctx, 2); - { - this.state = 4285; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 460, this._ctx) ) { - case 1: - { - this.state = 4276; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4273; - this.usageExtensionKeyword(); - } - } - this.state = 4278; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4279; - this.match(SysMLv2Parser.CONCERN); - } - break; - case 2: - { - this.state = 4281; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 4280; - this.usageExtensionKeyword(); - } - } - this.state = 4283; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===192); - } - break; - } - this.state = 4287; - this.calculationUsageDeclaration(); - this.state = 4288; - this.calculationBody(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actorMember(): ActorMemberContext { - let localctx: ActorMemberContext = new ActorMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 870, SysMLv2Parser.RULE_actorMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4292; - this.memberPrefix(); - this.state = 4293; - this.actorUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public actorUsage(): ActorUsageContext { - let localctx: ActorUsageContext = new ActorUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 872, SysMLv2Parser.RULE_actorUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4295; - this.match(SysMLv2Parser.ACTOR); - this.state = 4299; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4296; - this.usageExtensionKeyword(); - } - } - this.state = 4301; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4302; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stakeholderMember(): StakeholderMemberContext { - let localctx: StakeholderMemberContext = new StakeholderMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 874, SysMLv2Parser.RULE_stakeholderMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4304; - this.memberPrefix(); - this.state = 4305; - this.stakeholderUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public stakeholderUsage(): StakeholderUsageContext { - let localctx: StakeholderUsageContext = new StakeholderUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 876, SysMLv2Parser.RULE_stakeholderUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4307; - this.match(SysMLv2Parser.STAKEHOLDER); - this.state = 4311; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4308; - this.usageExtensionKeyword(); - } - } - this.state = 4313; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4314; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementUsage(): RequirementUsageContext { - let localctx: RequirementUsageContext = new RequirementUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 878, SysMLv2Parser.RULE_requirementUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4316; - this.occurrenceUsagePrefix(); - this.state = 4317; - this.match(SysMLv2Parser.REQUIREMENT); - this.state = 4318; - this.constraintUsageDeclaration(); - this.state = 4319; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public satisfyRequirementUsage(): SatisfyRequirementUsageContext { - let localctx: SatisfyRequirementUsageContext = new SatisfyRequirementUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 880, SysMLv2Parser.RULE_satisfyRequirementUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4321; - this.occurrenceUsagePrefix(); - this.state = 4326; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===14) { - { - this.state = 4322; - this.match(SysMLv2Parser.ASSERT); - this.state = 4324; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===107) { - { - this.state = 4323; - this.match(SysMLv2Parser.NOT); - } - } - - } - } - - this.state = 4328; - this.match(SysMLv2Parser.SATISFY); - this.state = 4337; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - { - this.state = 4329; - this.ownedReferenceSubsetting(); - this.state = 4331; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4330; - this.featureSpecializationPart(); - } - } - - } - break; - case 133: - { - this.state = 4333; - this.match(SysMLv2Parser.REQUIREMENT); - this.state = 4335; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 4334; - this.usageDeclaration(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 4340; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 4339; - this.valuePart(); - } - } - - this.state = 4344; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===24) { - { - this.state = 4342; - this.match(SysMLv2Parser.BY); - this.state = 4343; - this.satisfactionSubjectMember(); - } - } - - this.state = 4346; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public satisfactionSubjectMember(): SatisfactionSubjectMemberContext { - let localctx: SatisfactionSubjectMemberContext = new SatisfactionSubjectMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 882, SysMLv2Parser.RULE_satisfactionSubjectMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4348; - this.satisfactionParameter(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public satisfactionParameter(): SatisfactionParameterContext { - let localctx: SatisfactionParameterContext = new SatisfactionParameterContext(this, this._ctx, this.state); - this.enterRule(localctx, 884, SysMLv2Parser.RULE_satisfactionParameter); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4350; - this.satisfactionFeatureValue(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public satisfactionFeatureValue(): SatisfactionFeatureValueContext { - let localctx: SatisfactionFeatureValueContext = new SatisfactionFeatureValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 886, SysMLv2Parser.RULE_satisfactionFeatureValue); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4352; - this.satisfactionReferenceExpression(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public satisfactionReferenceExpression(): SatisfactionReferenceExpressionContext { - let localctx: SatisfactionReferenceExpressionContext = new SatisfactionReferenceExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 888, SysMLv2Parser.RULE_satisfactionReferenceExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4354; - this.featureChainMember(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public concernDefinition(): ConcernDefinitionContext { - let localctx: ConcernDefinitionContext = new ConcernDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 890, SysMLv2Parser.RULE_concernDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4356; - this.occurrenceDefinitionPrefix(); - this.state = 4357; - this.match(SysMLv2Parser.CONCERN); - this.state = 4358; - this.match(SysMLv2Parser.DEF); - this.state = 4359; - this.definitionDeclaration(); - this.state = 4360; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public concernUsage(): ConcernUsageContext { - let localctx: ConcernUsageContext = new ConcernUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 892, SysMLv2Parser.RULE_concernUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4362; - this.occurrenceUsagePrefix(); - this.state = 4363; - this.match(SysMLv2Parser.CONCERN); - this.state = 4364; - this.constraintUsageDeclaration(); - this.state = 4365; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public caseDefinition(): CaseDefinitionContext { - let localctx: CaseDefinitionContext = new CaseDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 894, SysMLv2Parser.RULE_caseDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4367; - this.occurrenceDefinitionPrefix(); - this.state = 4368; - this.match(SysMLv2Parser.CASE); - this.state = 4369; - this.match(SysMLv2Parser.DEF); - this.state = 4370; - this.definitionDeclaration(); - this.state = 4371; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public caseUsage(): CaseUsageContext { - let localctx: CaseUsageContext = new CaseUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 896, SysMLv2Parser.RULE_caseUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4373; - this.occurrenceUsagePrefix(); - this.state = 4374; - this.match(SysMLv2Parser.CASE); - this.state = 4375; - this.constraintUsageDeclaration(); - this.state = 4376; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public caseBody(): CaseBodyContext { - let localctx: CaseBodyContext = new CaseBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 898, SysMLv2Parser.RULE_caseBody); - let _la: number; - try { - let _alt: number; - this.state = 4390; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 4378; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 4379; - this.match(SysMLv2Parser.LBRACE); - this.state = 4383; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 471, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 4380; - this.caseBodyItem(); - } - } - } - this.state = 4385; - this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 471, this._ctx); - } - this.state = 4387; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===8 || _la===64 || _la===77 || ((((_la - 105)) & ~0x1F) === 0 && ((1 << (_la - 105)) & 917517) !== 0) || _la===156 || ((((_la - 191)) & ~0x1F) === 0 && ((1 << (_la - 191)) & 4236772773) !== 0)) { - { - this.state = 4386; - this.resultExpressionMember(); - } - } - - this.state = 4389; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public caseBodyItem(): CaseBodyItemContext { - let localctx: CaseBodyItemContext = new CaseBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 900, SysMLv2Parser.RULE_caseBodyItem); - try { - this.state = 4397; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 474, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4392; - this.actionBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4393; - this.returnParameterMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 4394; - this.subjectMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 4395; - this.actorMember(); - } - break; - case 5: - this.enterOuterAlt(localctx, 5); - { - this.state = 4396; - this.objectiveMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public objectiveMember(): ObjectiveMemberContext { - let localctx: ObjectiveMemberContext = new ObjectiveMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 902, SysMLv2Parser.RULE_objectiveMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4399; - this.memberPrefix(); - this.state = 4400; - this.match(SysMLv2Parser.OBJECTIVE); - this.state = 4401; - this.objectiveRequirementUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public objectiveRequirementUsage(): ObjectiveRequirementUsageContext { - let localctx: ObjectiveRequirementUsageContext = new ObjectiveRequirementUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 904, SysMLv2Parser.RULE_objectiveRequirementUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4406; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4403; - this.usageExtensionKeyword(); - } - } - this.state = 4408; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4409; - this.constraintUsageDeclaration(); - this.state = 4410; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public analysisCaseDefinition(): AnalysisCaseDefinitionContext { - let localctx: AnalysisCaseDefinitionContext = new AnalysisCaseDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 906, SysMLv2Parser.RULE_analysisCaseDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4412; - this.occurrenceDefinitionPrefix(); - this.state = 4413; - this.match(SysMLv2Parser.ANALYSIS); - this.state = 4414; - this.match(SysMLv2Parser.DEF); - this.state = 4415; - this.definitionDeclaration(); - this.state = 4416; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public analysisCaseUsage(): AnalysisCaseUsageContext { - let localctx: AnalysisCaseUsageContext = new AnalysisCaseUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 908, SysMLv2Parser.RULE_analysisCaseUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4418; - this.occurrenceUsagePrefix(); - this.state = 4419; - this.match(SysMLv2Parser.ANALYSIS); - this.state = 4420; - this.constraintUsageDeclaration(); - this.state = 4421; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public verificationCaseDefinition(): VerificationCaseDefinitionContext { - let localctx: VerificationCaseDefinitionContext = new VerificationCaseDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 910, SysMLv2Parser.RULE_verificationCaseDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4423; - this.occurrenceDefinitionPrefix(); - this.state = 4424; - this.match(SysMLv2Parser.VERIFICATION); - this.state = 4425; - this.match(SysMLv2Parser.DEF); - this.state = 4426; - this.definitionDeclaration(); - this.state = 4427; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public verificationCaseUsage(): VerificationCaseUsageContext { - let localctx: VerificationCaseUsageContext = new VerificationCaseUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 912, SysMLv2Parser.RULE_verificationCaseUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4429; - this.occurrenceUsagePrefix(); - this.state = 4430; - this.match(SysMLv2Parser.VERIFICATION); - this.state = 4431; - this.constraintUsageDeclaration(); - this.state = 4432; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementVerificationMember(): RequirementVerificationMemberContext { - let localctx: RequirementVerificationMemberContext = new RequirementVerificationMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 914, SysMLv2Parser.RULE_requirementVerificationMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4434; - this.memberPrefix(); - this.state = 4435; - this.match(SysMLv2Parser.VERIFY); - this.state = 4436; - this.requirementVerificationUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public requirementVerificationUsage(): RequirementVerificationUsageContext { - let localctx: RequirementVerificationUsageContext = new RequirementVerificationUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 916, SysMLv2Parser.RULE_requirementVerificationUsage); - let _la: number; - try { - this.state = 4464; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 4438; - this.ownedReferenceSubsetting(); - this.state = 4442; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===42 || _la===47 || ((((_la - 125)) & ~0x1F) === 0 && ((1 << (_la - 125)) & 8388617) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 1208352769) !== 0) || _la===204) { - { - { - this.state = 4439; - this.featureSpecialization(); - } - } - this.state = 4444; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4445; - this.requirementBody(); - } - break; - case 133: - case 192: - this.enterOuterAlt(localctx, 2); - { - this.state = 4459; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 479, this._ctx) ) { - case 1: - { - this.state = 4450; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4447; - this.usageExtensionKeyword(); - } - } - this.state = 4452; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4453; - this.match(SysMLv2Parser.REQUIREMENT); - } - break; - case 2: - { - this.state = 4455; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 4454; - this.usageExtensionKeyword(); - } - } - this.state = 4457; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===192); - } - break; - } - this.state = 4461; - this.constraintUsageDeclaration(); - this.state = 4462; - this.requirementBody(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public useCaseDefinition(): UseCaseDefinitionContext { - let localctx: UseCaseDefinitionContext = new UseCaseDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 918, SysMLv2Parser.RULE_useCaseDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4466; - this.occurrenceDefinitionPrefix(); - this.state = 4467; - this.match(SysMLv2Parser.USE); - this.state = 4468; - this.match(SysMLv2Parser.CASE); - this.state = 4469; - this.match(SysMLv2Parser.DEF); - this.state = 4470; - this.definitionDeclaration(); - this.state = 4471; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public useCaseUsage(): UseCaseUsageContext { - let localctx: UseCaseUsageContext = new UseCaseUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 920, SysMLv2Parser.RULE_useCaseUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4473; - this.occurrenceUsagePrefix(); - this.state = 4474; - this.match(SysMLv2Parser.USE); - this.state = 4475; - this.match(SysMLv2Parser.CASE); - this.state = 4476; - this.constraintUsageDeclaration(); - this.state = 4477; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public includeUseCaseUsage(): IncludeUseCaseUsageContext { - let localctx: IncludeUseCaseUsageContext = new IncludeUseCaseUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 922, SysMLv2Parser.RULE_includeUseCaseUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4479; - this.occurrenceUsagePrefix(); - this.state = 4480; - this.match(SysMLv2Parser.INCLUDE); - this.state = 4490; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - { - this.state = 4481; - this.ownedReferenceSubsetting(); - this.state = 4483; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4482; - this.featureSpecializationPart(); - } - } - - } - break; - case 162: - { - this.state = 4485; - this.match(SysMLv2Parser.USE); - this.state = 4486; - this.match(SysMLv2Parser.CASE); - this.state = 4488; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 4487; - this.usageDeclaration(); - } - } - - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 4493; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 4492; - this.valuePart(); - } - } - - this.state = 4495; - this.caseBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewDefinition(): ViewDefinitionContext { - let localctx: ViewDefinitionContext = new ViewDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 924, SysMLv2Parser.RULE_viewDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4497; - this.occurrenceDefinitionPrefix(); - this.state = 4498; - this.match(SysMLv2Parser.VIEW); - this.state = 4499; - this.match(SysMLv2Parser.DEF); - this.state = 4500; - this.definitionDeclaration(); - this.state = 4501; - this.viewDefinitionBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewDefinitionBody(): ViewDefinitionBodyContext { - let localctx: ViewDefinitionBodyContext = new ViewDefinitionBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 926, SysMLv2Parser.RULE_viewDefinitionBody); - let _la: number; - try { - this.state = 4512; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 4503; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 4504; - this.match(SysMLv2Parser.LBRACE); - this.state = 4508; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 490981169) !== 0) || ((((_la - 68)) & ~0x1F) === 0 && ((1 << (_la - 68)) & 2390947847) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3203643665) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901137093) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4505; - this.viewDefinitionBodyItem(); - } - } - this.state = 4510; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4511; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewDefinitionBodyItem(): ViewDefinitionBodyItemContext { - let localctx: ViewDefinitionBodyItemContext = new ViewDefinitionBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 928, SysMLv2Parser.RULE_viewDefinitionBodyItem); - try { - this.state = 4517; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 487, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4514; - this.definitionBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4515; - this.elementFilterMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 4516; - this.viewRenderingMember(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewRenderingMember(): ViewRenderingMemberContext { - let localctx: ViewRenderingMemberContext = new ViewRenderingMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 930, SysMLv2Parser.RULE_viewRenderingMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4519; - this.memberPrefix(); - this.state = 4520; - this.match(SysMLv2Parser.RENDER); - this.state = 4521; - this.viewRenderingUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewRenderingUsage(): ViewRenderingUsageContext { - let localctx: ViewRenderingUsageContext = new ViewRenderingUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 932, SysMLv2Parser.RULE_viewRenderingUsage); - let _la: number; - try { - this.state = 4544; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 193: - case 218: - case 219: - this.enterOuterAlt(localctx, 1); - { - this.state = 4523; - this.ownedReferenceSubsetting(); - this.state = 4525; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4524; - this.featureSpecializationPart(); - } - } - - this.state = 4527; - this.usageBody(); - } - break; - case 130: - case 192: - this.enterOuterAlt(localctx, 2); - { - this.state = 4541; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 491, this._ctx) ) { - case 1: - { - this.state = 4532; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4529; - this.usageExtensionKeyword(); - } - } - this.state = 4534; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4535; - this.match(SysMLv2Parser.RENDERING); - } - break; - case 2: - { - this.state = 4537; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 4536; - this.usageExtensionKeyword(); - } - } - this.state = 4539; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===192); - } - break; - } - this.state = 4543; - this.usage(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewUsage(): ViewUsageContext { - let localctx: ViewUsageContext = new ViewUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 934, SysMLv2Parser.RULE_viewUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4546; - this.occurrenceUsagePrefix(); - this.state = 4547; - this.match(SysMLv2Parser.VIEW); - this.state = 4549; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 4548; - this.usageDeclaration(); - } - } - - this.state = 4552; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 4551; - this.valuePart(); - } - } - - this.state = 4554; - this.viewBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewBody(): ViewBodyContext { - let localctx: ViewBodyContext = new ViewBodyContext(this, this._ctx, this.state); - this.enterRule(localctx, 936, SysMLv2Parser.RULE_viewBody); - let _la: number; - try { - this.state = 4565; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 205: - this.enterOuterAlt(localctx, 1); - { - this.state = 4556; - this.match(SysMLv2Parser.SEMI); - } - break; - case 214: - this.enterOuterAlt(localctx, 2); - { - this.state = 4557; - this.match(SysMLv2Parser.LBRACE); - this.state = 4561; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1181240980) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 1564722993) !== 0) || ((((_la - 68)) & ~0x1F) === 0 && ((1 << (_la - 68)) & 2390947847) !== 0) || ((((_la - 102)) & ~0x1F) === 0 && ((1 << (_la - 102)) & 3203643665) !== 0) || ((((_la - 135)) & ~0x1F) === 0 && ((1 << (_la - 135)) & 3901137093) !== 0) || ((((_la - 169)) & ~0x1F) === 0 && ((1 << (_la - 169)) & 9011395) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 574671) !== 0)) { - { - { - this.state = 4558; - this.viewBodyItem(); - } - } - this.state = 4563; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4564; - this.match(SysMLv2Parser.RBRACE); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewBodyItem(): ViewBodyItemContext { - let localctx: ViewBodyItemContext = new ViewBodyItemContext(this, this._ctx, this.state); - this.enterRule(localctx, 938, SysMLv2Parser.RULE_viewBodyItem); - try { - this.state = 4571; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 497, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4567; - this.definitionBodyItem(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4568; - this.elementFilterMember(); - } - break; - case 3: - this.enterOuterAlt(localctx, 3); - { - this.state = 4569; - this.viewRenderingMember(); - } - break; - case 4: - this.enterOuterAlt(localctx, 4); - { - this.state = 4570; - this.expose(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public expose(): ExposeContext { - let localctx: ExposeContext = new ExposeContext(this, this._ctx, this.state); - this.enterRule(localctx, 940, SysMLv2Parser.RULE_expose); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4573; - this.match(SysMLv2Parser.EXPOSE); - this.state = 4576; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 498, this._ctx) ) { - case 1: - { - this.state = 4574; - this.membershipExpose(); - } - break; - case 2: - { - this.state = 4575; - this.namespaceExpose(); - } - break; - } - this.state = 4578; - this.relationshipBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public membershipExpose(): MembershipExposeContext { - let localctx: MembershipExposeContext = new MembershipExposeContext(this, this._ctx, this.state); - this.enterRule(localctx, 942, SysMLv2Parser.RULE_membershipExpose); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4580; - this.membershipImport(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceExpose(): NamespaceExposeContext { - let localctx: NamespaceExposeContext = new NamespaceExposeContext(this, this._ctx, this.state); - this.enterRule(localctx, 944, SysMLv2Parser.RULE_namespaceExpose); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4582; - this.namespaceImport(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewpointDefinition(): ViewpointDefinitionContext { - let localctx: ViewpointDefinitionContext = new ViewpointDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 946, SysMLv2Parser.RULE_viewpointDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4584; - this.occurrenceDefinitionPrefix(); - this.state = 4585; - this.match(SysMLv2Parser.VIEWPOINT); - this.state = 4586; - this.match(SysMLv2Parser.DEF); - this.state = 4587; - this.definitionDeclaration(); - this.state = 4588; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public viewpointUsage(): ViewpointUsageContext { - let localctx: ViewpointUsageContext = new ViewpointUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 948, SysMLv2Parser.RULE_viewpointUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4590; - this.occurrenceUsagePrefix(); - this.state = 4591; - this.match(SysMLv2Parser.VIEWPOINT); - this.state = 4592; - this.constraintUsageDeclaration(); - this.state = 4593; - this.requirementBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public renderingDefinition(): RenderingDefinitionContext { - let localctx: RenderingDefinitionContext = new RenderingDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 950, SysMLv2Parser.RULE_renderingDefinition); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4595; - this.occurrenceDefinitionPrefix(); - this.state = 4596; - this.match(SysMLv2Parser.RENDERING); - this.state = 4597; - this.match(SysMLv2Parser.DEF); - this.state = 4598; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public renderingUsage(): RenderingUsageContext { - let localctx: RenderingUsageContext = new RenderingUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 952, SysMLv2Parser.RULE_renderingUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4600; - this.occurrenceUsagePrefix(); - this.state = 4601; - this.match(SysMLv2Parser.RENDERING); - this.state = 4602; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataDefinition(): MetadataDefinitionContext { - let localctx: MetadataDefinitionContext = new MetadataDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 954, SysMLv2Parser.RULE_metadataDefinition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4605; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2) { - { - this.state = 4604; - this.match(SysMLv2Parser.ABSTRACT); - } - } - - this.state = 4610; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4607; - this.definitionExtensionKeyword(); - } - } - this.state = 4612; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4613; - this.match(SysMLv2Parser.METADATA); - this.state = 4614; - this.match(SysMLv2Parser.DEF); - this.state = 4615; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public prefixMetadataUsage(): PrefixMetadataUsageContext { - let localctx: PrefixMetadataUsageContext = new PrefixMetadataUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 956, SysMLv2Parser.RULE_prefixMetadataUsage); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4617; - this.ownedFeatureTyping(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataUsage(): MetadataUsageContext { - let localctx: MetadataUsageContext = new MetadataUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 958, SysMLv2Parser.RULE_metadataUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4622; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===192) { - { - { - this.state = 4619; - this.usageExtensionKeyword(); - } - } - this.state = 4624; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 4625; - _la = this._input.LA(1); - if(!(_la===102 || _la===210)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 4626; - this.metadataUsageDeclaration(); - this.state = 4636; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===1) { - { - this.state = 4627; - this.match(SysMLv2Parser.ABOUT); - this.state = 4628; - this.annotation(); - this.state = 4633; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===200) { - { - { - this.state = 4629; - this.match(SysMLv2Parser.COMMA); - this.state = 4630; - this.annotation(); - } - } - this.state = 4635; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - - this.state = 4638; - this.metadataBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataUsageDeclaration(): MetadataUsageDeclarationContext { - let localctx: MetadataUsageDeclarationContext = new MetadataUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 960, SysMLv2Parser.RULE_metadataUsageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4648; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 506, this._ctx) ) { - case 1: - { - this.state = 4641; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (((((_la - 206)) & ~0x1F) === 0 && ((1 << (_la - 206)) & 12289) !== 0)) { - { - this.state = 4640; - this.identification(); - } - } - - this.state = 4646; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 204: - { - this.state = 4643; - this.match(SysMLv2Parser.COLON); - } - break; - case 158: - { - this.state = 4644; - this.match(SysMLv2Parser.TYPED); - this.state = 4645; - this.match(SysMLv2Parser.BY); - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - } - this.state = 4650; - this.ownedFeatureTyping(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataBodyUsageMember(): MetadataBodyUsageMemberContext { - let localctx: MetadataBodyUsageMemberContext = new MetadataBodyUsageMemberContext(this, this._ctx, this.state); - this.enterRule(localctx, 962, SysMLv2Parser.RULE_metadataBodyUsageMember); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4652; - this.metadataBodyUsage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public metadataBodyUsage(): MetadataBodyUsageContext { - let localctx: MetadataBodyUsageContext = new MetadataBodyUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 964, SysMLv2Parser.RULE_metadataBodyUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4655; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===127) { - { - this.state = 4654; - this.match(SysMLv2Parser.REF); - } - } - - this.state = 4658; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===125 || _la===176) { - { - this.state = 4657; - _la = this._input.LA(1); - if(!(_la===125 || _la===176)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - - this.state = 4660; - this.ownedRedefinition(); - this.state = 4662; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 67633161) !== 0)) { - { - this.state = 4661; - this.featureSpecializationPart(); - } - } - - this.state = 4665; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 4664; - this.valuePart(); - } - } - - this.state = 4667; - this.metadataBody(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public extendedDefinition(): ExtendedDefinitionContext { - let localctx: ExtendedDefinitionContext = new ExtendedDefinitionContext(this, this._ctx, this.state); - this.enterRule(localctx, 966, SysMLv2Parser.RULE_extendedDefinition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4670; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===2 || _la===165) { - { - this.state = 4669; - this.basicDefinitionPrefix(); - } - } - - this.state = 4673; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 4672; - this.definitionExtensionKeyword(); - } - } - this.state = 4675; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===192); - this.state = 4677; - this.match(SysMLv2Parser.DEF); - this.state = 4678; - this.definition(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public extendedUsage(): ExtendedUsageContext { - let localctx: ExtendedUsageContext = new ExtendedUsageContext(this, this._ctx, this.state); - this.enterRule(localctx, 968, SysMLv2Parser.RULE_extendedUsage); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4680; - this.unextendedUsagePrefix(); - this.state = 4682; - this._errHandler.sync(this); - _la = this._input.LA(1); - do { - { - { - this.state = 4681; - this.usageExtensionKeyword(); - } - } - this.state = 4684; - this._errHandler.sync(this); - _la = this._input.LA(1); - } while (_la===192); - this.state = 4686; - this.usage(); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public filterPackageImportDeclaration(): FilterPackageImportDeclarationContext { - let localctx: FilterPackageImportDeclarationContext = new FilterPackageImportDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 970, SysMLv2Parser.RULE_filterPackageImportDeclaration); - try { - this.state = 4690; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 514, this._ctx) ) { - case 1: - this.enterOuterAlt(localctx, 1); - { - this.state = 4688; - this.membershipImport(); - } - break; - case 2: - this.enterOuterAlt(localctx, 2); - { - this.state = 4689; - this.namespaceImportDirect(); - } - break; - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public namespaceImportDirect(): NamespaceImportDirectContext { - let localctx: NamespaceImportDirectContext = new NamespaceImportDirectContext(this, this._ctx, this.state); - this.enterRule(localctx, 972, SysMLv2Parser.RULE_namespaceImportDirect); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4692; - this.qualifiedName(); - this.state = 4693; - this.match(SysMLv2Parser.COLON_COLON); - this.state = 4694; - this.match(SysMLv2Parser.STAR); - this.state = 4697; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===183) { - { - this.state = 4695; - this.match(SysMLv2Parser.COLON_COLON); - this.state = 4696; - this.match(SysMLv2Parser.STAR_STAR); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public calculationUsageDeclaration(): CalculationUsageDeclarationContext { - let localctx: CalculationUsageDeclarationContext = new CalculationUsageDeclarationContext(this, this._ctx, this.state); - this.enterRule(localctx, 974, SysMLv2Parser.RULE_calculationUsageDeclaration); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4700; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===42 || _la===47 || ((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 4718721) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 402654209) !== 0) || ((((_la - 185)) & ~0x1F) === 0 && ((1 << (_la - 185)) & 69730313) !== 0) || _la===218 || _la===219) { - { - this.state = 4699; - this.usageDeclaration(); - } - } - - this.state = 4703; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===46 || _la===184 || _la===207) { - { - this.state = 4702; - this.valuePart(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyActionUsage_(): EmptyActionUsage_Context { - let localctx: EmptyActionUsage_Context = new EmptyActionUsage_Context(this, this._ctx, this.state); - this.enterRule(localctx, 976, SysMLv2Parser.RULE_emptyActionUsage_); - try { - this.enterOuterAlt(localctx, 1); - // tslint:disable-next-line:no-empty - { - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyFeature_(): EmptyFeature_Context { - let localctx: EmptyFeature_Context = new EmptyFeature_Context(this, this._ctx, this.state); - this.enterRule(localctx, 978, SysMLv2Parser.RULE_emptyFeature_); - try { - this.enterOuterAlt(localctx, 1); - // tslint:disable-next-line:no-empty - { - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyMultiplicity_(): EmptyMultiplicity_Context { - let localctx: EmptyMultiplicity_Context = new EmptyMultiplicity_Context(this, this._ctx, this.state); - this.enterRule(localctx, 980, SysMLv2Parser.RULE_emptyMultiplicity_); - try { - this.enterOuterAlt(localctx, 1); - // tslint:disable-next-line:no-empty - { - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public emptyUsage_(): EmptyUsage_Context { - let localctx: EmptyUsage_Context = new EmptyUsage_Context(this, this._ctx, this.state); - this.enterRule(localctx, 982, SysMLv2Parser.RULE_emptyUsage_); - try { - this.enterOuterAlt(localctx, 1); - // tslint:disable-next-line:no-empty - { - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public filterPackageImport(): FilterPackageImportContext { - let localctx: FilterPackageImportContext = new FilterPackageImportContext(this, this._ctx, this.state); - this.enterRule(localctx, 984, SysMLv2Parser.RULE_filterPackageImport); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4713; - this.match(SysMLv2Parser.IDENTIFIER); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public nonFeatureChainPrimaryExpression(): NonFeatureChainPrimaryExpressionContext { - let localctx: NonFeatureChainPrimaryExpressionContext = new NonFeatureChainPrimaryExpressionContext(this, this._ctx, this.state); - this.enterRule(localctx, 986, SysMLv2Parser.RULE_nonFeatureChainPrimaryExpression); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 4715; - this.match(SysMLv2Parser.IDENTIFIER); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public portConjugation(): PortConjugationContext { - let localctx: PortConjugationContext = new PortConjugationContext(this, this._ctx, this.state); - this.enterRule(localctx, 988, SysMLv2Parser.RULE_portConjugation); - try { - this.enterOuterAlt(localctx, 1); - // tslint:disable-next-line:no-empty - { - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - - public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 0: - return this.ownedExpression_sempred(localctx as OwnedExpressionContext, predIndex); - } - return true; - } - private ownedExpression_sempred(localctx: OwnedExpressionContext, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this.precpred(this._ctx, 27); - case 1: - return this.precpred(this._ctx, 26); - case 2: - return this.precpred(this._ctx, 25); - case 3: - return this.precpred(this._ctx, 24); - case 4: - return this.precpred(this._ctx, 23); - case 5: - return this.precpred(this._ctx, 22); - case 6: - return this.precpred(this._ctx, 21); - case 7: - return this.precpred(this._ctx, 20); - case 8: - return this.precpred(this._ctx, 19); - case 9: - return this.precpred(this._ctx, 18); - case 10: - return this.precpred(this._ctx, 17); - case 11: - return this.precpred(this._ctx, 16); - case 12: - return this.precpred(this._ctx, 15); - case 13: - return this.precpred(this._ctx, 12); - case 14: - return this.precpred(this._ctx, 11); - case 15: - return this.precpred(this._ctx, 10); - case 16: - return this.precpred(this._ctx, 9); - case 17: - return this.precpred(this._ctx, 8); - case 18: - return this.precpred(this._ctx, 7); - case 19: - return this.precpred(this._ctx, 6); - case 20: - return this.precpred(this._ctx, 5); - case 21: - return this.precpred(this._ctx, 4); - case 22: - return this.precpred(this._ctx, 3); - } - return true; - } - - public static readonly _serializedATN: number[] = [4,1,225,4720,2,0,7,0, - 2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9, - 2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2, - 17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24, - 7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7, - 31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38, - 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, - 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53, - 7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7, - 60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67, - 2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2, - 75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82, - 7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7, - 89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96, - 2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103, - 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109, - 7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115, - 7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121, - 7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127, - 7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133, - 7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139, - 7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145, - 7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151, - 7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157, - 7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163, - 7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169, - 7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175, - 7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181, - 7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187, - 7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193, - 7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199, - 7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205, - 7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211, - 7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217, - 7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223, - 7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229, - 7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235, - 7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241, - 7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247, - 7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253, - 7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259, - 7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265, - 7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271, - 7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277, - 7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283, - 7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289, - 7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295, - 7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, - 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307, - 7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313, - 7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319, - 7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325, - 7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331, - 7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337, - 7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343, - 7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349, - 7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355, - 7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361, - 7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367, - 7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373, - 7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379, - 7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385, - 7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391, - 7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397, - 7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403, - 7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409, - 7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415, - 7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421, - 7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427, - 7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433, - 7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439, - 7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445, - 7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451, - 7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457, - 7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463, - 7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469, - 7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475, - 7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481, - 7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487, - 7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493, - 7,493,2,494,7,494,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1, - 0,1,0,3,0,1006,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, - 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, - 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0, - 1,0,1,0,1,0,1,0,1,0,3,0,1062,8,0,1,0,1,0,1,0,1,0,1,0,3,0,1069,8,0,1,0,1, - 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1085,8,0,5,0,1087, - 8,0,10,0,12,0,1090,9,0,1,1,1,1,1,2,1,2,1,2,5,2,1097,8,2,10,2,12,2,1100, - 9,2,1,3,1,3,1,3,1,3,1,3,1,3,3,3,1108,8,3,1,3,1,3,1,3,1,3,3,3,1114,8,3,1, - 3,3,3,1117,8,3,1,4,1,4,1,4,3,4,1122,8,4,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7, - 1,7,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,3,10,1144,8,10,1,10, - 1,10,1,11,1,11,1,11,5,11,1151,8,11,10,11,12,11,1154,9,11,1,12,1,12,1,12, - 5,12,1159,8,12,10,12,12,12,1162,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14, - 1,14,1,14,3,14,1173,8,14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1, - 19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23, - 1,23,1,23,3,23,1201,8,23,1,24,1,24,1,24,5,24,1206,8,24,10,24,12,24,1209, - 9,24,1,24,1,24,1,24,5,24,1214,8,24,10,24,12,24,1217,9,24,1,24,3,24,1220, - 8,24,1,25,1,25,3,25,1224,8,25,1,26,1,26,3,26,1228,8,26,1,27,5,27,1231,8, - 27,10,27,12,27,1234,9,27,1,27,1,27,3,27,1238,8,27,1,27,3,27,1241,8,27,1, - 27,1,27,1,27,5,27,1246,8,27,10,27,12,27,1249,9,27,1,27,1,27,1,27,1,27,5, - 27,1255,8,27,10,27,12,27,1258,9,27,1,27,1,27,1,27,5,27,1263,8,27,10,27, - 12,27,1266,9,27,1,27,1,27,1,27,1,27,3,27,1272,8,27,1,28,1,28,1,29,1,29, - 1,30,1,30,1,30,1,30,3,30,1282,8,30,1,31,1,31,3,31,1286,8,31,1,31,1,31,1, - 31,1,31,5,31,1292,8,31,10,31,12,31,1295,9,31,3,31,1297,8,31,3,31,1299,8, - 31,1,31,1,31,3,31,1303,8,31,1,31,1,31,1,32,1,32,3,32,1309,8,32,1,32,1,32, - 3,32,1313,8,32,1,32,1,32,1,33,1,33,3,33,1319,8,33,3,33,1321,8,33,1,33,1, - 33,1,33,1,33,1,34,5,34,1328,8,34,10,34,12,34,1331,9,34,1,34,1,34,1,35,5, - 35,1336,8,35,10,35,12,35,1339,9,35,1,35,1,35,1,35,1,36,1,36,3,36,1346,8, - 36,1,37,1,37,1,37,5,37,1351,8,37,10,37,12,37,1354,9,37,1,37,3,37,1357,8, - 37,1,38,1,38,1,38,3,38,1362,8,38,1,39,3,39,1365,8,39,1,40,1,40,1,41,1,41, - 3,41,1371,8,41,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1, - 44,3,44,1385,8,44,1,44,3,44,1388,8,44,1,44,1,44,1,44,1,44,1,45,1,45,3,45, - 1396,8,45,1,45,1,45,1,45,5,45,1401,8,45,10,45,12,45,1404,9,45,1,45,1,45, - 1,46,3,46,1409,8,46,1,46,1,46,3,46,1413,8,46,1,46,1,46,1,46,1,47,1,47,3, - 47,1420,8,47,1,48,1,48,1,48,3,48,1425,8,48,1,49,1,49,1,49,1,49,1,49,3,49, - 1432,8,49,1,49,3,49,1435,8,49,1,50,1,50,4,50,1439,8,50,11,50,12,50,1440, - 1,50,1,50,4,50,1445,8,50,11,50,12,50,1446,3,50,1449,8,50,1,51,1,51,1,51, - 1,51,1,52,1,52,3,52,1457,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, - 1,53,1,53,1,53,3,53,1485,8,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1, - 54,1,54,3,54,1497,8,54,1,55,1,55,1,55,1,55,1,55,1,56,3,56,1505,8,56,1,56, - 5,56,1508,8,56,10,56,12,56,1511,9,56,1,57,3,57,1514,8,57,1,57,3,57,1517, - 8,57,1,57,3,57,1520,8,57,1,57,1,57,4,57,1524,8,57,11,57,12,57,1525,1,57, - 5,57,1529,8,57,10,57,12,57,1532,9,57,1,58,1,58,1,58,1,58,5,58,1538,8,58, - 10,58,12,58,1541,9,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,3,60,1550,8,60, - 1,61,1,61,1,61,1,61,1,61,5,61,1557,8,61,10,61,12,61,1560,9,61,1,62,1,62, - 1,62,1,62,5,62,1566,8,62,10,62,12,62,1569,9,62,1,63,1,63,1,63,1,63,5,63, - 1575,8,63,10,63,12,63,1578,9,63,1,64,1,64,1,64,1,64,5,64,1584,8,64,10,64, - 12,64,1587,9,64,1,65,1,65,1,65,5,65,1592,8,65,10,65,12,65,1595,9,65,1,65, - 3,65,1598,8,65,1,66,1,66,1,66,1,66,3,66,1604,8,66,1,67,1,67,3,67,1608,8, - 67,3,67,1610,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69, - 5,69,1623,8,69,10,69,12,69,1626,9,69,1,70,1,70,1,70,5,70,1631,8,70,10,70, - 12,70,1634,9,70,1,71,1,71,3,71,1638,8,71,3,71,1640,8,71,1,71,1,71,1,71, - 1,71,5,71,1646,8,71,10,71,12,71,1649,9,71,1,71,1,71,1,71,1,71,5,71,1655, - 8,71,10,71,12,71,1658,9,71,1,71,1,71,1,72,1,72,1,72,5,72,1665,8,72,10,72, - 12,72,1668,9,72,1,73,1,73,3,73,1672,8,73,3,73,1674,8,73,1,73,1,73,1,73, - 1,73,5,73,1680,8,73,10,73,12,73,1683,9,73,1,73,1,73,1,73,1,73,5,73,1689, - 8,73,10,73,12,73,1692,9,73,1,73,1,73,1,74,1,74,1,74,5,74,1699,8,74,10,74, - 12,74,1702,9,74,1,75,1,75,1,75,5,75,1707,8,75,10,75,12,75,1710,9,75,1,76, - 1,76,1,76,5,76,1715,8,76,10,76,12,76,1718,9,76,1,77,1,77,1,77,5,77,1723, - 8,77,10,77,12,77,1726,9,77,1,78,1,78,3,78,1730,8,78,1,79,1,79,1,79,1,79, - 1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,3,82,1745,8,82,1,82,3,82,1748, - 8,82,1,82,3,82,1751,8,82,1,82,1,82,3,82,1755,8,82,1,82,5,82,1758,8,82,10, - 82,12,82,1761,9,82,1,83,1,83,1,83,1,83,5,83,1767,8,83,10,83,12,83,1770, - 9,83,1,84,1,84,3,84,1774,8,84,3,84,1776,8,84,1,84,1,84,1,84,1,84,1,84,1, - 84,1,85,1,85,1,86,1,86,1,86,3,86,1789,8,86,1,86,3,86,1792,8,86,1,86,1,86, - 3,86,1796,8,86,1,86,1,86,3,86,1800,8,86,1,86,3,86,1803,8,86,1,86,1,86,1, - 87,3,87,1808,8,87,1,87,1,87,1,88,3,88,1813,8,88,1,88,3,88,1816,8,88,1,88, - 3,88,1819,8,88,1,88,3,88,1822,8,88,1,88,3,88,1825,8,88,1,89,1,89,1,89,1, - 89,3,89,1831,8,89,1,89,5,89,1834,8,89,10,89,12,89,1837,9,89,1,90,1,90,1, - 91,1,91,1,91,1,91,1,91,3,91,1846,8,91,3,91,1848,8,91,1,92,1,92,1,93,3,93, - 1853,8,93,1,93,1,93,1,93,3,93,1858,8,93,1,93,1,93,3,93,1862,8,93,1,93,5, - 93,1865,8,93,10,93,12,93,1868,9,93,1,94,1,94,1,94,1,94,3,94,1874,8,94,1, - 94,3,94,1877,8,94,1,95,1,95,1,95,1,95,3,95,1883,8,95,1,96,1,96,1,96,1,96, - 5,96,1889,8,96,10,96,12,96,1892,9,96,1,97,1,97,1,97,1,97,1,98,1,98,1,98, - 1,98,1,98,5,98,1903,8,98,10,98,12,98,1906,9,98,1,99,4,99,1909,8,99,11,99, - 12,99,1910,1,99,3,99,1914,8,99,1,99,5,99,1917,8,99,10,99,12,99,1920,9,99, - 1,99,1,99,5,99,1924,8,99,10,99,12,99,1927,9,99,3,99,1929,8,99,1,100,1,100, - 1,100,3,100,1934,8,100,1,100,1,100,3,100,1938,8,100,3,100,1940,8,100,1, - 100,1,100,3,100,1944,8,100,1,100,1,100,3,100,1948,8,100,3,100,1950,8,100, - 3,100,1952,8,100,1,101,1,101,1,101,1,101,1,101,3,101,1959,8,101,1,102,1, - 102,1,102,5,102,1964,8,102,10,102,12,102,1967,9,102,1,103,1,103,1,103,1, - 103,1,103,3,103,1974,8,103,1,103,1,103,1,104,1,104,1,104,5,104,1981,8,104, - 10,104,12,104,1984,9,104,1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107, - 1,107,1,108,1,108,1,108,5,108,1998,8,108,10,108,12,108,2001,9,108,1,109, - 1,109,1,109,1,110,1,110,3,110,2008,8,110,3,110,2010,8,110,1,110,1,110,1, - 110,1,110,1,110,3,110,2017,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2024, - 8,110,1,111,1,111,1,111,5,111,2029,8,111,10,111,12,111,2032,9,111,1,112, - 1,112,3,112,2036,8,112,3,112,2038,8,112,1,112,1,112,1,112,1,112,1,112,1, - 112,1,113,1,113,1,113,5,113,2049,8,113,10,113,12,113,2052,9,113,1,114,1, - 114,1,114,5,114,2057,8,114,10,114,12,114,2060,9,114,1,115,1,115,1,115,5, - 115,2065,8,115,10,115,12,115,2068,9,115,1,116,1,116,3,116,2072,8,116,3, - 116,2074,8,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,5, - 117,2085,8,117,10,117,12,117,2088,9,117,1,118,1,118,1,118,1,118,4,118,2094, - 8,118,11,118,12,118,2095,3,118,2098,8,118,1,119,1,119,1,119,4,119,2103, - 8,119,11,119,12,119,2104,1,120,1,120,1,121,1,121,3,121,2111,8,121,3,121, - 2113,8,121,1,121,1,121,1,121,1,121,5,121,2119,8,121,10,121,12,121,2122, - 9,121,1,121,1,121,1,121,1,121,5,121,2128,8,121,10,121,12,121,2131,9,121, - 1,121,1,121,1,122,1,122,1,122,5,122,2138,8,122,10,122,12,122,2141,9,122, - 1,123,1,123,3,123,2145,8,123,1,123,3,123,2148,8,123,1,123,1,123,1,123,1, - 123,1,123,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1, - 126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1, - 129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,3,130,2186,8,130,1, - 130,3,130,2189,8,130,1,130,3,130,2192,8,130,1,130,1,130,1,131,1,131,3,131, - 2198,8,131,1,132,3,132,2201,8,132,1,132,1,132,1,132,3,132,2206,8,132,3, - 132,2208,8,132,1,132,1,132,1,132,1,132,1,133,3,133,2215,8,133,1,133,1,133, - 1,133,1,133,1,133,1,133,5,133,2223,8,133,10,133,12,133,2226,9,133,1,133, - 1,133,1,134,1,134,1,135,3,135,2233,8,135,1,135,1,135,1,135,3,135,2238,8, - 135,1,135,1,135,1,136,1,136,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1, - 139,1,139,1,139,1,139,1,139,1,139,3,139,2257,8,139,1,139,3,139,2260,8,139, - 1,139,3,139,2263,8,139,1,139,1,139,1,139,1,139,3,139,2269,8,139,3,139,2271, - 8,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141, - 3,141,2284,8,141,1,141,3,141,2287,8,141,1,141,3,141,2290,8,141,1,141,1, - 141,1,141,1,141,3,141,2296,8,141,3,141,2298,8,141,1,142,1,142,1,142,1,142, - 1,142,1,143,1,143,1,143,1,143,3,143,2309,8,143,1,143,1,143,1,144,1,144, - 1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,3,145,2323,8,145,1,146, - 1,146,5,146,2327,8,146,10,146,12,146,2330,9,146,1,146,3,146,2333,8,146, - 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,149,1,149,1,149,1,149,3,149, - 2346,8,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151, - 1,151,3,151,2359,8,151,1,151,1,151,1,152,1,152,1,152,3,152,2366,8,152,1, - 152,1,152,3,152,2370,8,152,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1, - 155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,159,1,159,1,160,1, - 160,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1, - 166,1,167,1,167,1,168,1,168,1,169,1,169,1,170,1,170,1,170,5,170,2413,8, - 170,10,170,12,170,2416,9,170,1,171,1,171,3,171,2420,8,171,1,172,1,172,1, - 173,1,173,1,174,1,174,1,175,1,175,1,176,1,176,1,177,1,177,1,177,5,177,2435, - 8,177,10,177,12,177,2438,9,177,1,178,1,178,1,179,1,179,1,180,1,180,1,181, - 1,181,1,182,1,182,1,182,1,182,1,183,1,183,1,184,3,184,2455,8,184,1,184, - 1,184,1,184,3,184,2460,8,184,1,185,1,185,1,185,1,185,1,185,1,186,1,186, - 1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,3,188, - 2480,8,188,1,188,1,188,3,188,2484,8,188,1,188,1,188,1,188,1,188,1,188,3, - 188,2491,8,188,1,188,3,188,2494,8,188,1,188,1,188,1,188,1,188,1,188,3,188, - 2501,8,188,1,188,3,188,2504,8,188,1,188,1,188,3,188,2508,8,188,1,188,1, - 188,1,188,1,188,1,188,3,188,2515,8,188,3,188,2517,8,188,1,189,1,189,1,190, - 3,190,2522,8,190,1,190,1,190,3,190,2526,8,190,1,190,1,190,3,190,2530,8, - 190,1,190,1,190,3,190,2534,8,190,1,190,1,190,3,190,2538,8,190,3,190,2540, - 8,190,1,191,4,191,2543,8,191,11,191,12,191,2544,1,191,3,191,2548,8,191, - 1,191,5,191,2551,8,191,10,191,12,191,2554,9,191,1,191,1,191,4,191,2558, - 8,191,11,191,12,191,2559,3,191,2562,8,191,1,192,1,192,1,193,1,193,1,193, - 5,193,2569,8,193,10,193,12,193,2572,9,193,1,194,1,194,1,195,1,195,1,196, - 1,196,1,197,1,197,1,198,1,198,1,198,1,198,3,198,2586,8,198,3,198,2588,8, - 198,1,198,1,198,1,199,1,199,3,199,2594,8,199,1,200,1,200,3,200,2598,8,200, - 1,200,1,200,1,200,1,201,1,201,3,201,2605,8,201,1,201,1,201,1,201,1,202, - 1,202,1,203,1,203,1,204,1,204,1,204,1,204,3,204,2618,8,204,1,204,1,204, - 1,204,1,205,1,205,3,205,2625,8,205,1,206,1,206,1,206,1,206,1,206,1,207, - 1,207,1,207,1,207,3,207,2636,8,207,1,208,1,208,1,208,1,208,3,208,2642,8, - 208,1,209,1,209,1,210,5,210,2647,8,210,10,210,12,210,2650,9,210,1,210,1, - 210,1,210,1,210,1,210,1,210,5,210,2658,8,210,10,210,12,210,2661,9,210,3, - 210,2663,8,210,1,210,1,210,1,211,3,211,2668,8,211,1,211,1,211,1,211,3,211, - 2673,8,211,3,211,2675,8,211,1,211,1,211,1,212,1,212,1,212,5,212,2682,8, - 212,10,212,12,212,2685,9,212,1,212,1,212,1,212,1,212,1,212,1,212,5,212, - 2693,8,212,10,212,12,212,2696,9,212,1,212,3,212,2699,8,212,1,213,1,213, - 1,213,1,213,3,213,2705,8,213,1,214,1,214,1,215,3,215,2710,8,215,1,215,3, - 215,2713,8,215,1,215,1,215,3,215,2717,8,215,1,215,3,215,2720,8,215,1,215, - 1,215,1,216,5,216,2725,8,216,10,216,12,216,2728,9,216,1,216,1,216,1,216, - 1,217,3,217,2734,8,217,1,217,1,217,5,217,2738,8,217,10,217,12,217,2741, - 9,217,1,217,1,217,1,217,1,218,1,218,3,218,2748,8,218,1,219,1,219,1,219, - 5,219,2753,8,219,10,219,12,219,2756,9,219,1,219,3,219,2759,8,219,1,220, - 1,220,1,220,1,220,1,220,1,221,3,221,2767,8,221,1,221,3,221,2770,8,221,1, - 221,1,221,1,221,5,221,2775,8,221,10,221,12,221,2778,9,221,1,221,1,221,1, - 221,1,221,5,221,2784,8,221,10,221,12,221,2787,9,221,1,222,1,222,1,223,1, - 223,1,223,1,223,3,223,2795,8,223,1,224,1,224,1,224,3,224,2800,8,224,1,225, - 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225, - 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225, - 1,225,1,225,1,225,1,225,1,225,3,225,2832,8,225,1,226,1,226,3,226,2836,8, - 226,1,227,1,227,1,228,1,228,1,229,3,229,2843,8,229,1,229,5,229,2846,8,229, - 10,229,12,229,2849,9,229,1,230,1,230,1,230,1,231,3,231,2855,8,231,1,231, - 3,231,2858,8,231,1,232,1,232,1,232,5,232,2863,8,232,10,232,12,232,2866, - 9,232,1,232,3,232,2869,8,232,1,233,1,233,1,233,1,233,1,233,3,233,2876,8, - 233,1,233,1,233,1,233,3,233,2881,8,233,1,234,1,234,1,234,1,234,1,234,3, - 234,2888,8,234,1,234,3,234,2891,8,234,1,234,1,234,1,234,1,234,1,234,1,234, - 1,234,1,234,3,234,2901,8,234,1,235,1,235,1,235,1,236,1,236,1,236,1,236, - 1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240, - 1,241,3,241,2923,8,241,1,241,3,241,2926,8,241,1,241,3,241,2929,8,241,1, - 241,3,241,2932,8,241,1,242,1,242,3,242,2936,8,242,1,243,1,243,1,243,1,244, - 1,244,1,245,1,245,3,245,2945,8,245,1,246,1,246,5,246,2949,8,246,10,246, - 12,246,2952,9,246,1,247,3,247,2955,8,247,1,247,1,247,1,248,1,248,3,248, - 2961,8,248,1,248,3,248,2964,8,248,1,249,3,249,2967,8,249,1,249,1,249,1, - 250,1,250,1,251,1,251,1,251,1,252,1,252,3,252,2978,8,252,1,252,1,252,1, - 252,1,253,1,253,1,253,1,253,1,254,1,254,5,254,2989,8,254,10,254,12,254, - 2992,9,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255, - 3,255,3004,8,255,1,256,1,256,3,256,3008,8,256,1,257,1,257,1,257,1,257,1, - 257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,3,257,3025, - 8,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,3,258,3043,8,258,1,259,1,259,1,259,1,259, - 1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259, - 1,259,1,259,1,259,1,259,1,259,3,259,3066,8,259,1,260,1,260,1,260,1,260, - 5,260,3072,8,260,10,260,12,260,3075,9,260,1,261,1,261,1,261,1,261,1,261, - 1,262,1,262,1,262,1,262,1,263,5,263,3087,8,263,10,263,12,263,3090,9,263, - 1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,5,264,3101,8,264, - 10,264,12,264,3104,9,264,1,264,3,264,3107,8,264,1,265,1,265,1,265,1,266, - 3,266,3113,8,266,1,266,1,266,1,267,1,267,1,267,1,267,1,268,3,268,3122,8, - 268,1,268,1,268,3,268,3126,8,268,1,268,5,268,3129,8,268,10,268,12,268,3132, - 9,268,1,269,1,269,1,269,1,269,1,269,1,270,3,270,3140,8,270,1,270,1,270, - 5,270,3144,8,270,10,270,12,270,3147,9,270,1,270,1,270,1,270,1,270,1,271, - 1,271,1,272,1,272,3,272,3157,8,272,1,272,3,272,3160,8,272,1,272,5,272,3163, - 8,272,10,272,12,272,3166,9,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274, - 5,274,3175,8,274,10,274,12,274,3178,9,274,1,274,1,274,1,275,1,275,3,275, - 3184,8,275,1,275,1,275,5,275,3188,8,275,10,275,12,275,3191,9,275,1,275, - 1,275,1,276,1,276,1,277,1,277,1,277,1,277,3,277,3201,8,277,1,277,1,277, - 3,277,3205,8,277,3,277,3207,8,277,1,277,1,277,1,278,1,278,1,278,1,279,1, - 279,1,280,1,280,1,281,3,281,3219,8,281,1,282,1,282,1,282,1,282,1,282,1, - 283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1, - 285,1,286,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,288,1,288,1,289,1, - 289,1,289,1,289,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,292,1, - 292,1,292,3,292,3264,8,292,1,292,3,292,3267,8,292,1,292,1,292,3,292,3271, - 8,292,1,292,1,292,3,292,3275,8,292,1,292,1,292,1,293,1,293,3,293,3281,8, - 293,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,5,295,3293, - 8,295,10,295,12,295,3296,9,295,1,295,1,295,1,296,1,296,1,296,3,296,3303, - 8,296,3,296,3305,8,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297, - 1,297,3,297,3316,8,297,3,297,3318,8,297,1,297,1,297,1,297,1,297,1,297,1, - 297,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,5,299,3335,8, - 299,10,299,12,299,3338,9,299,1,299,3,299,3341,8,299,1,300,1,300,1,300,1, - 300,3,300,3347,8,300,1,300,1,300,1,300,3,300,3352,8,300,1,301,1,301,1,301, - 1,302,1,302,1,302,1,302,1,302,3,302,3362,8,302,1,303,1,303,1,303,1,304, - 1,304,1,304,3,304,3370,8,304,1,305,1,305,1,305,1,306,1,306,1,306,1,306, - 1,306,1,307,3,307,3381,8,307,1,307,3,307,3384,8,307,1,307,1,307,3,307,3388, - 8,307,1,307,3,307,3391,8,307,1,308,1,308,3,308,3395,8,308,1,309,1,309,1, - 309,1,309,1,310,1,310,1,310,1,310,1,310,1,310,5,310,3407,8,310,10,310,12, - 310,3410,9,310,1,310,1,310,1,311,1,311,1,312,3,312,3417,8,312,1,312,1,312, - 1,312,3,312,3422,8,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,314, - 1,314,1,314,1,314,1,315,1,315,3,315,3437,8,315,1,315,1,315,3,315,3441,8, - 315,1,315,1,315,3,315,3445,8,315,1,316,1,316,1,316,1,316,1,316,1,317,1, - 317,1,317,1,317,1,317,1,318,3,318,3458,8,318,1,318,3,318,3461,8,318,1,318, - 1,318,3,318,3465,8,318,1,318,1,318,1,318,1,318,1,318,3,318,3472,8,318,1, - 318,1,318,1,318,1,318,3,318,3478,8,318,1,319,1,319,1,320,1,320,1,321,1, - 321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1, - 324,1,324,1,325,1,325,3,325,3501,8,325,1,326,1,326,1,326,4,326,3506,8,326, - 11,326,12,326,3507,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,327, - 1,328,1,328,1,328,5,328,3522,8,328,10,328,12,328,3525,9,328,1,328,3,328, - 3528,8,328,1,329,1,329,1,329,5,329,3533,8,329,10,329,12,329,3536,9,329, - 1,329,3,329,3539,8,329,1,329,1,329,5,329,3543,8,329,10,329,12,329,3546, - 9,329,1,329,3,329,3549,8,329,1,330,1,330,1,330,1,330,1,330,1,330,3,330, - 3557,8,330,1,330,3,330,3560,8,330,1,331,1,331,3,331,3564,8,331,1,332,1, - 332,1,332,1,332,1,332,1,333,1,333,1,333,1,334,1,334,1,334,1,335,1,335,1, - 335,1,336,1,336,1,336,1,336,1,336,1,337,3,337,3586,8,337,1,337,3,337,3589, - 8,337,1,338,1,338,1,338,1,338,1,338,1,339,1,339,3,339,3598,8,339,1,339, - 1,339,3,339,3602,8,339,3,339,3604,8,339,1,339,3,339,3607,8,339,1,340,1, - 340,1,340,1,340,1,340,1,340,1,340,1,340,3,340,3617,8,340,1,341,1,341,3, - 341,3621,8,341,1,342,1,342,3,342,3625,8,342,1,343,1,343,1,343,1,343,3,343, - 3631,8,343,1,344,1,344,3,344,3635,8,344,1,344,3,344,3638,8,344,1,344,5, - 344,3641,8,344,10,344,12,344,3644,9,344,1,345,1,345,1,345,3,345,3649,8, - 345,1,345,1,345,1,346,1,346,1,346,3,346,3656,8,346,1,346,1,346,1,347,1, - 347,1,347,3,347,3663,8,347,1,347,1,347,1,348,1,348,1,348,3,348,3670,8,348, - 1,348,1,348,1,349,1,349,1,349,1,349,1,350,3,350,3679,8,350,1,350,1,350, - 1,350,1,351,1,351,1,351,3,351,3687,8,351,1,352,1,352,1,353,1,353,3,353, - 3693,8,353,1,353,3,353,3696,8,353,1,353,3,353,3699,8,353,1,354,1,354,1, - 355,1,355,1,356,1,356,1,356,1,356,3,356,3709,8,356,1,357,1,357,1,357,3, - 357,3714,8,357,1,357,1,357,1,357,3,357,3719,8,357,1,357,1,357,1,357,3,357, - 3724,8,357,1,357,1,357,1,358,3,358,3729,8,358,1,358,1,358,1,358,3,358,3734, - 8,358,1,359,1,359,1,359,1,359,3,359,3740,8,359,1,359,1,359,1,359,1,359, - 3,359,3746,8,359,1,360,1,360,1,361,1,361,1,362,1,362,1,363,1,363,1,364, - 1,364,1,364,1,364,1,365,3,365,3761,8,365,1,365,1,365,1,365,1,365,1,365, - 1,365,1,366,1,366,1,367,1,367,1,367,3,367,3774,8,367,1,368,1,368,1,369, - 1,369,3,369,3780,8,369,1,369,1,369,3,369,3784,8,369,1,369,1,369,1,370,1, - 370,1,370,1,370,1,370,1,370,1,370,3,370,3795,8,370,3,370,3797,8,370,1,371, - 1,371,1,372,1,372,1,373,1,373,3,373,3805,8,373,3,373,3807,8,373,1,373,1, - 373,5,373,3811,8,373,10,373,12,373,3814,9,373,1,373,1,373,1,374,1,374,1, - 375,1,375,1,375,1,375,1,375,3,375,3825,8,375,1,375,1,375,1,375,1,375,1, - 375,3,375,3832,8,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,377,3, - 377,3842,8,377,1,378,3,378,3845,8,378,1,379,1,379,1,379,3,379,3850,8,379, - 1,379,1,379,1,380,1,380,1,380,1,380,1,381,1,381,1,381,1,381,1,382,1,382, - 1,382,1,383,1,383,3,383,3867,8,383,3,383,3869,8,383,1,383,1,383,1,383,1, - 383,1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,384,1,384,1,385,1,385,3, - 385,3886,8,385,1,385,1,385,5,385,3890,8,385,10,385,12,385,3893,9,385,1, - 385,3,385,3896,8,385,1,386,1,386,3,386,3900,8,386,1,386,1,386,5,386,3904, - 8,386,10,386,12,386,3907,9,386,1,386,1,386,1,386,5,386,3912,8,386,10,386, - 12,386,3915,9,386,1,386,1,386,3,386,3919,8,386,1,387,1,387,1,387,1,387, - 1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390, - 3,390,3937,8,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391, - 3,391,3948,8,391,1,392,1,392,1,392,1,393,1,393,1,393,1,394,1,394,1,394, - 1,395,1,395,1,395,1,396,1,396,1,396,1,397,1,397,1,397,1,398,1,398,1,398, - 1,398,1,398,1,399,1,399,3,399,3975,8,399,1,399,1,399,5,399,3979,8,399,10, - 399,12,399,3982,9,399,1,399,3,399,3985,8,399,1,400,1,400,1,400,1,400,3, - 400,3991,8,400,1,400,1,400,3,400,3995,8,400,3,400,3997,8,400,1,400,3,400, - 4000,8,400,1,400,1,400,1,401,1,401,3,401,4006,8,401,1,401,3,401,4009,8, - 401,1,401,1,401,1,401,1,401,1,401,3,401,4016,8,401,1,401,3,401,4019,8,401, - 1,401,3,401,4022,8,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402, - 1,402,3,402,4033,8,402,1,402,3,402,4036,8,402,1,402,3,402,4039,8,402,1, - 402,1,402,1,402,3,402,4044,8,402,1,402,3,402,4047,8,402,1,402,1,402,3,402, - 4051,8,402,3,402,4053,8,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,1, - 404,1,404,1,405,1,405,1,405,1,406,1,406,1,406,1,407,1,407,1,407,1,407,1, - 407,3,407,4075,8,407,1,408,1,408,1,408,5,408,4080,8,408,10,408,12,408,4083, - 9,408,1,408,3,408,4086,8,408,1,409,1,409,1,409,5,409,4091,8,409,10,409, - 12,409,4094,9,409,1,409,3,409,4097,8,409,1,410,1,410,1,410,5,410,4102,8, - 410,10,410,12,410,4105,9,410,1,410,3,410,4108,8,410,1,411,1,411,1,411,5, - 411,4113,8,411,10,411,12,411,4116,9,411,1,411,3,411,4119,8,411,1,412,1, - 412,1,413,1,413,1,413,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1, - 416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417,1,417,3,417,4144,8, - 417,1,418,5,418,4147,8,418,10,418,12,418,4150,9,418,1,418,3,418,4153,8, - 418,1,419,1,419,3,419,4157,8,419,1,420,1,420,1,420,1,420,1,421,1,421,1, - 421,1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,3, - 423,4177,8,423,1,423,1,423,3,423,4181,8,423,1,423,1,423,3,423,4185,8,423, - 1,423,1,423,1,424,3,424,4190,8,424,1,424,3,424,4193,8,424,1,425,1,425,1, - 425,1,425,1,425,1,425,1,426,1,426,1,426,5,426,4204,8,426,10,426,12,426, - 4207,9,426,1,426,3,426,4210,8,426,1,427,1,427,1,427,1,427,1,427,1,427,1, - 427,3,427,4219,8,427,1,428,1,428,1,428,1,429,1,429,5,429,4226,8,429,10, - 429,12,429,4229,9,429,1,429,1,429,1,430,1,430,1,430,1,430,1,431,1,431,1, - 432,1,432,3,432,4241,8,432,1,432,1,432,1,432,5,432,4246,8,432,10,432,12, - 432,4249,9,432,1,432,1,432,4,432,4253,8,432,11,432,12,432,4254,3,432,4257, - 8,432,1,432,1,432,1,432,3,432,4262,8,432,1,433,1,433,1,433,1,433,1,434, - 1,434,3,434,4270,8,434,1,434,1,434,1,434,5,434,4275,8,434,10,434,12,434, - 4278,9,434,1,434,1,434,4,434,4282,8,434,11,434,12,434,4283,3,434,4286,8, - 434,1,434,1,434,1,434,3,434,4291,8,434,1,435,1,435,1,435,1,436,1,436,5, - 436,4298,8,436,10,436,12,436,4301,9,436,1,436,1,436,1,437,1,437,1,437,1, - 438,1,438,5,438,4310,8,438,10,438,12,438,4313,9,438,1,438,1,438,1,439,1, - 439,1,439,1,439,1,439,1,440,1,440,1,440,3,440,4325,8,440,3,440,4327,8,440, - 1,440,1,440,1,440,3,440,4332,8,440,1,440,1,440,3,440,4336,8,440,3,440,4338, - 8,440,1,440,3,440,4341,8,440,1,440,1,440,3,440,4345,8,440,1,440,1,440,1, - 441,1,441,1,442,1,442,1,443,1,443,1,444,1,444,1,445,1,445,1,445,1,445,1, - 445,1,445,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447,1,447,1,447,1, - 447,1,448,1,448,1,448,1,448,1,448,1,449,1,449,1,449,5,449,4382,8,449,10, - 449,12,449,4385,9,449,1,449,3,449,4388,8,449,1,449,3,449,4391,8,449,1,450, - 1,450,1,450,1,450,1,450,3,450,4398,8,450,1,451,1,451,1,451,1,451,1,452, - 5,452,4405,8,452,10,452,12,452,4408,9,452,1,452,1,452,1,452,1,453,1,453, - 1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,455,1,455,1,455, - 1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457, - 1,458,1,458,5,458,4441,8,458,10,458,12,458,4444,9,458,1,458,1,458,1,458, - 5,458,4449,8,458,10,458,12,458,4452,9,458,1,458,1,458,4,458,4456,8,458, - 11,458,12,458,4457,3,458,4460,8,458,1,458,1,458,1,458,3,458,4465,8,458, - 1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,460,1,460, - 1,460,1,461,1,461,1,461,1,461,3,461,4484,8,461,1,461,1,461,1,461,3,461, - 4489,8,461,3,461,4491,8,461,1,461,3,461,4494,8,461,1,461,1,461,1,462,1, - 462,1,462,1,462,1,462,1,462,1,463,1,463,1,463,5,463,4507,8,463,10,463,12, - 463,4510,9,463,1,463,3,463,4513,8,463,1,464,1,464,1,464,3,464,4518,8,464, - 1,465,1,465,1,465,1,465,1,466,1,466,3,466,4526,8,466,1,466,1,466,1,466, - 5,466,4531,8,466,10,466,12,466,4534,9,466,1,466,1,466,4,466,4538,8,466, - 11,466,12,466,4539,3,466,4542,8,466,1,466,3,466,4545,8,466,1,467,1,467, - 1,467,3,467,4550,8,467,1,467,3,467,4553,8,467,1,467,1,467,1,468,1,468,1, - 468,5,468,4560,8,468,10,468,12,468,4563,9,468,1,468,3,468,4566,8,468,1, - 469,1,469,1,469,1,469,3,469,4572,8,469,1,470,1,470,1,470,3,470,4577,8,470, - 1,470,1,470,1,471,1,471,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473, - 1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,476,1,476, - 1,476,1,476,1,477,3,477,4606,8,477,1,477,5,477,4609,8,477,10,477,12,477, - 4612,9,477,1,477,1,477,1,477,1,477,1,478,1,478,1,479,5,479,4621,8,479,10, - 479,12,479,4624,9,479,1,479,1,479,1,479,1,479,1,479,1,479,5,479,4632,8, - 479,10,479,12,479,4635,9,479,3,479,4637,8,479,1,479,1,479,1,480,3,480,4642, - 8,480,1,480,1,480,1,480,3,480,4647,8,480,3,480,4649,8,480,1,480,1,480,1, - 481,1,481,1,482,3,482,4656,8,482,1,482,3,482,4659,8,482,1,482,1,482,3,482, - 4663,8,482,1,482,3,482,4666,8,482,1,482,1,482,1,483,3,483,4671,8,483,1, - 483,4,483,4674,8,483,11,483,12,483,4675,1,483,1,483,1,483,1,484,1,484,4, - 484,4683,8,484,11,484,12,484,4684,1,484,1,484,1,485,1,485,3,485,4691,8, - 485,1,486,1,486,1,486,1,486,1,486,3,486,4698,8,486,1,487,3,487,4701,8,487, - 1,487,3,487,4704,8,487,1,488,1,488,1,489,1,489,1,490,1,490,1,491,1,491, - 1,492,1,492,1,493,1,493,1,494,1,494,1,494,0,1,0,495,0,2,4,6,8,10,12,14, - 16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62, - 64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108, - 110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144, - 146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180, - 182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216, - 218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252, - 254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288, - 290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324, - 326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360, - 362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396, - 398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432, - 434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468, - 470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504, - 506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540, - 542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576, - 578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612, - 614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648, - 650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684, - 686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720, - 722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756, - 758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792, - 794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828, - 830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864, - 866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900, - 902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936, - 938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972, - 974,976,978,980,982,984,986,988,0,27,4,0,107,107,199,199,201,201,217,217, - 2,0,191,191,210,210,3,0,174,174,177,178,187,187,4,0,186,186,189,189,206, - 206,208,208,2,0,199,199,201,201,3,0,194,194,198,198,203,203,2,0,179,179, - 213,213,3,0,76,76,90,90,210,210,2,0,64,64,156,156,1,0,218,219,1,0,122,124, - 2,0,139,139,185,185,2,0,34,34,217,217,2,0,31,31,120,120,2,0,39,39,163,163, - 3,0,80,80,83,83,114,114,2,0,148,148,185,185,2,0,128,128,175,175,2,0,42, - 42,188,188,2,0,125,125,176,176,1,0,221,222,2,0,184,184,207,207,2,0,102, - 102,210,210,2,0,2,2,165,165,2,0,137,137,153,153,2,0,6,6,18,18,2,0,17,17, - 132,132,4968,0,1005,1,0,0,0,2,1091,1,0,0,0,4,1093,1,0,0,0,6,1116,1,0,0, - 0,8,1121,1,0,0,0,10,1123,1,0,0,0,12,1125,1,0,0,0,14,1129,1,0,0,0,16,1132, - 1,0,0,0,18,1136,1,0,0,0,20,1140,1,0,0,0,22,1147,1,0,0,0,24,1155,1,0,0,0, - 26,1163,1,0,0,0,28,1172,1,0,0,0,30,1174,1,0,0,0,32,1176,1,0,0,0,34,1178, - 1,0,0,0,36,1180,1,0,0,0,38,1182,1,0,0,0,40,1184,1,0,0,0,42,1186,1,0,0,0, - 44,1188,1,0,0,0,46,1200,1,0,0,0,48,1219,1,0,0,0,50,1223,1,0,0,0,52,1227, - 1,0,0,0,54,1271,1,0,0,0,56,1273,1,0,0,0,58,1275,1,0,0,0,60,1281,1,0,0,0, - 62,1298,1,0,0,0,64,1306,1,0,0,0,66,1320,1,0,0,0,68,1329,1,0,0,0,70,1337, - 1,0,0,0,72,1343,1,0,0,0,74,1356,1,0,0,0,76,1361,1,0,0,0,78,1364,1,0,0,0, - 80,1366,1,0,0,0,82,1370,1,0,0,0,84,1372,1,0,0,0,86,1375,1,0,0,0,88,1378, - 1,0,0,0,90,1395,1,0,0,0,92,1408,1,0,0,0,94,1419,1,0,0,0,96,1421,1,0,0,0, - 98,1434,1,0,0,0,100,1448,1,0,0,0,102,1450,1,0,0,0,104,1456,1,0,0,0,106, - 1484,1,0,0,0,108,1496,1,0,0,0,110,1498,1,0,0,0,112,1504,1,0,0,0,114,1513, - 1,0,0,0,116,1533,1,0,0,0,118,1542,1,0,0,0,120,1549,1,0,0,0,122,1551,1,0, - 0,0,124,1561,1,0,0,0,126,1570,1,0,0,0,128,1579,1,0,0,0,130,1597,1,0,0,0, - 132,1603,1,0,0,0,134,1609,1,0,0,0,136,1617,1,0,0,0,138,1619,1,0,0,0,140, - 1627,1,0,0,0,142,1639,1,0,0,0,144,1661,1,0,0,0,146,1673,1,0,0,0,148,1695, - 1,0,0,0,150,1703,1,0,0,0,152,1711,1,0,0,0,154,1719,1,0,0,0,156,1729,1,0, - 0,0,158,1731,1,0,0,0,160,1735,1,0,0,0,162,1738,1,0,0,0,164,1744,1,0,0,0, - 166,1762,1,0,0,0,168,1775,1,0,0,0,170,1783,1,0,0,0,172,1799,1,0,0,0,174, - 1807,1,0,0,0,176,1812,1,0,0,0,178,1830,1,0,0,0,180,1838,1,0,0,0,182,1847, - 1,0,0,0,184,1849,1,0,0,0,186,1852,1,0,0,0,188,1876,1,0,0,0,190,1882,1,0, - 0,0,192,1884,1,0,0,0,194,1893,1,0,0,0,196,1897,1,0,0,0,198,1928,1,0,0,0, - 200,1951,1,0,0,0,202,1958,1,0,0,0,204,1960,1,0,0,0,206,1973,1,0,0,0,208, - 1977,1,0,0,0,210,1985,1,0,0,0,212,1988,1,0,0,0,214,1991,1,0,0,0,216,1994, - 1,0,0,0,218,2002,1,0,0,0,220,2023,1,0,0,0,222,2025,1,0,0,0,224,2037,1,0, - 0,0,226,2045,1,0,0,0,228,2053,1,0,0,0,230,2061,1,0,0,0,232,2073,1,0,0,0, - 234,2081,1,0,0,0,236,2097,1,0,0,0,238,2099,1,0,0,0,240,2106,1,0,0,0,242, - 2112,1,0,0,0,244,2134,1,0,0,0,246,2142,1,0,0,0,248,2154,1,0,0,0,250,2156, - 1,0,0,0,252,2161,1,0,0,0,254,2166,1,0,0,0,256,2171,1,0,0,0,258,2176,1,0, - 0,0,260,2182,1,0,0,0,262,2197,1,0,0,0,264,2207,1,0,0,0,266,2214,1,0,0,0, - 268,2229,1,0,0,0,270,2232,1,0,0,0,272,2241,1,0,0,0,274,2243,1,0,0,0,276, - 2245,1,0,0,0,278,2270,1,0,0,0,280,2272,1,0,0,0,282,2297,1,0,0,0,284,2299, - 1,0,0,0,286,2304,1,0,0,0,288,2312,1,0,0,0,290,2322,1,0,0,0,292,2328,1,0, - 0,0,294,2334,1,0,0,0,296,2338,1,0,0,0,298,2341,1,0,0,0,300,2349,1,0,0,0, - 302,2354,1,0,0,0,304,2362,1,0,0,0,306,2373,1,0,0,0,308,2375,1,0,0,0,310, - 2377,1,0,0,0,312,2379,1,0,0,0,314,2381,1,0,0,0,316,2383,1,0,0,0,318,2385, - 1,0,0,0,320,2389,1,0,0,0,322,2391,1,0,0,0,324,2393,1,0,0,0,326,2395,1,0, - 0,0,328,2397,1,0,0,0,330,2399,1,0,0,0,332,2401,1,0,0,0,334,2403,1,0,0,0, - 336,2405,1,0,0,0,338,2407,1,0,0,0,340,2409,1,0,0,0,342,2419,1,0,0,0,344, - 2421,1,0,0,0,346,2423,1,0,0,0,348,2425,1,0,0,0,350,2427,1,0,0,0,352,2429, - 1,0,0,0,354,2431,1,0,0,0,356,2439,1,0,0,0,358,2441,1,0,0,0,360,2443,1,0, - 0,0,362,2445,1,0,0,0,364,2447,1,0,0,0,366,2451,1,0,0,0,368,2459,1,0,0,0, - 370,2461,1,0,0,0,372,2466,1,0,0,0,374,2471,1,0,0,0,376,2516,1,0,0,0,378, - 2518,1,0,0,0,380,2539,1,0,0,0,382,2561,1,0,0,0,384,2563,1,0,0,0,386,2565, - 1,0,0,0,388,2573,1,0,0,0,390,2575,1,0,0,0,392,2577,1,0,0,0,394,2579,1,0, - 0,0,396,2587,1,0,0,0,398,2593,1,0,0,0,400,2595,1,0,0,0,402,2602,1,0,0,0, - 404,2609,1,0,0,0,406,2611,1,0,0,0,408,2613,1,0,0,0,410,2624,1,0,0,0,412, - 2626,1,0,0,0,414,2635,1,0,0,0,416,2641,1,0,0,0,418,2643,1,0,0,0,420,2648, - 1,0,0,0,422,2674,1,0,0,0,424,2698,1,0,0,0,426,2704,1,0,0,0,428,2706,1,0, - 0,0,430,2709,1,0,0,0,432,2726,1,0,0,0,434,2733,1,0,0,0,436,2745,1,0,0,0, - 438,2758,1,0,0,0,440,2760,1,0,0,0,442,2769,1,0,0,0,444,2788,1,0,0,0,446, - 2794,1,0,0,0,448,2796,1,0,0,0,450,2831,1,0,0,0,452,2835,1,0,0,0,454,2837, - 1,0,0,0,456,2839,1,0,0,0,458,2842,1,0,0,0,460,2850,1,0,0,0,462,2854,1,0, - 0,0,464,2868,1,0,0,0,466,2880,1,0,0,0,468,2900,1,0,0,0,470,2902,1,0,0,0, - 472,2905,1,0,0,0,474,2909,1,0,0,0,476,2912,1,0,0,0,478,2915,1,0,0,0,480, - 2918,1,0,0,0,482,2922,1,0,0,0,484,2933,1,0,0,0,486,2937,1,0,0,0,488,2940, - 1,0,0,0,490,2944,1,0,0,0,492,2946,1,0,0,0,494,2954,1,0,0,0,496,2963,1,0, - 0,0,498,2966,1,0,0,0,500,2970,1,0,0,0,502,2972,1,0,0,0,504,2977,1,0,0,0, - 506,2982,1,0,0,0,508,2986,1,0,0,0,510,3003,1,0,0,0,512,3007,1,0,0,0,514, - 3024,1,0,0,0,516,3042,1,0,0,0,518,3065,1,0,0,0,520,3067,1,0,0,0,522,3076, - 1,0,0,0,524,3081,1,0,0,0,526,3088,1,0,0,0,528,3106,1,0,0,0,530,3108,1,0, - 0,0,532,3112,1,0,0,0,534,3116,1,0,0,0,536,3121,1,0,0,0,538,3133,1,0,0,0, - 540,3139,1,0,0,0,542,3152,1,0,0,0,544,3154,1,0,0,0,546,3167,1,0,0,0,548, - 3171,1,0,0,0,550,3181,1,0,0,0,552,3194,1,0,0,0,554,3196,1,0,0,0,556,3210, - 1,0,0,0,558,3213,1,0,0,0,560,3215,1,0,0,0,562,3218,1,0,0,0,564,3220,1,0, - 0,0,566,3225,1,0,0,0,568,3229,1,0,0,0,570,3234,1,0,0,0,572,3238,1,0,0,0, - 574,3244,1,0,0,0,576,3246,1,0,0,0,578,3248,1,0,0,0,580,3252,1,0,0,0,582, - 3255,1,0,0,0,584,3260,1,0,0,0,586,3280,1,0,0,0,588,3282,1,0,0,0,590,3286, - 1,0,0,0,592,3299,1,0,0,0,594,3312,1,0,0,0,596,3325,1,0,0,0,598,3340,1,0, - 0,0,600,3351,1,0,0,0,602,3353,1,0,0,0,604,3361,1,0,0,0,606,3363,1,0,0,0, - 608,3369,1,0,0,0,610,3371,1,0,0,0,612,3374,1,0,0,0,614,3390,1,0,0,0,616, - 3394,1,0,0,0,618,3396,1,0,0,0,620,3400,1,0,0,0,622,3413,1,0,0,0,624,3416, - 1,0,0,0,626,3425,1,0,0,0,628,3430,1,0,0,0,630,3444,1,0,0,0,632,3446,1,0, - 0,0,634,3451,1,0,0,0,636,3477,1,0,0,0,638,3479,1,0,0,0,640,3481,1,0,0,0, - 642,3483,1,0,0,0,644,3488,1,0,0,0,646,3494,1,0,0,0,648,3496,1,0,0,0,650, - 3500,1,0,0,0,652,3505,1,0,0,0,654,3512,1,0,0,0,656,3527,1,0,0,0,658,3548, - 1,0,0,0,660,3559,1,0,0,0,662,3563,1,0,0,0,664,3565,1,0,0,0,666,3570,1,0, - 0,0,668,3573,1,0,0,0,670,3576,1,0,0,0,672,3579,1,0,0,0,674,3585,1,0,0,0, - 676,3590,1,0,0,0,678,3603,1,0,0,0,680,3616,1,0,0,0,682,3618,1,0,0,0,684, - 3622,1,0,0,0,686,3630,1,0,0,0,688,3632,1,0,0,0,690,3645,1,0,0,0,692,3652, - 1,0,0,0,694,3659,1,0,0,0,696,3666,1,0,0,0,698,3673,1,0,0,0,700,3678,1,0, - 0,0,702,3683,1,0,0,0,704,3688,1,0,0,0,706,3698,1,0,0,0,708,3700,1,0,0,0, - 710,3702,1,0,0,0,712,3708,1,0,0,0,714,3710,1,0,0,0,716,3728,1,0,0,0,718, - 3745,1,0,0,0,720,3747,1,0,0,0,722,3749,1,0,0,0,724,3751,1,0,0,0,726,3753, - 1,0,0,0,728,3755,1,0,0,0,730,3760,1,0,0,0,732,3768,1,0,0,0,734,3773,1,0, - 0,0,736,3775,1,0,0,0,738,3777,1,0,0,0,740,3787,1,0,0,0,742,3798,1,0,0,0, - 744,3800,1,0,0,0,746,3806,1,0,0,0,748,3817,1,0,0,0,750,3819,1,0,0,0,752, - 3833,1,0,0,0,754,3841,1,0,0,0,756,3844,1,0,0,0,758,3849,1,0,0,0,760,3853, - 1,0,0,0,762,3857,1,0,0,0,764,3861,1,0,0,0,766,3868,1,0,0,0,768,3877,1,0, - 0,0,770,3895,1,0,0,0,772,3918,1,0,0,0,774,3920,1,0,0,0,776,3924,1,0,0,0, - 778,3928,1,0,0,0,780,3932,1,0,0,0,782,3947,1,0,0,0,784,3949,1,0,0,0,786, - 3952,1,0,0,0,788,3955,1,0,0,0,790,3958,1,0,0,0,792,3961,1,0,0,0,794,3964, - 1,0,0,0,796,3967,1,0,0,0,798,3984,1,0,0,0,800,3986,1,0,0,0,802,4003,1,0, - 0,0,804,4027,1,0,0,0,806,4058,1,0,0,0,808,4061,1,0,0,0,810,4063,1,0,0,0, - 812,4066,1,0,0,0,814,4074,1,0,0,0,816,4076,1,0,0,0,818,4087,1,0,0,0,820, - 4098,1,0,0,0,822,4109,1,0,0,0,824,4120,1,0,0,0,826,4122,1,0,0,0,828,4125, - 1,0,0,0,830,4127,1,0,0,0,832,4133,1,0,0,0,834,4143,1,0,0,0,836,4148,1,0, - 0,0,838,4156,1,0,0,0,840,4158,1,0,0,0,842,4162,1,0,0,0,844,4168,1,0,0,0, - 846,4173,1,0,0,0,848,4189,1,0,0,0,850,4194,1,0,0,0,852,4209,1,0,0,0,854, - 4218,1,0,0,0,856,4220,1,0,0,0,858,4223,1,0,0,0,860,4232,1,0,0,0,862,4236, - 1,0,0,0,864,4261,1,0,0,0,866,4263,1,0,0,0,868,4290,1,0,0,0,870,4292,1,0, - 0,0,872,4295,1,0,0,0,874,4304,1,0,0,0,876,4307,1,0,0,0,878,4316,1,0,0,0, - 880,4321,1,0,0,0,882,4348,1,0,0,0,884,4350,1,0,0,0,886,4352,1,0,0,0,888, - 4354,1,0,0,0,890,4356,1,0,0,0,892,4362,1,0,0,0,894,4367,1,0,0,0,896,4373, - 1,0,0,0,898,4390,1,0,0,0,900,4397,1,0,0,0,902,4399,1,0,0,0,904,4406,1,0, - 0,0,906,4412,1,0,0,0,908,4418,1,0,0,0,910,4423,1,0,0,0,912,4429,1,0,0,0, - 914,4434,1,0,0,0,916,4464,1,0,0,0,918,4466,1,0,0,0,920,4473,1,0,0,0,922, - 4479,1,0,0,0,924,4497,1,0,0,0,926,4512,1,0,0,0,928,4517,1,0,0,0,930,4519, - 1,0,0,0,932,4544,1,0,0,0,934,4546,1,0,0,0,936,4565,1,0,0,0,938,4571,1,0, - 0,0,940,4573,1,0,0,0,942,4580,1,0,0,0,944,4582,1,0,0,0,946,4584,1,0,0,0, - 948,4590,1,0,0,0,950,4595,1,0,0,0,952,4600,1,0,0,0,954,4605,1,0,0,0,956, - 4617,1,0,0,0,958,4622,1,0,0,0,960,4648,1,0,0,0,962,4652,1,0,0,0,964,4655, - 1,0,0,0,966,4670,1,0,0,0,968,4680,1,0,0,0,970,4690,1,0,0,0,972,4692,1,0, - 0,0,974,4700,1,0,0,0,976,4705,1,0,0,0,978,4707,1,0,0,0,980,4709,1,0,0,0, - 982,4711,1,0,0,0,984,4713,1,0,0,0,986,4715,1,0,0,0,988,4717,1,0,0,0,990, - 991,6,0,-1,0,991,992,5,77,0,0,992,993,3,0,0,0,993,994,5,209,0,0,994,995, - 3,0,0,0,995,996,5,55,0,0,996,997,3,0,0,28,997,1006,1,0,0,0,998,999,7,0, - 0,0,999,1006,3,0,0,14,1000,1001,7,1,0,0,1001,1006,3,2,1,0,1002,1003,5,8, - 0,0,1003,1006,3,2,1,0,1004,1006,3,6,3,0,1005,990,1,0,0,0,1005,998,1,0,0, - 0,1005,1000,1,0,0,0,1005,1002,1,0,0,0,1005,1004,1,0,0,0,1006,1088,1,0,0, - 0,1007,1008,10,27,0,0,1008,1009,5,190,0,0,1009,1087,3,0,0,28,1010,1011, - 10,26,0,0,1011,1012,5,78,0,0,1012,1087,3,0,0,27,1013,1014,10,25,0,0,1014, - 1015,5,112,0,0,1015,1087,3,0,0,26,1016,1017,10,24,0,0,1017,1018,5,12,0, - 0,1018,1087,3,0,0,25,1019,1020,10,23,0,0,1020,1021,5,173,0,0,1021,1087, - 3,0,0,24,1022,1023,10,22,0,0,1023,1024,5,215,0,0,1024,1087,3,0,0,23,1025, - 1026,10,21,0,0,1026,1027,5,195,0,0,1027,1087,3,0,0,22,1028,1029,10,20,0, - 0,1029,1030,7,2,0,0,1030,1087,3,0,0,21,1031,1032,10,19,0,0,1032,1033,7, - 3,0,0,1033,1087,3,0,0,20,1034,1035,10,18,0,0,1035,1036,5,181,0,0,1036,1087, - 3,0,0,19,1037,1038,10,17,0,0,1038,1039,7,4,0,0,1039,1087,3,0,0,18,1040, - 1041,10,16,0,0,1041,1042,7,5,0,0,1042,1087,3,0,0,17,1043,1044,10,15,0,0, - 1044,1045,7,6,0,0,1045,1087,3,0,0,15,1046,1047,10,12,0,0,1047,1048,7,7, - 0,0,1048,1087,3,2,1,0,1049,1050,10,11,0,0,1050,1051,5,13,0,0,1051,1087, - 3,2,1,0,1052,1053,10,10,0,0,1053,1054,5,191,0,0,1054,1087,3,2,1,0,1055, - 1056,10,9,0,0,1056,1057,5,100,0,0,1057,1087,3,2,1,0,1058,1059,10,8,0,0, - 1059,1061,5,211,0,0,1060,1062,3,4,2,0,1061,1060,1,0,0,0,1061,1062,1,0,0, - 0,1062,1063,1,0,0,0,1063,1087,5,212,0,0,1064,1065,10,7,0,0,1065,1066,5, - 192,0,0,1066,1068,5,196,0,0,1067,1069,3,4,2,0,1068,1067,1,0,0,0,1068,1069, - 1,0,0,0,1069,1070,1,0,0,0,1070,1087,5,197,0,0,1071,1072,10,6,0,0,1072,1087, - 3,20,10,0,1073,1074,10,5,0,0,1074,1075,5,202,0,0,1075,1087,3,90,45,0,1076, - 1077,10,4,0,0,1077,1078,5,182,0,0,1078,1087,3,18,9,0,1079,1080,10,3,0,0, - 1080,1081,5,180,0,0,1081,1084,3,90,45,0,1082,1085,3,18,9,0,1083,1085,3, - 20,10,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0,1085,1087,1,0,0,0,1086,1007, - 1,0,0,0,1086,1010,1,0,0,0,1086,1013,1,0,0,0,1086,1016,1,0,0,0,1086,1019, - 1,0,0,0,1086,1022,1,0,0,0,1086,1025,1,0,0,0,1086,1028,1,0,0,0,1086,1031, - 1,0,0,0,1086,1034,1,0,0,0,1086,1037,1,0,0,0,1086,1040,1,0,0,0,1086,1043, - 1,0,0,0,1086,1046,1,0,0,0,1086,1049,1,0,0,0,1086,1052,1,0,0,0,1086,1055, - 1,0,0,0,1086,1058,1,0,0,0,1086,1064,1,0,0,0,1086,1071,1,0,0,0,1086,1073, - 1,0,0,0,1086,1076,1,0,0,0,1086,1079,1,0,0,0,1087,1090,1,0,0,0,1088,1086, - 1,0,0,0,1088,1089,1,0,0,0,1089,1,1,0,0,0,1090,1088,1,0,0,0,1091,1092,3, - 90,45,0,1092,3,1,0,0,0,1093,1098,3,0,0,0,1094,1095,5,200,0,0,1095,1097, - 3,0,0,0,1096,1094,1,0,0,0,1097,1100,1,0,0,0,1098,1096,1,0,0,0,1098,1099, - 1,0,0,0,1099,5,1,0,0,0,1100,1098,1,0,0,0,1101,1117,3,8,4,0,1102,1117,3, - 28,14,0,1103,1107,3,90,45,0,1104,1108,3,20,10,0,1105,1106,5,202,0,0,1106, - 1108,5,102,0,0,1107,1104,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108, - 1117,1,0,0,0,1109,1117,3,16,8,0,1110,1117,3,18,9,0,1111,1113,5,196,0,0, - 1112,1114,3,4,2,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1115,1,0,0,0, - 1115,1117,5,197,0,0,1116,1101,1,0,0,0,1116,1102,1,0,0,0,1116,1103,1,0,0, - 0,1116,1109,1,0,0,0,1116,1110,1,0,0,0,1116,1111,1,0,0,0,1117,7,1,0,0,0, - 1118,1122,5,108,0,0,1119,1120,5,196,0,0,1120,1122,5,197,0,0,1121,1118,1, - 0,0,0,1121,1119,1,0,0,0,1122,9,1,0,0,0,1123,1124,3,90,45,0,1124,11,1,0, - 0,0,1125,1126,3,90,45,0,1126,1127,5,202,0,0,1127,1128,5,102,0,0,1128,13, - 1,0,0,0,1129,1130,3,90,45,0,1130,1131,3,20,10,0,1131,15,1,0,0,0,1132,1133, - 5,105,0,0,1133,1134,3,90,45,0,1134,1135,3,20,10,0,1135,17,1,0,0,0,1136, - 1137,5,214,0,0,1137,1138,3,292,146,0,1138,1139,5,216,0,0,1139,19,1,0,0, - 0,1140,1143,5,196,0,0,1141,1144,3,22,11,0,1142,1144,3,24,12,0,1143,1141, - 1,0,0,0,1143,1142,1,0,0,0,1143,1144,1,0,0,0,1144,1145,1,0,0,0,1145,1146, - 5,197,0,0,1146,21,1,0,0,0,1147,1152,3,0,0,0,1148,1149,5,200,0,0,1149,1151, - 3,0,0,0,1150,1148,1,0,0,0,1151,1154,1,0,0,0,1152,1150,1,0,0,0,1152,1153, - 1,0,0,0,1153,23,1,0,0,0,1154,1152,1,0,0,0,1155,1160,3,26,13,0,1156,1157, - 5,200,0,0,1157,1159,3,26,13,0,1158,1156,1,0,0,0,1159,1162,1,0,0,0,1160, - 1158,1,0,0,0,1160,1161,1,0,0,0,1161,25,1,0,0,0,1162,1160,1,0,0,0,1163,1164, - 3,90,45,0,1164,1165,5,207,0,0,1165,1166,3,0,0,0,1166,27,1,0,0,0,1167,1173, - 3,30,15,0,1168,1173,3,32,16,0,1169,1173,3,34,17,0,1170,1173,3,36,18,0,1171, - 1173,3,38,19,0,1172,1167,1,0,0,0,1172,1168,1,0,0,0,1172,1169,1,0,0,0,1172, - 1170,1,0,0,0,1172,1171,1,0,0,0,1173,29,1,0,0,0,1174,1175,7,8,0,0,1175,31, - 1,0,0,0,1176,1177,5,220,0,0,1177,33,1,0,0,0,1178,1179,5,221,0,0,1179,35, - 1,0,0,0,1180,1181,5,222,0,0,1181,37,1,0,0,0,1182,1183,5,198,0,0,1183,39, - 1,0,0,0,1184,1185,3,0,0,0,1185,41,1,0,0,0,1186,1187,3,0,0,0,1187,43,1,0, - 0,0,1188,1189,7,9,0,0,1189,45,1,0,0,0,1190,1191,5,206,0,0,1191,1192,3,44, - 22,0,1192,1193,5,208,0,0,1193,1194,3,44,22,0,1194,1201,1,0,0,0,1195,1196, - 5,206,0,0,1196,1197,3,44,22,0,1197,1198,5,208,0,0,1198,1201,1,0,0,0,1199, - 1201,3,44,22,0,1200,1190,1,0,0,0,1200,1195,1,0,0,0,1200,1199,1,0,0,0,1201, - 47,1,0,0,0,1202,1220,5,205,0,0,1203,1207,5,214,0,0,1204,1206,3,50,25,0, - 1205,1204,1,0,0,0,1206,1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208,1,0,0,0, - 1208,1210,1,0,0,0,1209,1207,1,0,0,0,1210,1220,5,216,0,0,1211,1215,5,214, - 0,0,1212,1214,3,58,29,0,1213,1212,1,0,0,0,1214,1217,1,0,0,0,1215,1213,1, - 0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0,0,1217,1215,1,0,0,0,1218,1220,5, - 216,0,0,1219,1202,1,0,0,0,1219,1203,1,0,0,0,1219,1211,1,0,0,0,1220,49,1, - 0,0,0,1221,1224,3,52,26,0,1222,1224,3,58,29,0,1223,1221,1,0,0,0,1223,1222, - 1,0,0,0,1224,51,1,0,0,0,1225,1228,3,106,53,0,1226,1228,3,108,54,0,1227, - 1225,1,0,0,0,1227,1226,1,0,0,0,1228,53,1,0,0,0,1229,1231,3,414,207,0,1230, - 1229,1,0,0,0,1231,1234,1,0,0,0,1232,1230,1,0,0,0,1232,1233,1,0,0,0,1233, - 1235,1,0,0,0,1234,1232,1,0,0,0,1235,1240,5,48,0,0,1236,1238,3,46,23,0,1237, - 1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1241,5,74,0,0,1240, - 1237,1,0,0,0,1240,1241,1,0,0,0,1241,1242,1,0,0,0,1242,1247,3,90,45,0,1243, - 1244,5,200,0,0,1244,1246,3,90,45,0,1245,1243,1,0,0,0,1246,1249,1,0,0,0, - 1247,1245,1,0,0,0,1247,1248,1,0,0,0,1248,1250,1,0,0,0,1249,1247,1,0,0,0, - 1250,1251,5,154,0,0,1251,1256,3,90,45,0,1252,1253,5,200,0,0,1253,1255,3, - 90,45,0,1254,1252,1,0,0,0,1255,1258,1,0,0,0,1256,1254,1,0,0,0,1256,1257, - 1,0,0,0,1257,1259,1,0,0,0,1258,1256,1,0,0,0,1259,1260,3,48,24,0,1260,1272, - 1,0,0,0,1261,1263,3,414,207,0,1262,1261,1,0,0,0,1263,1266,1,0,0,0,1264, - 1262,1,0,0,0,1264,1265,1,0,0,0,1265,1267,1,0,0,0,1266,1264,1,0,0,0,1267, - 1268,5,48,0,0,1268,1269,3,442,221,0,1269,1270,3,48,24,0,1270,1272,1,0,0, - 0,1271,1232,1,0,0,0,1271,1264,1,0,0,0,1272,55,1,0,0,0,1273,1274,3,90,45, - 0,1274,57,1,0,0,0,1275,1276,3,60,30,0,1276,59,1,0,0,0,1277,1282,3,62,31, - 0,1278,1282,3,64,32,0,1279,1282,3,66,33,0,1280,1282,3,420,210,0,1281,1277, - 1,0,0,0,1281,1278,1,0,0,0,1281,1279,1,0,0,0,1281,1280,1,0,0,0,1282,61,1, - 0,0,0,1283,1285,5,30,0,0,1284,1286,3,46,23,0,1285,1284,1,0,0,0,1285,1286, - 1,0,0,0,1286,1296,1,0,0,0,1287,1288,5,1,0,0,1288,1293,3,56,28,0,1289,1290, - 5,200,0,0,1290,1292,3,56,28,0,1291,1289,1,0,0,0,1292,1295,1,0,0,0,1293, - 1291,1,0,0,0,1293,1294,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1296, - 1287,1,0,0,0,1296,1297,1,0,0,0,1297,1299,1,0,0,0,1298,1283,1,0,0,0,1298, - 1299,1,0,0,0,1299,1302,1,0,0,0,1300,1301,5,95,0,0,1301,1303,5,220,0,0,1302, - 1300,1,0,0,0,1302,1303,1,0,0,0,1303,1304,1,0,0,0,1304,1305,5,223,0,0,1305, - 63,1,0,0,0,1306,1308,5,54,0,0,1307,1309,3,46,23,0,1308,1307,1,0,0,0,1308, - 1309,1,0,0,0,1309,1312,1,0,0,0,1310,1311,5,95,0,0,1311,1313,5,220,0,0,1312, - 1310,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0,1314,1315,5,223,0,0,1315, - 65,1,0,0,0,1316,1318,5,131,0,0,1317,1319,3,46,23,0,1318,1317,1,0,0,0,1318, - 1319,1,0,0,0,1319,1321,1,0,0,0,1320,1316,1,0,0,0,1320,1321,1,0,0,0,1321, - 1322,1,0,0,0,1322,1323,5,93,0,0,1323,1324,5,220,0,0,1324,1325,5,223,0,0, - 1325,67,1,0,0,0,1326,1328,3,446,223,0,1327,1326,1,0,0,0,1328,1331,1,0,0, - 0,1329,1327,1,0,0,0,1329,1330,1,0,0,0,1330,1332,1,0,0,0,1331,1329,1,0,0, - 0,1332,1333,5,0,0,1,1333,69,1,0,0,0,1334,1336,3,416,208,0,1335,1334,1,0, - 0,0,1336,1339,1,0,0,0,1337,1335,1,0,0,0,1337,1338,1,0,0,0,1338,1340,1,0, - 0,0,1339,1337,1,0,0,0,1340,1341,3,72,36,0,1341,1342,3,74,37,0,1342,71,1, - 0,0,0,1343,1345,5,104,0,0,1344,1346,3,46,23,0,1345,1344,1,0,0,0,1345,1346, - 1,0,0,0,1346,73,1,0,0,0,1347,1357,5,205,0,0,1348,1352,5,214,0,0,1349,1351, - 3,76,38,0,1350,1349,1,0,0,0,1351,1354,1,0,0,0,1352,1350,1,0,0,0,1352,1353, - 1,0,0,0,1353,1355,1,0,0,0,1354,1352,1,0,0,0,1355,1357,5,216,0,0,1356,1347, - 1,0,0,0,1356,1348,1,0,0,0,1357,75,1,0,0,0,1358,1362,3,82,41,0,1359,1362, - 3,88,44,0,1360,1362,3,92,46,0,1361,1358,1,0,0,0,1361,1359,1,0,0,0,1361, - 1360,1,0,0,0,1362,77,1,0,0,0,1363,1365,3,80,40,0,1364,1363,1,0,0,0,1364, - 1365,1,0,0,0,1365,79,1,0,0,0,1366,1367,7,10,0,0,1367,81,1,0,0,0,1368,1371, - 3,84,42,0,1369,1371,3,86,43,0,1370,1368,1,0,0,0,1370,1369,1,0,0,0,1371, - 83,1,0,0,0,1372,1373,3,78,39,0,1373,1374,3,104,52,0,1374,85,1,0,0,0,1375, - 1376,3,78,39,0,1376,1377,3,108,54,0,1377,87,1,0,0,0,1378,1379,3,78,39,0, - 1379,1384,5,7,0,0,1380,1381,5,206,0,0,1381,1382,3,44,22,0,1382,1383,5,208, - 0,0,1383,1385,1,0,0,0,1384,1380,1,0,0,0,1384,1385,1,0,0,0,1385,1387,1,0, - 0,0,1386,1388,3,44,22,0,1387,1386,1,0,0,0,1387,1388,1,0,0,0,1388,1389,1, - 0,0,0,1389,1390,5,71,0,0,1390,1391,3,90,45,0,1391,1392,3,48,24,0,1392,89, - 1,0,0,0,1393,1394,5,193,0,0,1394,1396,5,183,0,0,1395,1393,1,0,0,0,1395, - 1396,1,0,0,0,1396,1402,1,0,0,0,1397,1398,3,44,22,0,1398,1399,5,183,0,0, - 1399,1401,1,0,0,0,1400,1397,1,0,0,0,1401,1404,1,0,0,0,1402,1400,1,0,0,0, - 1402,1403,1,0,0,0,1403,1405,1,0,0,0,1404,1402,1,0,0,0,1405,1406,3,44,22, - 0,1406,91,1,0,0,0,1407,1409,3,80,40,0,1408,1407,1,0,0,0,1408,1409,1,0,0, - 0,1409,1410,1,0,0,0,1410,1412,5,79,0,0,1411,1413,5,8,0,0,1412,1411,1,0, - 0,0,1412,1413,1,0,0,0,1413,1414,1,0,0,0,1414,1415,3,94,47,0,1415,1416,3, - 48,24,0,1416,93,1,0,0,0,1417,1420,3,96,48,0,1418,1420,3,98,49,0,1419,1417, - 1,0,0,0,1419,1418,1,0,0,0,1420,95,1,0,0,0,1421,1424,3,90,45,0,1422,1423, - 5,183,0,0,1423,1425,5,179,0,0,1424,1422,1,0,0,0,1424,1425,1,0,0,0,1425, - 97,1,0,0,0,1426,1427,3,90,45,0,1427,1428,5,183,0,0,1428,1431,5,198,0,0, - 1429,1430,5,183,0,0,1430,1432,5,179,0,0,1431,1429,1,0,0,0,1431,1432,1,0, - 0,0,1432,1435,1,0,0,0,1433,1435,3,100,50,0,1434,1426,1,0,0,0,1434,1433, - 1,0,0,0,1435,99,1,0,0,0,1436,1438,3,970,485,0,1437,1439,3,102,51,0,1438, - 1437,1,0,0,0,1439,1440,1,0,0,0,1440,1438,1,0,0,0,1440,1441,1,0,0,0,1441, - 1449,1,0,0,0,1442,1444,3,984,492,0,1443,1445,3,102,51,0,1444,1443,1,0,0, - 0,1445,1446,1,0,0,0,1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1449,1,0,0, - 0,1448,1436,1,0,0,0,1448,1442,1,0,0,0,1449,101,1,0,0,0,1450,1451,5,211, - 0,0,1451,1452,3,0,0,0,1452,1453,5,212,0,0,1453,103,1,0,0,0,1454,1457,3, - 60,30,0,1455,1457,3,106,53,0,1456,1454,1,0,0,0,1456,1455,1,0,0,0,1457,105, - 1,0,0,0,1458,1485,3,54,27,0,1459,1485,3,70,35,0,1460,1485,3,110,55,0,1461, - 1485,3,162,81,0,1462,1485,3,250,125,0,1463,1485,3,252,126,0,1464,1485,3, - 254,127,0,1465,1485,3,412,206,0,1466,1485,3,256,128,0,1467,1485,3,258,129, - 0,1468,1485,3,370,185,0,1469,1485,3,284,142,0,1470,1485,3,288,144,0,1471, - 1485,3,300,150,0,1472,1485,3,398,199,0,1473,1485,3,432,216,0,1474,1485, - 3,434,217,0,1475,1485,3,134,67,0,1476,1485,3,142,71,0,1477,1485,3,168,84, - 0,1478,1485,3,146,73,0,1479,1485,3,242,121,0,1480,1485,3,220,110,0,1481, - 1485,3,224,112,0,1482,1485,3,232,116,0,1483,1485,3,246,123,0,1484,1458, - 1,0,0,0,1484,1459,1,0,0,0,1484,1460,1,0,0,0,1484,1461,1,0,0,0,1484,1462, - 1,0,0,0,1484,1463,1,0,0,0,1484,1464,1,0,0,0,1484,1465,1,0,0,0,1484,1466, - 1,0,0,0,1484,1467,1,0,0,0,1484,1468,1,0,0,0,1484,1469,1,0,0,0,1484,1470, - 1,0,0,0,1484,1471,1,0,0,0,1484,1472,1,0,0,0,1484,1473,1,0,0,0,1484,1474, - 1,0,0,0,1484,1475,1,0,0,0,1484,1476,1,0,0,0,1484,1477,1,0,0,0,1484,1478, - 1,0,0,0,1484,1479,1,0,0,0,1484,1480,1,0,0,0,1484,1481,1,0,0,0,1484,1482, - 1,0,0,0,1484,1483,1,0,0,0,1485,107,1,0,0,0,1486,1497,3,172,86,0,1487,1497, - 3,286,143,0,1488,1497,3,298,149,0,1489,1497,3,302,151,0,1490,1497,3,304, - 152,0,1491,1497,3,260,130,0,1492,1497,3,276,138,0,1493,1497,3,280,140,0, - 1494,1497,3,372,186,0,1495,1497,3,374,187,0,1496,1486,1,0,0,0,1496,1487, - 1,0,0,0,1496,1488,1,0,0,0,1496,1489,1,0,0,0,1496,1490,1,0,0,0,1496,1491, - 1,0,0,0,1496,1492,1,0,0,0,1496,1493,1,0,0,0,1496,1494,1,0,0,0,1496,1495, - 1,0,0,0,1497,109,1,0,0,0,1498,1499,3,112,56,0,1499,1500,5,157,0,0,1500, - 1501,3,114,57,0,1501,1502,3,130,65,0,1502,111,1,0,0,0,1503,1505,5,2,0,0, - 1504,1503,1,0,0,0,1504,1505,1,0,0,0,1505,1509,1,0,0,0,1506,1508,3,416,208, - 0,1507,1506,1,0,0,0,1508,1511,1,0,0,0,1509,1507,1,0,0,0,1509,1510,1,0,0, - 0,1510,113,1,0,0,0,1511,1509,1,0,0,0,1512,1514,5,8,0,0,1513,1512,1,0,0, - 0,1513,1514,1,0,0,0,1514,1516,1,0,0,0,1515,1517,3,46,23,0,1516,1515,1,0, - 0,0,1516,1517,1,0,0,0,1517,1519,1,0,0,0,1518,1520,3,404,202,0,1519,1518, - 1,0,0,0,1519,1520,1,0,0,0,1520,1523,1,0,0,0,1521,1524,3,116,58,0,1522,1524, - 3,118,59,0,1523,1521,1,0,0,0,1523,1522,1,0,0,0,1524,1525,1,0,0,0,1525,1523, - 1,0,0,0,1525,1526,1,0,0,0,1526,1530,1,0,0,0,1527,1529,3,120,60,0,1528,1527, - 1,0,0,0,1529,1532,1,0,0,0,1530,1528,1,0,0,0,1530,1531,1,0,0,0,1531,115, - 1,0,0,0,1532,1530,1,0,0,0,1533,1534,7,11,0,0,1534,1539,3,136,68,0,1535, - 1536,5,200,0,0,1536,1538,3,136,68,0,1537,1535,1,0,0,0,1538,1541,1,0,0,0, - 1539,1537,1,0,0,0,1539,1540,1,0,0,0,1540,117,1,0,0,0,1541,1539,1,0,0,0, - 1542,1543,7,12,0,0,1543,1544,3,144,72,0,1544,119,1,0,0,0,1545,1550,3,122, - 61,0,1546,1550,3,124,62,0,1547,1550,3,126,63,0,1548,1550,3,128,64,0,1549, - 1545,1,0,0,0,1549,1546,1,0,0,0,1549,1547,1,0,0,0,1549,1548,1,0,0,0,1550, - 121,1,0,0,0,1551,1552,5,52,0,0,1552,1553,5,74,0,0,1553,1558,3,148,74,0, - 1554,1555,5,200,0,0,1555,1557,3,148,74,0,1556,1554,1,0,0,0,1557,1560,1, - 0,0,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,123,1,0,0,0,1560,1558,1, - 0,0,0,1561,1562,5,160,0,0,1562,1567,3,150,75,0,1563,1564,5,200,0,0,1564, - 1566,3,150,75,0,1565,1563,1,0,0,0,1566,1569,1,0,0,0,1567,1565,1,0,0,0,1567, - 1568,1,0,0,0,1568,125,1,0,0,0,1569,1567,1,0,0,0,1570,1571,5,86,0,0,1571, - 1576,3,152,76,0,1572,1573,5,200,0,0,1573,1575,3,152,76,0,1574,1572,1,0, - 0,0,1575,1578,1,0,0,0,1576,1574,1,0,0,0,1576,1577,1,0,0,0,1577,127,1,0, - 0,0,1578,1576,1,0,0,0,1579,1580,5,50,0,0,1580,1585,3,154,77,0,1581,1582, - 5,200,0,0,1582,1584,3,154,77,0,1583,1581,1,0,0,0,1584,1587,1,0,0,0,1585, - 1583,1,0,0,0,1585,1586,1,0,0,0,1586,129,1,0,0,0,1587,1585,1,0,0,0,1588, - 1598,5,205,0,0,1589,1593,5,214,0,0,1590,1592,3,132,66,0,1591,1590,1,0,0, - 0,1592,1595,1,0,0,0,1593,1591,1,0,0,0,1593,1594,1,0,0,0,1594,1596,1,0,0, - 0,1595,1593,1,0,0,0,1596,1598,5,216,0,0,1597,1588,1,0,0,0,1597,1589,1,0, - 0,0,1598,131,1,0,0,0,1599,1604,3,84,42,0,1600,1604,3,156,78,0,1601,1604, - 3,88,44,0,1602,1604,3,92,46,0,1603,1599,1,0,0,0,1603,1600,1,0,0,0,1603, - 1601,1,0,0,0,1603,1602,1,0,0,0,1604,133,1,0,0,0,1605,1607,5,138,0,0,1606, - 1608,3,46,23,0,1607,1606,1,0,0,0,1607,1608,1,0,0,0,1608,1610,1,0,0,0,1609, - 1605,1,0,0,0,1609,1610,1,0,0,0,1610,1611,1,0,0,0,1611,1612,5,149,0,0,1612, - 1613,3,138,69,0,1613,1614,7,11,0,0,1614,1615,3,140,70,0,1615,1616,3,48, - 24,0,1616,135,1,0,0,0,1617,1618,3,140,70,0,1618,137,1,0,0,0,1619,1624,3, - 90,45,0,1620,1621,5,202,0,0,1621,1623,3,90,45,0,1622,1620,1,0,0,0,1623, - 1626,1,0,0,0,1624,1622,1,0,0,0,1624,1625,1,0,0,0,1625,139,1,0,0,0,1626, - 1624,1,0,0,0,1627,1632,3,90,45,0,1628,1629,5,202,0,0,1629,1631,3,90,45, - 0,1630,1628,1,0,0,0,1631,1634,1,0,0,0,1632,1630,1,0,0,0,1632,1633,1,0,0, - 0,1633,141,1,0,0,0,1634,1632,1,0,0,0,1635,1637,5,35,0,0,1636,1638,3,46, - 23,0,1637,1636,1,0,0,0,1637,1638,1,0,0,0,1638,1640,1,0,0,0,1639,1635,1, - 0,0,0,1639,1640,1,0,0,0,1640,1641,1,0,0,0,1641,1642,5,33,0,0,1642,1647, - 3,90,45,0,1643,1644,5,202,0,0,1644,1646,3,90,45,0,1645,1643,1,0,0,0,1646, - 1649,1,0,0,0,1647,1645,1,0,0,0,1647,1648,1,0,0,0,1648,1650,1,0,0,0,1649, - 1647,1,0,0,0,1650,1651,7,12,0,0,1651,1656,3,90,45,0,1652,1653,5,202,0,0, - 1653,1655,3,90,45,0,1654,1652,1,0,0,0,1655,1658,1,0,0,0,1656,1654,1,0,0, - 0,1656,1657,1,0,0,0,1657,1659,1,0,0,0,1658,1656,1,0,0,0,1659,1660,3,48, - 24,0,1660,143,1,0,0,0,1661,1666,3,90,45,0,1662,1663,5,202,0,0,1663,1665, - 3,90,45,0,1664,1662,1,0,0,0,1665,1668,1,0,0,0,1666,1664,1,0,0,0,1666,1667, - 1,0,0,0,1667,145,1,0,0,0,1668,1666,1,0,0,0,1669,1671,5,51,0,0,1670,1672, - 3,46,23,0,1671,1670,1,0,0,0,1671,1672,1,0,0,0,1672,1674,1,0,0,0,1673,1669, - 1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1676,5,52,0,0,1676,1681, - 3,90,45,0,1677,1678,5,202,0,0,1678,1680,3,90,45,0,1679,1677,1,0,0,0,1680, - 1683,1,0,0,0,1681,1679,1,0,0,0,1681,1682,1,0,0,0,1682,1684,1,0,0,0,1683, - 1681,1,0,0,0,1684,1685,5,74,0,0,1685,1690,3,90,45,0,1686,1687,5,202,0,0, - 1687,1689,3,90,45,0,1688,1686,1,0,0,0,1689,1692,1,0,0,0,1690,1688,1,0,0, - 0,1690,1691,1,0,0,0,1691,1693,1,0,0,0,1692,1690,1,0,0,0,1693,1694,3,48, - 24,0,1694,147,1,0,0,0,1695,1700,3,90,45,0,1696,1697,5,202,0,0,1697,1699, - 3,90,45,0,1698,1696,1,0,0,0,1699,1702,1,0,0,0,1700,1698,1,0,0,0,1700,1701, - 1,0,0,0,1701,149,1,0,0,0,1702,1700,1,0,0,0,1703,1708,3,90,45,0,1704,1705, - 5,202,0,0,1705,1707,3,90,45,0,1706,1704,1,0,0,0,1707,1710,1,0,0,0,1708, - 1706,1,0,0,0,1708,1709,1,0,0,0,1709,151,1,0,0,0,1710,1708,1,0,0,0,1711, - 1716,3,90,45,0,1712,1713,5,202,0,0,1713,1715,3,90,45,0,1714,1712,1,0,0, - 0,1715,1718,1,0,0,0,1716,1714,1,0,0,0,1716,1717,1,0,0,0,1717,153,1,0,0, - 0,1718,1716,1,0,0,0,1719,1724,3,90,45,0,1720,1721,5,202,0,0,1721,1723,3, - 90,45,0,1722,1720,1,0,0,0,1723,1726,1,0,0,0,1724,1722,1,0,0,0,1724,1725, - 1,0,0,0,1725,155,1,0,0,0,1726,1724,1,0,0,0,1727,1730,3,158,79,0,1728,1730, - 3,160,80,0,1729,1727,1,0,0,0,1729,1728,1,0,0,0,1730,157,1,0,0,0,1731,1732, - 3,78,39,0,1732,1733,5,97,0,0,1733,1734,3,108,54,0,1734,159,1,0,0,0,1735, - 1736,3,78,39,0,1736,1737,3,108,54,0,1737,161,1,0,0,0,1738,1739,3,112,56, - 0,1739,1740,5,29,0,0,1740,1741,3,164,82,0,1741,1742,3,130,65,0,1742,163, - 1,0,0,0,1743,1745,5,8,0,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745,1747, - 1,0,0,0,1746,1748,3,46,23,0,1747,1746,1,0,0,0,1747,1748,1,0,0,0,1748,1750, - 1,0,0,0,1749,1751,3,404,202,0,1750,1749,1,0,0,0,1750,1751,1,0,0,0,1751, - 1754,1,0,0,0,1752,1755,3,166,83,0,1753,1755,3,118,59,0,1754,1752,1,0,0, - 0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755,1759,1,0,0,0,1756,1758,3,120, - 60,0,1757,1756,1,0,0,0,1758,1761,1,0,0,0,1759,1757,1,0,0,0,1759,1760,1, - 0,0,0,1760,165,1,0,0,0,1761,1759,1,0,0,0,1762,1763,7,11,0,0,1763,1768,3, - 170,85,0,1764,1765,5,200,0,0,1765,1767,3,170,85,0,1766,1764,1,0,0,0,1767, - 1770,1,0,0,0,1768,1766,1,0,0,0,1768,1769,1,0,0,0,1769,167,1,0,0,0,1770, - 1768,1,0,0,0,1771,1773,5,138,0,0,1772,1774,3,46,23,0,1773,1772,1,0,0,0, - 1773,1774,1,0,0,0,1774,1776,1,0,0,0,1775,1771,1,0,0,0,1775,1776,1,0,0,0, - 1776,1777,1,0,0,0,1777,1778,5,145,0,0,1778,1779,3,90,45,0,1779,1780,7,11, - 0,0,1780,1781,3,90,45,0,1781,1782,3,48,24,0,1782,169,1,0,0,0,1783,1784, - 3,90,45,0,1784,171,1,0,0,0,1785,1788,3,178,89,0,1786,1789,5,65,0,0,1787, - 1789,3,416,208,0,1788,1786,1,0,0,0,1788,1787,1,0,0,0,1789,1791,1,0,0,0, - 1790,1792,3,186,93,0,1791,1790,1,0,0,0,1791,1792,1,0,0,0,1792,1800,1,0, - 0,0,1793,1796,3,174,87,0,1794,1796,3,176,88,0,1795,1793,1,0,0,0,1795,1794, - 1,0,0,0,1796,1797,1,0,0,0,1797,1798,3,186,93,0,1798,1800,1,0,0,0,1799,1785, - 1,0,0,0,1799,1795,1,0,0,0,1800,1802,1,0,0,0,1801,1803,3,394,197,0,1802, - 1801,1,0,0,0,1802,1803,1,0,0,0,1803,1804,1,0,0,0,1804,1805,3,130,65,0,1805, - 173,1,0,0,0,1806,1808,5,39,0,0,1807,1806,1,0,0,0,1807,1808,1,0,0,0,1808, - 1809,1,0,0,0,1809,1810,5,56,0,0,1810,175,1,0,0,0,1811,1813,3,184,92,0,1812, - 1811,1,0,0,0,1812,1813,1,0,0,0,1813,1815,1,0,0,0,1814,1816,5,49,0,0,1815, - 1814,1,0,0,0,1815,1816,1,0,0,0,1816,1818,1,0,0,0,1817,1819,5,2,0,0,1818, - 1817,1,0,0,0,1818,1819,1,0,0,0,1819,1821,1,0,0,0,1820,1822,7,13,0,0,1821, - 1820,1,0,0,0,1821,1822,1,0,0,0,1822,1824,1,0,0,0,1823,1825,7,14,0,0,1824, - 1823,1,0,0,0,1824,1825,1,0,0,0,1825,177,1,0,0,0,1826,1827,3,174,87,0,1827, - 1828,3,180,90,0,1828,1831,1,0,0,0,1829,1831,3,176,88,0,1830,1826,1,0,0, - 0,1830,1829,1,0,0,0,1831,1835,1,0,0,0,1832,1834,3,416,208,0,1833,1832,1, - 0,0,0,1834,1837,1,0,0,0,1835,1833,1,0,0,0,1835,1836,1,0,0,0,1836,179,1, - 0,0,0,1837,1835,1,0,0,0,1838,1839,3,182,91,0,1839,181,1,0,0,0,1840,1841, - 3,176,88,0,1841,1842,3,186,93,0,1842,1848,1,0,0,0,1843,1845,3,484,242,0, - 1844,1846,3,496,248,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0,1846,1848,1,0, - 0,0,1847,1840,1,0,0,0,1847,1843,1,0,0,0,1848,183,1,0,0,0,1849,1850,7,15, - 0,0,1850,185,1,0,0,0,1851,1853,5,8,0,0,1852,1851,1,0,0,0,1852,1853,1,0, - 0,0,1853,1861,1,0,0,0,1854,1857,3,188,94,0,1855,1858,3,198,99,0,1856,1858, - 3,118,59,0,1857,1855,1,0,0,0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1862, - 1,0,0,0,1859,1862,3,198,99,0,1860,1862,3,118,59,0,1861,1854,1,0,0,0,1861, - 1859,1,0,0,0,1861,1860,1,0,0,0,1862,1866,1,0,0,0,1863,1865,3,190,95,0,1864, - 1863,1,0,0,0,1865,1868,1,0,0,0,1866,1864,1,0,0,0,1866,1867,1,0,0,0,1867, - 187,1,0,0,0,1868,1866,1,0,0,0,1869,1870,5,206,0,0,1870,1871,3,44,22,0,1871, - 1873,5,208,0,0,1872,1874,3,44,22,0,1873,1872,1,0,0,0,1873,1874,1,0,0,0, - 1874,1877,1,0,0,0,1875,1877,3,44,22,0,1876,1869,1,0,0,0,1876,1875,1,0,0, - 0,1877,189,1,0,0,0,1878,1883,3,120,60,0,1879,1883,3,192,96,0,1880,1883, - 3,194,97,0,1881,1883,3,196,98,0,1882,1878,1,0,0,0,1882,1879,1,0,0,0,1882, - 1880,1,0,0,0,1882,1881,1,0,0,0,1883,191,1,0,0,0,1884,1885,5,27,0,0,1885, - 1890,3,90,45,0,1886,1887,5,202,0,0,1887,1889,3,90,45,0,1888,1886,1,0,0, - 0,1889,1892,1,0,0,0,1890,1888,1,0,0,0,1890,1891,1,0,0,0,1891,193,1,0,0, - 0,1892,1890,1,0,0,0,1893,1894,5,88,0,0,1894,1895,5,111,0,0,1895,1896,3, - 244,122,0,1896,195,1,0,0,0,1897,1898,5,66,0,0,1898,1899,5,24,0,0,1899,1904, - 3,248,124,0,1900,1901,5,200,0,0,1901,1903,3,248,124,0,1902,1900,1,0,0,0, - 1903,1906,1,0,0,0,1904,1902,1,0,0,0,1904,1905,1,0,0,0,1905,197,1,0,0,0, - 1906,1904,1,0,0,0,1907,1909,3,202,101,0,1908,1907,1,0,0,0,1909,1910,1,0, - 0,0,1910,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1913,1,0,0,0,1912,1914,3,200, - 100,0,1913,1912,1,0,0,0,1913,1914,1,0,0,0,1914,1918,1,0,0,0,1915,1917,3, - 202,101,0,1916,1915,1,0,0,0,1917,1920,1,0,0,0,1918,1916,1,0,0,0,1918,1919, - 1,0,0,0,1919,1929,1,0,0,0,1920,1918,1,0,0,0,1921,1925,3,200,100,0,1922, - 1924,3,202,101,0,1923,1922,1,0,0,0,1924,1927,1,0,0,0,1925,1923,1,0,0,0, - 1925,1926,1,0,0,0,1926,1929,1,0,0,0,1927,1925,1,0,0,0,1928,1908,1,0,0,0, - 1928,1921,1,0,0,0,1929,199,1,0,0,0,1930,1939,3,404,202,0,1931,1933,5,113, - 0,0,1932,1934,5,106,0,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934,1940,1, - 0,0,0,1935,1937,5,106,0,0,1936,1938,5,113,0,0,1937,1936,1,0,0,0,1937,1938, - 1,0,0,0,1938,1940,1,0,0,0,1939,1931,1,0,0,0,1939,1935,1,0,0,0,1939,1940, - 1,0,0,0,1940,1952,1,0,0,0,1941,1943,5,113,0,0,1942,1944,5,106,0,0,1943, - 1942,1,0,0,0,1943,1944,1,0,0,0,1944,1950,1,0,0,0,1945,1947,5,106,0,0,1946, - 1948,5,113,0,0,1947,1946,1,0,0,0,1947,1948,1,0,0,0,1948,1950,1,0,0,0,1949, - 1941,1,0,0,0,1949,1945,1,0,0,0,1950,1952,1,0,0,0,1951,1930,1,0,0,0,1951, - 1949,1,0,0,0,1952,201,1,0,0,0,1953,1959,3,204,102,0,1954,1959,3,208,104, - 0,1955,1959,3,212,106,0,1956,1959,3,214,107,0,1957,1959,3,216,108,0,1958, - 1953,1,0,0,0,1958,1954,1,0,0,0,1958,1955,1,0,0,0,1958,1956,1,0,0,0,1958, - 1957,1,0,0,0,1959,203,1,0,0,0,1960,1965,3,206,103,0,1961,1962,5,200,0,0, - 1962,1964,3,220,110,0,1963,1961,1,0,0,0,1964,1967,1,0,0,0,1965,1963,1,0, - 0,0,1965,1966,1,0,0,0,1966,205,1,0,0,0,1967,1965,1,0,0,0,1968,1974,5,204, - 0,0,1969,1970,5,158,0,0,1970,1974,5,24,0,0,1971,1972,5,47,0,0,1972,1974, - 5,24,0,0,1973,1968,1,0,0,0,1973,1969,1,0,0,0,1973,1971,1,0,0,0,1974,1975, - 1,0,0,0,1975,1976,3,220,110,0,1976,207,1,0,0,0,1977,1982,3,210,105,0,1978, - 1979,5,200,0,0,1979,1981,3,226,113,0,1980,1978,1,0,0,0,1981,1984,1,0,0, - 0,1982,1980,1,0,0,0,1982,1983,1,0,0,0,1983,209,1,0,0,0,1984,1982,1,0,0, - 0,1985,1986,7,16,0,0,1986,1987,3,226,113,0,1987,211,1,0,0,0,1988,1989,7, - 17,0,0,1989,1990,3,228,114,0,1990,213,1,0,0,0,1991,1992,7,18,0,0,1992,1993, - 3,230,115,0,1993,215,1,0,0,0,1994,1999,3,218,109,0,1995,1996,5,200,0,0, - 1996,1998,3,234,117,0,1997,1995,1,0,0,0,1998,2001,1,0,0,0,1999,1997,1,0, - 0,0,1999,2000,1,0,0,0,2000,217,1,0,0,0,2001,1999,1,0,0,0,2002,2003,7,19, - 0,0,2003,2004,3,234,117,0,2004,219,1,0,0,0,2005,2007,5,138,0,0,2006,2008, - 3,46,23,0,2007,2006,1,0,0,0,2007,2008,1,0,0,0,2008,2010,1,0,0,0,2009,2005, - 1,0,0,0,2009,2010,1,0,0,0,2010,2011,1,0,0,0,2011,2012,5,159,0,0,2012,2016, - 3,90,45,0,2013,2017,5,204,0,0,2014,2015,5,158,0,0,2015,2017,5,24,0,0,2016, - 2013,1,0,0,0,2016,2014,1,0,0,0,2017,2018,1,0,0,0,2018,2019,3,140,70,0,2019, - 2020,3,48,24,0,2020,2024,1,0,0,0,2021,2024,3,222,111,0,2022,2024,3,580, - 290,0,2023,2009,1,0,0,0,2023,2021,1,0,0,0,2023,2022,1,0,0,0,2024,221,1, - 0,0,0,2025,2030,3,90,45,0,2026,2027,5,202,0,0,2027,2029,3,90,45,0,2028, - 2026,1,0,0,0,2029,2032,1,0,0,0,2030,2028,1,0,0,0,2030,2031,1,0,0,0,2031, - 223,1,0,0,0,2032,2030,1,0,0,0,2033,2035,5,138,0,0,2034,2036,3,46,23,0,2035, - 2034,1,0,0,0,2035,2036,1,0,0,0,2036,2038,1,0,0,0,2037,2033,1,0,0,0,2037, - 2038,1,0,0,0,2038,2039,1,0,0,0,2039,2040,5,147,0,0,2040,2041,3,138,69,0, - 2041,2042,7,16,0,0,2042,2043,3,140,70,0,2043,2044,3,48,24,0,2044,225,1, - 0,0,0,2045,2050,3,90,45,0,2046,2047,5,202,0,0,2047,2049,3,90,45,0,2048, - 2046,1,0,0,0,2049,2052,1,0,0,0,2050,2048,1,0,0,0,2050,2051,1,0,0,0,2051, - 227,1,0,0,0,2052,2050,1,0,0,0,2053,2058,3,90,45,0,2054,2055,5,202,0,0,2055, - 2057,3,90,45,0,2056,2054,1,0,0,0,2057,2060,1,0,0,0,2058,2056,1,0,0,0,2058, - 2059,1,0,0,0,2059,229,1,0,0,0,2060,2058,1,0,0,0,2061,2066,3,90,45,0,2062, - 2063,5,202,0,0,2063,2065,3,90,45,0,2064,2062,1,0,0,0,2065,2068,1,0,0,0, - 2066,2064,1,0,0,0,2066,2067,1,0,0,0,2067,231,1,0,0,0,2068,2066,1,0,0,0, - 2069,2071,5,138,0,0,2070,2072,3,46,23,0,2071,2070,1,0,0,0,2071,2072,1,0, - 0,0,2072,2074,1,0,0,0,2073,2069,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0, - 0,0,2075,2076,5,126,0,0,2076,2077,3,138,69,0,2077,2078,7,19,0,0,2078,2079, - 3,140,70,0,2079,2080,3,48,24,0,2080,233,1,0,0,0,2081,2086,3,90,45,0,2082, - 2083,5,202,0,0,2083,2085,3,90,45,0,2084,2082,1,0,0,0,2085,2088,1,0,0,0, - 2086,2084,1,0,0,0,2086,2087,1,0,0,0,2087,235,1,0,0,0,2088,2086,1,0,0,0, - 2089,2098,3,238,119,0,2090,2093,3,240,120,0,2091,2092,5,202,0,0,2092,2094, - 3,240,120,0,2093,2091,1,0,0,0,2094,2095,1,0,0,0,2095,2093,1,0,0,0,2095, - 2096,1,0,0,0,2096,2098,1,0,0,0,2097,2089,1,0,0,0,2097,2090,1,0,0,0,2098, - 237,1,0,0,0,2099,2102,3,240,120,0,2100,2101,5,202,0,0,2101,2103,3,240,120, - 0,2102,2100,1,0,0,0,2103,2104,1,0,0,0,2104,2102,1,0,0,0,2104,2105,1,0,0, - 0,2105,239,1,0,0,0,2106,2107,3,90,45,0,2107,241,1,0,0,0,2108,2110,5,89, - 0,0,2109,2111,3,46,23,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2113,1, - 0,0,0,2112,2108,1,0,0,0,2112,2113,1,0,0,0,2113,2114,1,0,0,0,2114,2115,5, - 88,0,0,2115,2120,3,90,45,0,2116,2117,5,202,0,0,2117,2119,3,90,45,0,2118, - 2116,1,0,0,0,2119,2122,1,0,0,0,2120,2118,1,0,0,0,2120,2121,1,0,0,0,2121, - 2123,1,0,0,0,2122,2120,1,0,0,0,2123,2124,5,111,0,0,2124,2129,3,90,45,0, - 2125,2126,5,202,0,0,2126,2128,3,90,45,0,2127,2125,1,0,0,0,2128,2131,1,0, - 0,0,2129,2127,1,0,0,0,2129,2130,1,0,0,0,2130,2132,1,0,0,0,2131,2129,1,0, - 0,0,2132,2133,3,48,24,0,2133,243,1,0,0,0,2134,2139,3,90,45,0,2135,2136, - 5,202,0,0,2136,2138,3,90,45,0,2137,2135,1,0,0,0,2138,2141,1,0,0,0,2139, - 2137,1,0,0,0,2139,2140,1,0,0,0,2140,245,1,0,0,0,2141,2139,1,0,0,0,2142, - 2147,5,67,0,0,2143,2145,3,46,23,0,2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145, - 2146,1,0,0,0,2146,2148,5,111,0,0,2147,2144,1,0,0,0,2147,2148,1,0,0,0,2148, - 2149,1,0,0,0,2149,2150,3,90,45,0,2150,2151,5,24,0,0,2151,2152,3,90,45,0, - 2152,2153,3,48,24,0,2153,247,1,0,0,0,2154,2155,3,90,45,0,2155,249,1,0,0, - 0,2156,2157,3,112,56,0,2157,2158,5,43,0,0,2158,2159,3,164,82,0,2159,2160, - 3,130,65,0,2160,251,1,0,0,0,2161,2162,3,112,56,0,2162,2163,5,28,0,0,2163, - 2164,3,164,82,0,2164,2165,3,130,65,0,2165,253,1,0,0,0,2166,2167,3,112,56, - 0,2167,2168,5,144,0,0,2168,2169,3,164,82,0,2169,2170,3,130,65,0,2170,255, - 1,0,0,0,2171,2172,3,112,56,0,2172,2173,5,16,0,0,2173,2174,3,164,82,0,2174, - 2175,3,130,65,0,2175,257,1,0,0,0,2176,2177,3,112,56,0,2177,2178,5,16,0, - 0,2178,2179,5,144,0,0,2179,2180,3,164,82,0,2180,2181,3,130,65,0,2181,259, - 1,0,0,0,2182,2183,3,178,89,0,2183,2191,5,38,0,0,2184,2186,3,186,93,0,2185, - 2184,1,0,0,0,2185,2186,1,0,0,0,2186,2188,1,0,0,0,2187,2189,3,394,197,0, - 2188,2187,1,0,0,0,2188,2189,1,0,0,0,2189,2192,1,0,0,0,2190,2192,3,262,131, - 0,2191,2185,1,0,0,0,2191,2190,1,0,0,0,2192,2193,1,0,0,0,2193,2194,3,130, - 65,0,2194,261,1,0,0,0,2195,2198,3,264,132,0,2196,2198,3,266,133,0,2197, - 2195,1,0,0,0,2197,2196,1,0,0,0,2198,263,1,0,0,0,2199,2201,3,186,93,0,2200, - 2199,1,0,0,0,2200,2201,1,0,0,0,2201,2202,1,0,0,0,2202,2208,5,74,0,0,2203, - 2205,5,8,0,0,2204,2206,5,74,0,0,2205,2204,1,0,0,0,2205,2206,1,0,0,0,2206, - 2208,1,0,0,0,2207,2200,1,0,0,0,2207,2203,1,0,0,0,2207,2208,1,0,0,0,2208, - 2209,1,0,0,0,2209,2210,3,268,134,0,2210,2211,5,154,0,0,2211,2212,3,268, - 134,0,2212,265,1,0,0,0,2213,2215,3,186,93,0,2214,2213,1,0,0,0,2214,2215, - 1,0,0,0,2215,2216,1,0,0,0,2216,2217,5,196,0,0,2217,2218,3,268,134,0,2218, - 2219,5,200,0,0,2219,2224,3,268,134,0,2220,2221,5,200,0,0,2221,2223,3,268, - 134,0,2222,2220,1,0,0,0,2223,2226,1,0,0,0,2224,2222,1,0,0,0,2224,2225,1, - 0,0,0,2225,2227,1,0,0,0,2226,2224,1,0,0,0,2227,2228,5,197,0,0,2228,267, - 1,0,0,0,2229,2230,3,270,135,0,2230,269,1,0,0,0,2231,2233,3,272,136,0,2232, - 2231,1,0,0,0,2232,2233,1,0,0,0,2233,2237,1,0,0,0,2234,2235,3,44,22,0,2235, - 2236,7,17,0,0,2236,2238,1,0,0,0,2237,2234,1,0,0,0,2237,2238,1,0,0,0,2238, - 2239,1,0,0,0,2239,2240,3,228,114,0,2240,271,1,0,0,0,2241,2242,3,274,137, - 0,2242,273,1,0,0,0,2243,2244,3,404,202,0,2244,275,1,0,0,0,2245,2246,3,178, - 89,0,2246,2247,5,22,0,0,2247,2248,3,278,139,0,2248,2249,3,130,65,0,2249, - 277,1,0,0,0,2250,2256,3,186,93,0,2251,2252,5,111,0,0,2252,2253,3,268,134, - 0,2253,2254,5,207,0,0,2254,2255,3,268,134,0,2255,2257,1,0,0,0,2256,2251, - 1,0,0,0,2256,2257,1,0,0,0,2257,2271,1,0,0,0,2258,2260,5,8,0,0,2259,2258, - 1,0,0,0,2259,2260,1,0,0,0,2260,2268,1,0,0,0,2261,2263,5,111,0,0,2262,2261, - 1,0,0,0,2262,2263,1,0,0,0,2263,2264,1,0,0,0,2264,2265,3,268,134,0,2265, - 2266,5,207,0,0,2266,2267,3,268,134,0,2267,2269,1,0,0,0,2268,2262,1,0,0, - 0,2268,2269,1,0,0,0,2269,2271,1,0,0,0,2270,2250,1,0,0,0,2270,2259,1,0,0, - 0,2271,279,1,0,0,0,2272,2273,3,178,89,0,2273,2274,5,150,0,0,2274,2275,3, - 282,141,0,2275,2276,3,130,65,0,2276,281,1,0,0,0,2277,2283,3,186,93,0,2278, - 2279,5,69,0,0,2279,2280,3,268,134,0,2280,2281,5,152,0,0,2281,2282,3,268, - 134,0,2282,2284,1,0,0,0,2283,2278,1,0,0,0,2283,2284,1,0,0,0,2284,2298,1, - 0,0,0,2285,2287,5,8,0,0,2286,2285,1,0,0,0,2286,2287,1,0,0,0,2287,2295,1, - 0,0,0,2288,2290,5,69,0,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2291, - 1,0,0,0,2291,2292,3,268,134,0,2292,2293,5,152,0,0,2293,2294,3,268,134,0, - 2294,2296,1,0,0,0,2295,2289,1,0,0,0,2295,2296,1,0,0,0,2296,2298,1,0,0,0, - 2297,2277,1,0,0,0,2297,2286,1,0,0,0,2298,283,1,0,0,0,2299,2300,3,112,56, - 0,2300,2301,5,20,0,0,2301,2302,3,164,82,0,2302,2303,3,130,65,0,2303,285, - 1,0,0,0,2304,2305,3,178,89,0,2305,2306,5,143,0,0,2306,2308,3,186,93,0,2307, - 2309,3,394,197,0,2308,2307,1,0,0,0,2308,2309,1,0,0,0,2309,2310,1,0,0,0, - 2310,2311,3,130,65,0,2311,287,1,0,0,0,2312,2313,3,112,56,0,2313,2314,5, - 75,0,0,2314,2315,3,164,82,0,2315,2316,3,290,145,0,2316,289,1,0,0,0,2317, - 2323,5,205,0,0,2318,2319,5,214,0,0,2319,2320,3,292,146,0,2320,2321,5,216, - 0,0,2321,2323,1,0,0,0,2322,2317,1,0,0,0,2322,2318,1,0,0,0,2323,291,1,0, - 0,0,2324,2327,3,132,66,0,2325,2327,3,294,147,0,2326,2324,1,0,0,0,2326,2325, - 1,0,0,0,2327,2330,1,0,0,0,2328,2326,1,0,0,0,2328,2329,1,0,0,0,2329,2332, - 1,0,0,0,2330,2328,1,0,0,0,2331,2333,3,296,148,0,2332,2331,1,0,0,0,2332, - 2333,1,0,0,0,2333,293,1,0,0,0,2334,2335,3,78,39,0,2335,2336,5,134,0,0,2336, - 2337,3,108,54,0,2337,295,1,0,0,0,2338,2339,3,78,39,0,2339,2340,3,0,0,0, - 2340,297,1,0,0,0,2341,2342,3,178,89,0,2342,2343,5,63,0,0,2343,2345,3,186, - 93,0,2344,2346,3,394,197,0,2345,2344,1,0,0,0,2345,2346,1,0,0,0,2346,2347, - 1,0,0,0,2347,2348,3,290,145,0,2348,299,1,0,0,0,2349,2350,3,112,56,0,2350, - 2351,5,121,0,0,2351,2352,3,164,82,0,2352,2353,3,290,145,0,2353,301,1,0, - 0,0,2354,2355,3,178,89,0,2355,2356,5,23,0,0,2356,2358,3,186,93,0,2357,2359, - 3,394,197,0,2358,2357,1,0,0,0,2358,2359,1,0,0,0,2359,2360,1,0,0,0,2360, - 2361,3,290,145,0,2361,303,1,0,0,0,2362,2363,3,178,89,0,2363,2365,5,87,0, - 0,2364,2366,7,8,0,0,2365,2364,1,0,0,0,2365,2366,1,0,0,0,2366,2367,1,0,0, - 0,2367,2369,3,186,93,0,2368,2370,3,394,197,0,2369,2368,1,0,0,0,2369,2370, - 1,0,0,0,2370,2371,1,0,0,0,2371,2372,3,290,145,0,2372,305,1,0,0,0,2373,2374, - 3,0,0,0,2374,307,1,0,0,0,2375,2376,3,348,174,0,2376,309,1,0,0,0,2377,2378, - 3,2,1,0,2378,311,1,0,0,0,2379,2380,3,2,1,0,2380,313,1,0,0,0,2381,2382,3, - 90,45,0,2382,315,1,0,0,0,2383,2384,3,978,489,0,2384,317,1,0,0,0,2385,2386, - 3,306,153,0,2386,2387,5,200,0,0,2387,2388,3,320,160,0,2388,319,1,0,0,0, - 2389,2390,3,4,2,0,2390,321,1,0,0,0,2391,2392,3,324,162,0,2392,323,1,0,0, - 0,2393,2394,3,326,163,0,2394,325,1,0,0,0,2395,2396,3,18,9,0,2396,327,1, - 0,0,0,2397,2398,3,330,165,0,2398,329,1,0,0,0,2399,2400,3,332,166,0,2400, - 331,1,0,0,0,2401,2402,3,334,167,0,2402,333,1,0,0,0,2403,2404,3,336,168, - 0,2404,335,1,0,0,0,2405,2406,3,338,169,0,2406,337,1,0,0,0,2407,2408,3,314, - 157,0,2408,339,1,0,0,0,2409,2414,3,90,45,0,2410,2411,5,202,0,0,2411,2413, - 3,90,45,0,2412,2410,1,0,0,0,2413,2416,1,0,0,0,2414,2412,1,0,0,0,2414,2415, - 1,0,0,0,2415,341,1,0,0,0,2416,2414,1,0,0,0,2417,2420,3,238,119,0,2418,2420, - 3,236,118,0,2419,2417,1,0,0,0,2419,2418,1,0,0,0,2420,343,1,0,0,0,2421,2422, - 3,346,173,0,2422,345,1,0,0,0,2423,2424,3,90,45,0,2424,347,1,0,0,0,2425, - 2426,3,90,45,0,2426,349,1,0,0,0,2427,2428,3,352,176,0,2428,351,1,0,0,0, - 2429,2430,3,20,10,0,2430,353,1,0,0,0,2431,2436,3,90,45,0,2432,2433,5,202, - 0,0,2433,2435,3,90,45,0,2434,2432,1,0,0,0,2435,2438,1,0,0,0,2436,2434,1, - 0,0,0,2436,2437,1,0,0,0,2437,355,1,0,0,0,2438,2436,1,0,0,0,2439,2440,3, - 90,45,0,2440,357,1,0,0,0,2441,2442,3,26,13,0,2442,359,1,0,0,0,2443,2444, - 3,90,45,0,2444,361,1,0,0,0,2445,2446,3,364,182,0,2446,363,1,0,0,0,2447, - 2448,5,214,0,0,2448,2449,3,292,146,0,2449,2450,5,216,0,0,2450,365,1,0,0, - 0,2451,2452,7,8,0,0,2452,367,1,0,0,0,2453,2455,5,221,0,0,2454,2453,1,0, - 0,0,2454,2455,1,0,0,0,2455,2456,1,0,0,0,2456,2457,5,202,0,0,2457,2460,7, - 20,0,0,2458,2460,5,222,0,0,2459,2454,1,0,0,0,2459,2458,1,0,0,0,2460,369, - 1,0,0,0,2461,2462,3,112,56,0,2462,2463,5,84,0,0,2463,2464,3,164,82,0,2464, - 2465,3,130,65,0,2465,371,1,0,0,0,2466,2467,3,178,89,0,2467,2468,5,70,0, - 0,2468,2469,3,376,188,0,2469,2470,3,130,65,0,2470,373,1,0,0,0,2471,2472, - 3,178,89,0,2472,2473,5,150,0,0,2473,2474,5,70,0,0,2474,2475,3,376,188,0, - 2475,2476,3,130,65,0,2476,375,1,0,0,0,2477,2479,3,186,93,0,2478,2480,3, - 394,197,0,2479,2478,1,0,0,0,2479,2480,1,0,0,0,2480,2483,1,0,0,0,2481,2482, - 5,111,0,0,2482,2484,3,378,189,0,2483,2481,1,0,0,0,2483,2484,1,0,0,0,2484, - 2490,1,0,0,0,2485,2486,5,74,0,0,2486,2487,3,384,192,0,2487,2488,5,154,0, - 0,2488,2489,3,384,192,0,2489,2491,1,0,0,0,2490,2485,1,0,0,0,2490,2491,1, - 0,0,0,2491,2517,1,0,0,0,2492,2494,5,8,0,0,2493,2492,1,0,0,0,2493,2494,1, - 0,0,0,2494,2495,1,0,0,0,2495,2496,3,384,192,0,2496,2497,5,154,0,0,2497, - 2498,3,384,192,0,2498,2517,1,0,0,0,2499,2501,3,496,248,0,2500,2499,1,0, - 0,0,2500,2501,1,0,0,0,2501,2503,1,0,0,0,2502,2504,3,394,197,0,2503,2502, - 1,0,0,0,2503,2504,1,0,0,0,2504,2507,1,0,0,0,2505,2506,5,111,0,0,2506,2508, - 3,646,323,0,2507,2505,1,0,0,0,2507,2508,1,0,0,0,2508,2514,1,0,0,0,2509, - 2510,5,74,0,0,2510,2511,3,384,192,0,2511,2512,5,154,0,0,2512,2513,3,384, - 192,0,2513,2515,1,0,0,0,2514,2509,1,0,0,0,2514,2515,1,0,0,0,2515,2517,1, - 0,0,0,2516,2477,1,0,0,0,2516,2493,1,0,0,0,2516,2500,1,0,0,0,2517,377,1, - 0,0,0,2518,2519,3,380,190,0,2519,379,1,0,0,0,2520,2522,3,46,23,0,2521,2520, - 1,0,0,0,2521,2522,1,0,0,0,2522,2523,1,0,0,0,2523,2540,3,394,197,0,2524, - 2526,3,46,23,0,2525,2524,1,0,0,0,2525,2526,1,0,0,0,2526,2527,1,0,0,0,2527, - 2529,3,382,191,0,2528,2530,3,394,197,0,2529,2528,1,0,0,0,2529,2530,1,0, - 0,0,2530,2540,1,0,0,0,2531,2533,3,222,111,0,2532,2534,3,404,202,0,2533, - 2532,1,0,0,0,2533,2534,1,0,0,0,2534,2540,1,0,0,0,2535,2537,3,404,202,0, - 2536,2538,3,222,111,0,2537,2536,1,0,0,0,2537,2538,1,0,0,0,2538,2540,1,0, - 0,0,2539,2521,1,0,0,0,2539,2525,1,0,0,0,2539,2531,1,0,0,0,2539,2535,1,0, - 0,0,2540,381,1,0,0,0,2541,2543,3,202,101,0,2542,2541,1,0,0,0,2543,2544, - 1,0,0,0,2544,2542,1,0,0,0,2544,2545,1,0,0,0,2545,2547,1,0,0,0,2546,2548, - 3,200,100,0,2547,2546,1,0,0,0,2547,2548,1,0,0,0,2548,2552,1,0,0,0,2549, - 2551,3,202,101,0,2550,2549,1,0,0,0,2551,2554,1,0,0,0,2552,2550,1,0,0,0, - 2552,2553,1,0,0,0,2553,2562,1,0,0,0,2554,2552,1,0,0,0,2555,2557,3,200,100, - 0,2556,2558,3,202,101,0,2557,2556,1,0,0,0,2558,2559,1,0,0,0,2559,2557,1, - 0,0,0,2559,2560,1,0,0,0,2560,2562,1,0,0,0,2561,2542,1,0,0,0,2561,2555,1, - 0,0,0,2562,383,1,0,0,0,2563,2564,3,386,193,0,2564,385,1,0,0,0,2565,2570, - 3,90,45,0,2566,2567,5,202,0,0,2567,2569,3,90,45,0,2568,2566,1,0,0,0,2569, - 2572,1,0,0,0,2570,2568,1,0,0,0,2570,2571,1,0,0,0,2571,387,1,0,0,0,2572, - 2570,1,0,0,0,2573,2574,3,390,195,0,2574,389,1,0,0,0,2575,2576,3,392,196, - 0,2576,391,1,0,0,0,2577,2578,3,90,45,0,2578,393,1,0,0,0,2579,2580,3,396, - 198,0,2580,395,1,0,0,0,2581,2588,5,207,0,0,2582,2588,5,184,0,0,2583,2585, - 5,46,0,0,2584,2586,7,21,0,0,2585,2584,1,0,0,0,2585,2586,1,0,0,0,2586,2588, - 1,0,0,0,2587,2581,1,0,0,0,2587,2582,1,0,0,0,2587,2583,1,0,0,0,2588,2589, - 1,0,0,0,2589,2590,3,0,0,0,2590,397,1,0,0,0,2591,2594,3,400,200,0,2592,2594, - 3,402,201,0,2593,2591,1,0,0,0,2593,2592,1,0,0,0,2594,399,1,0,0,0,2595,2597, - 5,103,0,0,2596,2598,3,46,23,0,2597,2596,1,0,0,0,2597,2598,1,0,0,0,2598, - 2599,1,0,0,0,2599,2600,3,210,105,0,2600,2601,3,130,65,0,2601,401,1,0,0, - 0,2602,2604,5,103,0,0,2603,2605,3,46,23,0,2604,2603,1,0,0,0,2604,2605,1, - 0,0,0,2605,2606,1,0,0,0,2606,2607,3,408,204,0,2607,2608,3,130,65,0,2608, - 403,1,0,0,0,2609,2610,3,406,203,0,2610,405,1,0,0,0,2611,2612,3,408,204, - 0,2612,407,1,0,0,0,2613,2617,5,211,0,0,2614,2615,3,410,205,0,2615,2616, - 5,181,0,0,2616,2618,1,0,0,0,2617,2614,1,0,0,0,2617,2618,1,0,0,0,2618,2619, - 1,0,0,0,2619,2620,3,410,205,0,2620,2621,5,212,0,0,2621,409,1,0,0,0,2622, - 2625,3,28,14,0,2623,2625,3,10,5,0,2624,2622,1,0,0,0,2624,2623,1,0,0,0,2625, - 411,1,0,0,0,2626,2627,3,112,56,0,2627,2628,5,101,0,0,2628,2629,3,164,82, - 0,2629,2630,3,130,65,0,2630,413,1,0,0,0,2631,2632,5,192,0,0,2632,2636,3, - 418,209,0,2633,2634,5,192,0,0,2634,2636,3,956,478,0,2635,2631,1,0,0,0,2635, - 2633,1,0,0,0,2636,415,1,0,0,0,2637,2638,5,192,0,0,2638,2642,3,418,209,0, - 2639,2640,5,192,0,0,2640,2642,3,956,478,0,2641,2637,1,0,0,0,2641,2639,1, - 0,0,0,2642,417,1,0,0,0,2643,2644,3,222,111,0,2644,419,1,0,0,0,2645,2647, - 3,416,208,0,2646,2645,1,0,0,0,2647,2650,1,0,0,0,2648,2646,1,0,0,0,2648, - 2649,1,0,0,0,2649,2651,1,0,0,0,2650,2648,1,0,0,0,2651,2652,7,22,0,0,2652, - 2662,3,422,211,0,2653,2654,5,1,0,0,2654,2659,3,56,28,0,2655,2656,5,200, - 0,0,2656,2658,3,56,28,0,2657,2655,1,0,0,0,2658,2661,1,0,0,0,2659,2657,1, - 0,0,0,2659,2660,1,0,0,0,2660,2663,1,0,0,0,2661,2659,1,0,0,0,2662,2653,1, - 0,0,0,2662,2663,1,0,0,0,2663,2664,1,0,0,0,2664,2665,3,424,212,0,2665,421, - 1,0,0,0,2666,2668,3,46,23,0,2667,2666,1,0,0,0,2667,2668,1,0,0,0,2668,2672, - 1,0,0,0,2669,2673,5,204,0,0,2670,2671,5,158,0,0,2671,2673,5,24,0,0,2672, - 2669,1,0,0,0,2672,2670,1,0,0,0,2673,2675,1,0,0,0,2674,2667,1,0,0,0,2674, - 2675,1,0,0,0,2675,2676,1,0,0,0,2676,2677,3,222,111,0,2677,423,1,0,0,0,2678, - 2699,5,205,0,0,2679,2683,5,214,0,0,2680,2682,3,426,213,0,2681,2680,1,0, - 0,0,2682,2685,1,0,0,0,2683,2681,1,0,0,0,2683,2684,1,0,0,0,2684,2686,1,0, - 0,0,2685,2683,1,0,0,0,2686,2699,5,216,0,0,2687,2694,5,214,0,0,2688,2693, - 3,470,235,0,2689,2693,3,962,481,0,2690,2693,3,88,44,0,2691,2693,3,92,46, - 0,2692,2688,1,0,0,0,2692,2689,1,0,0,0,2692,2690,1,0,0,0,2692,2691,1,0,0, - 0,2693,2696,1,0,0,0,2694,2692,1,0,0,0,2694,2695,1,0,0,0,2695,2697,1,0,0, - 0,2696,2694,1,0,0,0,2697,2699,5,216,0,0,2698,2678,1,0,0,0,2698,2679,1,0, - 0,0,2698,2687,1,0,0,0,2699,425,1,0,0,0,2700,2705,3,84,42,0,2701,2705,3, - 428,214,0,2702,2705,3,88,44,0,2703,2705,3,92,46,0,2704,2700,1,0,0,0,2704, - 2701,1,0,0,0,2704,2702,1,0,0,0,2704,2703,1,0,0,0,2705,427,1,0,0,0,2706, - 2707,3,430,215,0,2707,429,1,0,0,0,2708,2710,5,65,0,0,2709,2708,1,0,0,0, - 2709,2710,1,0,0,0,2710,2712,1,0,0,0,2711,2713,7,19,0,0,2712,2711,1,0,0, - 0,2712,2713,1,0,0,0,2713,2714,1,0,0,0,2714,2716,3,234,117,0,2715,2717,3, - 198,99,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717,2719,1,0,0,0,2718,2720, - 3,394,197,0,2719,2718,1,0,0,0,2719,2720,1,0,0,0,2720,2721,1,0,0,0,2721, - 2722,3,424,212,0,2722,431,1,0,0,0,2723,2725,3,416,208,0,2724,2723,1,0,0, - 0,2725,2728,1,0,0,0,2726,2724,1,0,0,0,2726,2727,1,0,0,0,2727,2729,1,0,0, - 0,2728,2726,1,0,0,0,2729,2730,3,436,218,0,2730,2731,3,438,219,0,2731,433, - 1,0,0,0,2732,2734,5,141,0,0,2733,2732,1,0,0,0,2733,2734,1,0,0,0,2734,2735, - 1,0,0,0,2735,2739,5,94,0,0,2736,2738,3,416,208,0,2737,2736,1,0,0,0,2738, - 2741,1,0,0,0,2739,2737,1,0,0,0,2739,2740,1,0,0,0,2740,2742,1,0,0,0,2741, - 2739,1,0,0,0,2742,2743,3,436,218,0,2743,2744,3,438,219,0,2744,435,1,0,0, - 0,2745,2747,5,115,0,0,2746,2748,3,46,23,0,2747,2746,1,0,0,0,2747,2748,1, - 0,0,0,2748,437,1,0,0,0,2749,2759,5,205,0,0,2750,2754,5,214,0,0,2751,2753, - 3,446,223,0,2752,2751,1,0,0,0,2753,2756,1,0,0,0,2754,2752,1,0,0,0,2754, - 2755,1,0,0,0,2755,2757,1,0,0,0,2756,2754,1,0,0,0,2757,2759,5,216,0,0,2758, - 2749,1,0,0,0,2758,2750,1,0,0,0,2759,439,1,0,0,0,2760,2761,3,78,39,0,2761, - 2762,5,68,0,0,2762,2763,3,0,0,0,2763,2764,5,205,0,0,2764,441,1,0,0,0,2765, - 2767,3,46,23,0,2766,2765,1,0,0,0,2766,2767,1,0,0,0,2767,2768,1,0,0,0,2768, - 2770,5,74,0,0,2769,2766,1,0,0,0,2769,2770,1,0,0,0,2770,2771,1,0,0,0,2771, - 2776,3,90,45,0,2772,2773,5,200,0,0,2773,2775,3,90,45,0,2774,2772,1,0,0, - 0,2775,2778,1,0,0,0,2776,2774,1,0,0,0,2776,2777,1,0,0,0,2777,2779,1,0,0, - 0,2778,2776,1,0,0,0,2779,2780,5,154,0,0,2780,2785,3,90,45,0,2781,2782,5, - 200,0,0,2782,2784,3,90,45,0,2783,2781,1,0,0,0,2784,2787,1,0,0,0,2785,2783, - 1,0,0,0,2785,2786,1,0,0,0,2786,443,1,0,0,0,2787,2785,1,0,0,0,2788,2789, - 3,60,30,0,2789,445,1,0,0,0,2790,2795,3,448,224,0,2791,2795,3,440,220,0, - 2792,2795,3,88,44,0,2793,2795,3,92,46,0,2794,2790,1,0,0,0,2794,2791,1,0, - 0,0,2794,2792,1,0,0,0,2794,2793,1,0,0,0,2795,447,1,0,0,0,2796,2799,3,78, - 39,0,2797,2800,3,450,225,0,2798,2800,3,452,226,0,2799,2797,1,0,0,0,2799, - 2798,1,0,0,0,2800,449,1,0,0,0,2801,2832,3,432,216,0,2802,2832,3,434,217, - 0,2803,2832,3,60,30,0,2804,2832,3,54,27,0,2805,2832,3,522,261,0,2806,2832, - 3,526,263,0,2807,2832,3,538,269,0,2808,2832,3,540,270,0,2809,2832,3,564, - 282,0,2810,2832,3,568,284,0,2811,2832,3,582,291,0,2812,2832,3,632,316,0, - 2813,2832,3,596,298,0,2814,2832,3,572,286,0,2815,2832,3,654,327,0,2816, - 2832,3,830,415,0,2817,2832,3,768,384,0,2818,2832,3,842,421,0,2819,2832, - 3,850,425,0,2820,2832,3,890,445,0,2821,2832,3,894,447,0,2822,2832,3,906, - 453,0,2823,2832,3,910,455,0,2824,2832,3,918,459,0,2825,2832,3,924,462,0, - 2826,2832,3,946,473,0,2827,2832,3,950,475,0,2828,2832,3,954,477,0,2829, - 2832,3,626,313,0,2830,2832,3,966,483,0,2831,2801,1,0,0,0,2831,2802,1,0, - 0,0,2831,2803,1,0,0,0,2831,2804,1,0,0,0,2831,2805,1,0,0,0,2831,2806,1,0, - 0,0,2831,2807,1,0,0,0,2831,2808,1,0,0,0,2831,2809,1,0,0,0,2831,2810,1,0, - 0,0,2831,2811,1,0,0,0,2831,2812,1,0,0,0,2831,2813,1,0,0,0,2831,2814,1,0, - 0,0,2831,2815,1,0,0,0,2831,2816,1,0,0,0,2831,2817,1,0,0,0,2831,2818,1,0, - 0,0,2831,2819,1,0,0,0,2831,2820,1,0,0,0,2831,2821,1,0,0,0,2831,2822,1,0, - 0,0,2831,2823,1,0,0,0,2831,2824,1,0,0,0,2831,2825,1,0,0,0,2831,2826,1,0, - 0,0,2831,2827,1,0,0,0,2831,2828,1,0,0,0,2831,2829,1,0,0,0,2831,2830,1,0, - 0,0,2832,451,1,0,0,0,2833,2836,3,510,255,0,2834,2836,3,512,256,0,2835,2833, - 1,0,0,0,2835,2834,1,0,0,0,2836,453,1,0,0,0,2837,2838,7,23,0,0,2838,455, - 1,0,0,0,2839,2840,3,416,208,0,2840,457,1,0,0,0,2841,2843,3,454,227,0,2842, - 2841,1,0,0,0,2842,2843,1,0,0,0,2843,2847,1,0,0,0,2844,2846,3,456,228,0, - 2845,2844,1,0,0,0,2846,2849,1,0,0,0,2847,2845,1,0,0,0,2847,2848,1,0,0,0, - 2848,459,1,0,0,0,2849,2847,1,0,0,0,2850,2851,3,462,231,0,2851,2852,3,464, - 232,0,2852,461,1,0,0,0,2853,2855,3,46,23,0,2854,2853,1,0,0,0,2854,2855, - 1,0,0,0,2855,2857,1,0,0,0,2856,2858,3,520,260,0,2857,2856,1,0,0,0,2857, - 2858,1,0,0,0,2858,463,1,0,0,0,2859,2869,5,205,0,0,2860,2864,5,214,0,0,2861, - 2863,3,466,233,0,2862,2861,1,0,0,0,2863,2866,1,0,0,0,2864,2862,1,0,0,0, - 2864,2865,1,0,0,0,2865,2867,1,0,0,0,2866,2864,1,0,0,0,2867,2869,5,216,0, - 0,2868,2859,1,0,0,0,2868,2860,1,0,0,0,2869,465,1,0,0,0,2870,2881,3,92,46, - 0,2871,2872,3,78,39,0,2872,2873,3,468,234,0,2873,2881,1,0,0,0,2874,2876, - 3,556,278,0,2875,2874,1,0,0,0,2875,2876,1,0,0,0,2876,2877,1,0,0,0,2877, - 2878,3,78,39,0,2878,2879,3,512,256,0,2879,2881,1,0,0,0,2880,2870,1,0,0, - 0,2880,2871,1,0,0,0,2880,2875,1,0,0,0,2881,467,1,0,0,0,2882,2887,5,7,0, - 0,2883,2884,5,206,0,0,2884,2885,3,44,22,0,2885,2886,5,208,0,0,2886,2888, - 1,0,0,0,2887,2883,1,0,0,0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2891, - 3,44,22,0,2890,2889,1,0,0,0,2890,2891,1,0,0,0,2891,2892,1,0,0,0,2892,2893, - 5,71,0,0,2893,2894,3,90,45,0,2894,2895,3,48,24,0,2895,2901,1,0,0,0,2896, - 2897,5,164,0,0,2897,2901,3,518,259,0,2898,2901,3,450,225,0,2899,2901,3, - 510,255,0,2900,2882,1,0,0,0,2900,2896,1,0,0,0,2900,2898,1,0,0,0,2900,2899, - 1,0,0,0,2901,469,1,0,0,0,2902,2903,3,78,39,0,2903,2904,3,450,225,0,2904, - 471,1,0,0,0,2905,2906,3,78,39,0,2906,2907,5,164,0,0,2907,2908,3,518,259, - 0,2908,473,1,0,0,0,2909,2910,3,78,39,0,2910,2911,3,510,255,0,2911,475,1, - 0,0,0,2912,2913,3,78,39,0,2913,2914,3,512,256,0,2914,477,1,0,0,0,2915,2916, - 3,78,39,0,2916,2917,3,514,257,0,2917,479,1,0,0,0,2918,2919,3,78,39,0,2919, - 2920,3,516,258,0,2920,481,1,0,0,0,2921,2923,3,184,92,0,2922,2921,1,0,0, - 0,2922,2923,1,0,0,0,2923,2925,1,0,0,0,2924,2926,5,49,0,0,2925,2924,1,0, - 0,0,2925,2926,1,0,0,0,2926,2928,1,0,0,0,2927,2929,7,23,0,0,2928,2927,1, - 0,0,0,2928,2929,1,0,0,0,2929,2931,1,0,0,0,2930,2932,5,40,0,0,2931,2930, - 1,0,0,0,2931,2932,1,0,0,0,2932,483,1,0,0,0,2933,2935,3,482,241,0,2934,2936, - 5,127,0,0,2935,2934,1,0,0,0,2935,2936,1,0,0,0,2936,485,1,0,0,0,2937,2938, - 5,56,0,0,2938,2939,3,180,90,0,2939,487,1,0,0,0,2940,2941,3,416,208,0,2941, - 489,1,0,0,0,2942,2945,3,486,243,0,2943,2945,3,484,242,0,2944,2942,1,0,0, - 0,2944,2943,1,0,0,0,2945,491,1,0,0,0,2946,2950,3,490,245,0,2947,2949,3, - 488,244,0,2948,2947,1,0,0,0,2949,2952,1,0,0,0,2950,2948,1,0,0,0,2950,2951, - 1,0,0,0,2951,493,1,0,0,0,2952,2950,1,0,0,0,2953,2955,3,496,248,0,2954,2953, - 1,0,0,0,2954,2955,1,0,0,0,2955,2956,1,0,0,0,2956,2957,3,498,249,0,2957, - 495,1,0,0,0,2958,2960,3,46,23,0,2959,2961,3,198,99,0,2960,2959,1,0,0,0, - 2960,2961,1,0,0,0,2961,2964,1,0,0,0,2962,2964,3,198,99,0,2963,2958,1,0, - 0,0,2963,2962,1,0,0,0,2964,497,1,0,0,0,2965,2967,3,394,197,0,2966,2965, - 1,0,0,0,2966,2967,1,0,0,0,2967,2968,1,0,0,0,2968,2969,3,500,250,0,2969, - 499,1,0,0,0,2970,2971,3,464,232,0,2971,501,1,0,0,0,2972,2973,3,482,241, - 0,2973,2974,3,494,247,0,2974,503,1,0,0,0,2975,2978,3,486,243,0,2976,2978, - 3,482,241,0,2977,2975,1,0,0,0,2977,2976,1,0,0,0,2978,2979,1,0,0,0,2979, - 2980,5,127,0,0,2980,2981,3,494,247,0,2981,505,1,0,0,0,2982,2983,3,486,243, - 0,2983,2984,3,186,93,0,2984,2985,3,498,249,0,2985,507,1,0,0,0,2986,2990, - 3,228,114,0,2987,2989,3,202,101,0,2988,2987,1,0,0,0,2989,2992,1,0,0,0,2990, - 2988,1,0,0,0,2990,2991,1,0,0,0,2991,2993,1,0,0,0,2992,2990,1,0,0,0,2993, - 2994,3,500,250,0,2994,509,1,0,0,0,2995,3004,3,504,252,0,2996,3004,3,506, - 253,0,2997,3004,3,524,262,0,2998,3004,3,534,267,0,2999,3004,3,592,296,0, - 3000,3004,3,594,297,0,3001,3004,3,968,484,0,3002,3004,3,502,251,0,3003, - 2995,1,0,0,0,3003,2996,1,0,0,0,3003,2997,1,0,0,0,3003,2998,1,0,0,0,3003, - 2999,1,0,0,0,3003,3000,1,0,0,0,3003,3001,1,0,0,0,3003,3002,1,0,0,0,3004, - 511,1,0,0,0,3005,3008,3,514,257,0,3006,3008,3,516,258,0,3007,3005,1,0,0, - 0,3007,3006,1,0,0,0,3008,513,1,0,0,0,3009,3025,3,546,273,0,3010,3025,3, - 548,274,0,3011,3025,3,550,275,0,3012,3025,3,554,277,0,3013,3025,3,566,283, - 0,3014,3025,3,570,285,0,3015,3025,3,934,467,0,3016,3025,3,952,476,0,3017, - 3025,3,578,289,0,3018,3025,3,584,292,0,3019,3025,3,612,306,0,3020,3025, - 3,628,314,0,3021,3025,3,634,317,0,3022,3025,3,642,321,0,3023,3025,3,644, - 322,0,3024,3009,1,0,0,0,3024,3010,1,0,0,0,3024,3011,1,0,0,0,3024,3012,1, - 0,0,0,3024,3013,1,0,0,0,3024,3014,1,0,0,0,3024,3015,1,0,0,0,3024,3016,1, - 0,0,0,3024,3017,1,0,0,0,3024,3018,1,0,0,0,3024,3019,1,0,0,0,3024,3020,1, - 0,0,0,3024,3021,1,0,0,0,3024,3022,1,0,0,0,3024,3023,1,0,0,0,3025,515,1, - 0,0,0,3026,3043,3,672,336,0,3027,3043,3,832,416,0,3028,3043,3,796,398,0, - 3029,3043,3,844,422,0,3030,3043,3,878,439,0,3031,3043,3,892,446,0,3032, - 3043,3,896,448,0,3033,3043,3,908,454,0,3034,3043,3,912,456,0,3035,3043, - 3,920,460,0,3036,3043,3,948,474,0,3037,3043,3,676,338,0,3038,3043,3,800, - 400,0,3039,3043,3,922,461,0,3040,3043,3,846,423,0,3041,3043,3,880,440,0, - 3042,3026,1,0,0,0,3042,3027,1,0,0,0,3042,3028,1,0,0,0,3042,3029,1,0,0,0, - 3042,3030,1,0,0,0,3042,3031,1,0,0,0,3042,3032,1,0,0,0,3042,3033,1,0,0,0, - 3042,3034,1,0,0,0,3042,3035,1,0,0,0,3042,3036,1,0,0,0,3042,3037,1,0,0,0, - 3042,3038,1,0,0,0,3042,3039,1,0,0,0,3042,3040,1,0,0,0,3042,3041,1,0,0,0, - 3043,517,1,0,0,0,3044,3066,3,508,254,0,3045,3066,3,504,252,0,3046,3066, - 3,524,262,0,3047,3066,3,592,296,0,3048,3066,3,594,297,0,3049,3066,3,546, - 273,0,3050,3066,3,548,274,0,3051,3066,3,550,275,0,3052,3066,3,554,277,0, - 3053,3066,3,566,283,0,3054,3066,3,570,285,0,3055,3066,3,934,467,0,3056, - 3066,3,952,476,0,3057,3066,3,578,289,0,3058,3066,3,584,292,0,3059,3066, - 3,612,306,0,3060,3066,3,628,314,0,3061,3066,3,634,317,0,3062,3066,3,642, - 321,0,3063,3066,3,644,322,0,3064,3066,3,516,258,0,3065,3044,1,0,0,0,3065, - 3045,1,0,0,0,3065,3046,1,0,0,0,3065,3047,1,0,0,0,3065,3048,1,0,0,0,3065, - 3049,1,0,0,0,3065,3050,1,0,0,0,3065,3051,1,0,0,0,3065,3052,1,0,0,0,3065, - 3053,1,0,0,0,3065,3054,1,0,0,0,3065,3055,1,0,0,0,3065,3056,1,0,0,0,3065, - 3057,1,0,0,0,3065,3058,1,0,0,0,3065,3059,1,0,0,0,3065,3060,1,0,0,0,3065, - 3061,1,0,0,0,3065,3062,1,0,0,0,3065,3063,1,0,0,0,3065,3064,1,0,0,0,3066, - 519,1,0,0,0,3067,3068,7,11,0,0,3068,3073,3,170,85,0,3069,3070,5,200,0,0, - 3070,3072,3,170,85,0,3071,3069,1,0,0,0,3072,3075,1,0,0,0,3073,3071,1,0, - 0,0,3073,3074,1,0,0,0,3074,521,1,0,0,0,3075,3073,1,0,0,0,3076,3077,3,458, - 229,0,3077,3078,5,19,0,0,3078,3079,5,45,0,0,3079,3080,3,460,230,0,3080, - 523,1,0,0,0,3081,3082,3,492,246,0,3082,3083,5,19,0,0,3083,3084,3,494,247, - 0,3084,525,1,0,0,0,3085,3087,3,456,228,0,3086,3085,1,0,0,0,3087,3090,1, - 0,0,0,3088,3086,1,0,0,0,3088,3089,1,0,0,0,3089,3091,1,0,0,0,3090,3088,1, - 0,0,0,3091,3092,5,58,0,0,3092,3093,5,45,0,0,3093,3094,3,462,231,0,3094, - 3095,3,528,264,0,3095,527,1,0,0,0,3096,3107,5,205,0,0,3097,3102,5,214,0, - 0,3098,3101,3,444,222,0,3099,3101,3,530,265,0,3100,3098,1,0,0,0,3100,3099, - 1,0,0,0,3101,3104,1,0,0,0,3102,3100,1,0,0,0,3102,3103,1,0,0,0,3103,3105, - 1,0,0,0,3104,3102,1,0,0,0,3105,3107,5,216,0,0,3106,3096,1,0,0,0,3106,3097, - 1,0,0,0,3107,529,1,0,0,0,3108,3109,3,78,39,0,3109,3110,3,532,266,0,3110, - 531,1,0,0,0,3111,3113,5,58,0,0,3112,3111,1,0,0,0,3112,3113,1,0,0,0,3113, - 3114,1,0,0,0,3114,3115,3,494,247,0,3115,533,1,0,0,0,3116,3117,3,492,246, - 0,3117,3118,5,58,0,0,3118,3119,3,494,247,0,3119,535,1,0,0,0,3120,3122,3, - 454,227,0,3121,3120,1,0,0,0,3121,3122,1,0,0,0,3122,3125,1,0,0,0,3123,3124, - 5,82,0,0,3124,3126,3,542,271,0,3125,3123,1,0,0,0,3125,3126,1,0,0,0,3126, - 3130,1,0,0,0,3127,3129,3,456,228,0,3128,3127,1,0,0,0,3129,3132,1,0,0,0, - 3130,3128,1,0,0,0,3130,3131,1,0,0,0,3131,537,1,0,0,0,3132,3130,1,0,0,0, - 3133,3134,3,536,268,0,3134,3135,5,110,0,0,3135,3136,5,45,0,0,3136,3137, - 3,460,230,0,3137,539,1,0,0,0,3138,3140,3,454,227,0,3139,3138,1,0,0,0,3139, - 3140,1,0,0,0,3140,3141,1,0,0,0,3141,3145,5,82,0,0,3142,3144,3,456,228,0, - 3143,3142,1,0,0,0,3144,3147,1,0,0,0,3145,3143,1,0,0,0,3145,3146,1,0,0,0, - 3146,3148,1,0,0,0,3147,3145,1,0,0,0,3148,3149,5,45,0,0,3149,3150,3,460, - 230,0,3150,3151,3,542,271,0,3151,541,1,0,0,0,3152,3153,3,980,490,0,3153, - 543,1,0,0,0,3154,3156,3,484,242,0,3155,3157,5,82,0,0,3156,3155,1,0,0,0, - 3156,3157,1,0,0,0,3157,3159,1,0,0,0,3158,3160,3,552,276,0,3159,3158,1,0, - 0,0,3159,3160,1,0,0,0,3160,3164,1,0,0,0,3161,3163,3,488,244,0,3162,3161, - 1,0,0,0,3163,3166,1,0,0,0,3164,3162,1,0,0,0,3164,3165,1,0,0,0,3165,545, - 1,0,0,0,3166,3164,1,0,0,0,3167,3168,3,544,272,0,3168,3169,5,110,0,0,3169, - 3170,3,494,247,0,3170,547,1,0,0,0,3171,3172,3,484,242,0,3172,3176,5,82, - 0,0,3173,3175,3,488,244,0,3174,3173,1,0,0,0,3175,3178,1,0,0,0,3176,3174, - 1,0,0,0,3176,3177,1,0,0,0,3177,3179,1,0,0,0,3178,3176,1,0,0,0,3179,3180, - 3,494,247,0,3180,549,1,0,0,0,3181,3183,3,484,242,0,3182,3184,5,82,0,0,3183, - 3182,1,0,0,0,3183,3184,1,0,0,0,3184,3185,1,0,0,0,3185,3189,3,552,276,0, - 3186,3188,3,488,244,0,3187,3186,1,0,0,0,3188,3191,1,0,0,0,3189,3187,1,0, - 0,0,3189,3190,1,0,0,0,3190,3192,1,0,0,0,3191,3189,1,0,0,0,3192,3193,3,494, - 247,0,3193,551,1,0,0,0,3194,3195,7,24,0,0,3195,553,1,0,0,0,3196,3197,3, - 544,272,0,3197,3206,5,59,0,0,3198,3200,3,228,114,0,3199,3201,3,198,99,0, - 3200,3199,1,0,0,0,3200,3201,1,0,0,0,3201,3207,1,0,0,0,3202,3204,5,110,0, - 0,3203,3205,3,496,248,0,3204,3203,1,0,0,0,3204,3205,1,0,0,0,3205,3207,1, - 0,0,0,3206,3198,1,0,0,0,3206,3202,1,0,0,0,3207,3208,1,0,0,0,3208,3209,3, - 498,249,0,3209,555,1,0,0,0,3210,3211,5,152,0,0,3211,3212,3,558,279,0,3212, - 557,1,0,0,0,3213,3214,3,560,280,0,3214,559,1,0,0,0,3215,3216,3,562,281, - 0,3216,561,1,0,0,0,3217,3219,3,404,202,0,3218,3217,1,0,0,0,3218,3219,1, - 0,0,0,3219,563,1,0,0,0,3220,3221,3,536,268,0,3221,3222,5,91,0,0,3222,3223, - 5,45,0,0,3223,3224,3,460,230,0,3224,565,1,0,0,0,3225,3226,3,544,272,0,3226, - 3227,5,91,0,0,3227,3228,3,494,247,0,3228,567,1,0,0,0,3229,3230,3,536,268, - 0,3230,3231,5,117,0,0,3231,3232,5,45,0,0,3232,3233,3,460,230,0,3233,569, - 1,0,0,0,3234,3235,3,544,272,0,3235,3236,5,117,0,0,3236,3237,3,494,247,0, - 3237,571,1,0,0,0,3238,3239,3,458,229,0,3239,3240,5,119,0,0,3240,3241,5, - 45,0,0,3241,3242,3,460,230,0,3242,3243,3,574,287,0,3243,573,1,0,0,0,3244, - 3245,3,576,288,0,3245,575,1,0,0,0,3246,3247,3,988,494,0,3247,577,1,0,0, - 0,3248,3249,3,544,272,0,3249,3250,5,119,0,0,3250,3251,3,494,247,0,3251, - 579,1,0,0,0,3252,3253,5,217,0,0,3253,3254,3,90,45,0,3254,581,1,0,0,0,3255, - 3256,3,536,268,0,3256,3257,5,37,0,0,3257,3258,5,45,0,0,3258,3259,3,460, - 230,0,3259,583,1,0,0,0,3260,3274,3,544,272,0,3261,3263,5,37,0,0,3262,3264, - 3,496,248,0,3263,3262,1,0,0,0,3263,3264,1,0,0,0,3264,3266,1,0,0,0,3265, - 3267,3,394,197,0,3266,3265,1,0,0,0,3266,3267,1,0,0,0,3267,3270,1,0,0,0, - 3268,3269,5,36,0,0,3269,3271,3,586,293,0,3270,3268,1,0,0,0,3270,3271,1, - 0,0,0,3271,3275,1,0,0,0,3272,3273,5,36,0,0,3273,3275,3,586,293,0,3274,3261, - 1,0,0,0,3274,3272,1,0,0,0,3275,3276,1,0,0,0,3276,3277,3,500,250,0,3277, - 585,1,0,0,0,3278,3281,3,588,294,0,3279,3281,3,590,295,0,3280,3278,1,0,0, - 0,3280,3279,1,0,0,0,3281,587,1,0,0,0,3282,3283,3,268,134,0,3283,3284,5, - 154,0,0,3284,3285,3,268,134,0,3285,589,1,0,0,0,3286,3287,5,196,0,0,3287, - 3288,3,268,134,0,3288,3289,5,200,0,0,3289,3294,3,268,134,0,3290,3291,5, - 200,0,0,3291,3293,3,268,134,0,3292,3290,1,0,0,0,3293,3296,1,0,0,0,3294, - 3292,1,0,0,0,3294,3295,1,0,0,0,3295,3297,1,0,0,0,3296,3294,1,0,0,0,3297, - 3298,5,197,0,0,3298,591,1,0,0,0,3299,3304,3,492,246,0,3300,3302,5,22,0, - 0,3301,3303,3,496,248,0,3302,3301,1,0,0,0,3302,3303,1,0,0,0,3303,3305,1, - 0,0,0,3304,3300,1,0,0,0,3304,3305,1,0,0,0,3305,3306,1,0,0,0,3306,3307,5, - 21,0,0,3307,3308,3,268,134,0,3308,3309,5,207,0,0,3309,3310,3,268,134,0, - 3310,3311,3,500,250,0,3311,593,1,0,0,0,3312,3317,3,492,246,0,3313,3315, - 5,150,0,0,3314,3316,3,496,248,0,3315,3314,1,0,0,0,3315,3316,1,0,0,0,3316, - 3318,1,0,0,0,3317,3313,1,0,0,0,3317,3318,1,0,0,0,3318,3319,1,0,0,0,3319, - 3320,5,69,0,0,3320,3321,3,268,134,0,3321,3322,5,152,0,0,3322,3323,3,268, - 134,0,3323,3324,3,500,250,0,3324,595,1,0,0,0,3325,3326,3,536,268,0,3326, - 3327,5,85,0,0,3327,3328,5,45,0,0,3328,3329,3,462,231,0,3329,3330,3,598, - 299,0,3330,597,1,0,0,0,3331,3341,5,205,0,0,3332,3336,5,214,0,0,3333,3335, - 3,600,300,0,3334,3333,1,0,0,0,3335,3338,1,0,0,0,3336,3334,1,0,0,0,3336, - 3337,1,0,0,0,3337,3339,1,0,0,0,3338,3336,1,0,0,0,3339,3341,5,216,0,0,3340, - 3331,1,0,0,0,3340,3332,1,0,0,0,3341,599,1,0,0,0,3342,3352,3,470,235,0,3343, - 3352,3,472,236,0,3344,3352,3,602,301,0,3345,3347,3,556,278,0,3346,3345, - 1,0,0,0,3346,3347,1,0,0,0,3347,3348,1,0,0,0,3348,3352,3,606,303,0,3349, - 3352,3,88,44,0,3350,3352,3,92,46,0,3351,3342,1,0,0,0,3351,3343,1,0,0,0, - 3351,3344,1,0,0,0,3351,3346,1,0,0,0,3351,3349,1,0,0,0,3351,3350,1,0,0,0, - 3352,601,1,0,0,0,3353,3354,3,78,39,0,3354,3355,3,604,302,0,3355,603,1,0, - 0,0,3356,3362,3,504,252,0,3357,3362,3,524,262,0,3358,3362,3,534,267,0,3359, - 3362,3,592,296,0,3360,3362,3,594,297,0,3361,3356,1,0,0,0,3361,3357,1,0, - 0,0,3361,3358,1,0,0,0,3361,3359,1,0,0,0,3361,3360,1,0,0,0,3362,605,1,0, - 0,0,3363,3364,3,78,39,0,3364,3365,3,608,304,0,3365,607,1,0,0,0,3366,3370, - 3,610,305,0,3367,3370,3,514,257,0,3368,3370,3,516,258,0,3369,3366,1,0,0, - 0,3369,3367,1,0,0,0,3369,3368,1,0,0,0,3370,609,1,0,0,0,3371,3372,5,56,0, - 0,3372,3373,3,494,247,0,3373,611,1,0,0,0,3374,3375,3,544,272,0,3375,3376, - 5,85,0,0,3376,3377,3,614,307,0,3377,3378,3,598,299,0,3378,613,1,0,0,0,3379, - 3381,3,496,248,0,3380,3379,1,0,0,0,3380,3381,1,0,0,0,3381,3383,1,0,0,0, - 3382,3384,3,394,197,0,3383,3382,1,0,0,0,3383,3384,1,0,0,0,3384,3387,1,0, - 0,0,3385,3386,5,36,0,0,3386,3388,3,616,308,0,3387,3385,1,0,0,0,3387,3388, - 1,0,0,0,3388,3391,1,0,0,0,3389,3391,3,616,308,0,3390,3380,1,0,0,0,3390, - 3389,1,0,0,0,3391,615,1,0,0,0,3392,3395,3,618,309,0,3393,3395,3,620,310, - 0,3394,3392,1,0,0,0,3394,3393,1,0,0,0,3395,617,1,0,0,0,3396,3397,3,622, - 311,0,3397,3398,5,154,0,0,3398,3399,3,622,311,0,3399,619,1,0,0,0,3400,3401, - 5,196,0,0,3401,3402,3,622,311,0,3402,3403,5,200,0,0,3403,3408,3,622,311, - 0,3404,3405,5,200,0,0,3405,3407,3,622,311,0,3406,3404,1,0,0,0,3407,3410, - 1,0,0,0,3408,3406,1,0,0,0,3408,3409,1,0,0,0,3409,3411,1,0,0,0,3410,3408, - 1,0,0,0,3411,3412,5,197,0,0,3412,621,1,0,0,0,3413,3414,3,624,312,0,3414, - 623,1,0,0,0,3415,3417,3,272,136,0,3416,3415,1,0,0,0,3416,3417,1,0,0,0,3417, - 3421,1,0,0,0,3418,3419,3,44,22,0,3419,3420,7,17,0,0,3420,3422,1,0,0,0,3421, - 3418,1,0,0,0,3421,3422,1,0,0,0,3422,3423,1,0,0,0,3423,3424,3,228,114,0, - 3424,625,1,0,0,0,3425,3426,3,536,268,0,3426,3427,5,10,0,0,3427,3428,5,45, - 0,0,3428,3429,3,460,230,0,3429,627,1,0,0,0,3430,3431,3,544,272,0,3431,3432, - 3,630,315,0,3432,3433,3,500,250,0,3433,629,1,0,0,0,3434,3436,5,10,0,0,3435, - 3437,3,496,248,0,3436,3435,1,0,0,0,3436,3437,1,0,0,0,3437,3440,1,0,0,0, - 3438,3439,5,9,0,0,3439,3441,3,586,293,0,3440,3438,1,0,0,0,3440,3441,1,0, - 0,0,3441,3445,1,0,0,0,3442,3443,5,9,0,0,3443,3445,3,586,293,0,3444,3434, - 1,0,0,0,3444,3442,1,0,0,0,3445,631,1,0,0,0,3446,3447,3,536,268,0,3447,3448, - 5,70,0,0,3448,3449,5,45,0,0,3449,3450,3,460,230,0,3450,633,1,0,0,0,3451, - 3452,3,544,272,0,3452,3453,5,99,0,0,3453,3454,3,636,318,0,3454,3455,3,464, - 232,0,3455,635,1,0,0,0,3456,3458,3,496,248,0,3457,3456,1,0,0,0,3457,3458, - 1,0,0,0,3458,3460,1,0,0,0,3459,3461,3,394,197,0,3460,3459,1,0,0,0,3460, - 3461,1,0,0,0,3461,3464,1,0,0,0,3462,3463,5,111,0,0,3463,3465,3,646,323, - 0,3464,3462,1,0,0,0,3464,3465,1,0,0,0,3465,3471,1,0,0,0,3466,3467,5,74, - 0,0,3467,3468,3,638,319,0,3468,3469,5,154,0,0,3469,3470,3,638,319,0,3470, - 3472,1,0,0,0,3471,3466,1,0,0,0,3471,3472,1,0,0,0,3472,3478,1,0,0,0,3473, - 3474,3,638,319,0,3474,3475,5,154,0,0,3475,3476,3,638,319,0,3476,3478,1, - 0,0,0,3477,3457,1,0,0,0,3477,3473,1,0,0,0,3478,637,1,0,0,0,3479,3480,3, - 640,320,0,3480,639,1,0,0,0,3481,3482,3,228,114,0,3482,641,1,0,0,0,3483, - 3484,3,544,272,0,3484,3485,5,70,0,0,3485,3486,3,376,188,0,3486,3487,3,464, - 232,0,3487,643,1,0,0,0,3488,3489,3,544,272,0,3489,3490,5,150,0,0,3490,3491, - 5,70,0,0,3491,3492,3,376,188,0,3492,3493,3,464,232,0,3493,645,1,0,0,0,3494, - 3495,3,648,324,0,3495,647,1,0,0,0,3496,3497,3,380,190,0,3497,649,1,0,0, - 0,3498,3501,3,90,45,0,3499,3501,3,652,326,0,3500,3498,1,0,0,0,3500,3499, - 1,0,0,0,3501,651,1,0,0,0,3502,3503,3,240,120,0,3503,3504,5,202,0,0,3504, - 3506,1,0,0,0,3505,3502,1,0,0,0,3506,3507,1,0,0,0,3507,3505,1,0,0,0,3507, - 3508,1,0,0,0,3508,3509,1,0,0,0,3509,3510,3,240,120,0,3510,3511,5,202,0, - 0,3511,653,1,0,0,0,3512,3513,3,536,268,0,3513,3514,5,4,0,0,3514,3515,5, - 45,0,0,3515,3516,3,462,231,0,3516,3517,3,656,328,0,3517,655,1,0,0,0,3518, - 3528,5,205,0,0,3519,3523,5,214,0,0,3520,3522,3,658,329,0,3521,3520,1,0, - 0,0,3522,3525,1,0,0,0,3523,3521,1,0,0,0,3523,3524,1,0,0,0,3524,3526,1,0, - 0,0,3525,3523,1,0,0,0,3526,3528,5,216,0,0,3527,3518,1,0,0,0,3527,3519,1, - 0,0,0,3528,657,1,0,0,0,3529,3549,3,660,330,0,3530,3534,3,664,332,0,3531, - 3533,3,668,334,0,3532,3531,1,0,0,0,3533,3536,1,0,0,0,3534,3532,1,0,0,0, - 3534,3535,1,0,0,0,3535,3549,1,0,0,0,3536,3534,1,0,0,0,3537,3539,3,556,278, - 0,3538,3537,1,0,0,0,3538,3539,1,0,0,0,3539,3540,1,0,0,0,3540,3544,3,662, - 331,0,3541,3543,3,668,334,0,3542,3541,1,0,0,0,3543,3546,1,0,0,0,3544,3542, - 1,0,0,0,3544,3545,1,0,0,0,3545,3549,1,0,0,0,3546,3544,1,0,0,0,3547,3549, - 3,670,335,0,3548,3529,1,0,0,0,3548,3530,1,0,0,0,3548,3538,1,0,0,0,3548, - 3547,1,0,0,0,3549,659,1,0,0,0,3550,3560,3,92,46,0,3551,3560,3,88,44,0,3552, - 3560,3,470,235,0,3553,3560,3,472,236,0,3554,3560,3,474,237,0,3555,3557, - 3,556,278,0,3556,3555,1,0,0,0,3556,3557,1,0,0,0,3557,3558,1,0,0,0,3558, - 3560,3,478,239,0,3559,3550,1,0,0,0,3559,3551,1,0,0,0,3559,3552,1,0,0,0, - 3559,3553,1,0,0,0,3559,3554,1,0,0,0,3559,3556,1,0,0,0,3560,661,1,0,0,0, - 3561,3564,3,480,240,0,3562,3564,3,666,333,0,3563,3561,1,0,0,0,3563,3562, - 1,0,0,0,3564,663,1,0,0,0,3565,3566,3,78,39,0,3566,3567,5,69,0,0,3567,3568, - 3,90,45,0,3568,3569,3,48,24,0,3569,665,1,0,0,0,3570,3571,3,78,39,0,3571, - 3572,3,680,340,0,3572,667,1,0,0,0,3573,3574,3,78,39,0,3574,3575,3,758,379, - 0,3575,669,1,0,0,0,3576,3577,3,78,39,0,3577,3578,3,766,383,0,3578,671,1, - 0,0,0,3579,3580,3,544,272,0,3580,3581,5,4,0,0,3581,3582,3,674,337,0,3582, - 3583,3,656,328,0,3583,673,1,0,0,0,3584,3586,3,496,248,0,3585,3584,1,0,0, - 0,3585,3586,1,0,0,0,3586,3588,1,0,0,0,3587,3589,3,394,197,0,3588,3587,1, - 0,0,0,3588,3589,1,0,0,0,3589,675,1,0,0,0,3590,3591,3,544,272,0,3591,3592, - 5,118,0,0,3592,3593,3,678,339,0,3593,3594,3,656,328,0,3594,677,1,0,0,0, - 3595,3597,3,228,114,0,3596,3598,3,198,99,0,3597,3596,1,0,0,0,3597,3598, - 1,0,0,0,3598,3604,1,0,0,0,3599,3601,5,4,0,0,3600,3602,3,496,248,0,3601, - 3600,1,0,0,0,3601,3602,1,0,0,0,3602,3604,1,0,0,0,3603,3595,1,0,0,0,3603, - 3599,1,0,0,0,3604,3606,1,0,0,0,3605,3607,3,394,197,0,3606,3605,1,0,0,0, - 3606,3607,1,0,0,0,3607,679,1,0,0,0,3608,3617,3,686,343,0,3609,3617,3,714, - 357,0,3610,3617,3,698,349,0,3611,3617,3,728,364,0,3612,3617,3,738,369,0, - 3613,3617,3,740,370,0,3614,3617,3,750,375,0,3615,3617,3,752,376,0,3616, - 3608,1,0,0,0,3616,3609,1,0,0,0,3616,3610,1,0,0,0,3616,3611,1,0,0,0,3616, - 3612,1,0,0,0,3616,3613,1,0,0,0,3616,3614,1,0,0,0,3616,3615,1,0,0,0,3617, - 681,1,0,0,0,3618,3620,5,4,0,0,3619,3621,3,496,248,0,3620,3619,1,0,0,0,3620, - 3621,1,0,0,0,3621,683,1,0,0,0,3622,3624,3,544,272,0,3623,3625,3,682,341, - 0,3624,3623,1,0,0,0,3624,3625,1,0,0,0,3625,685,1,0,0,0,3626,3631,3,690, - 345,0,3627,3631,3,692,346,0,3628,3631,3,694,347,0,3629,3631,3,696,348,0, - 3630,3626,1,0,0,0,3630,3627,1,0,0,0,3630,3628,1,0,0,0,3630,3629,1,0,0,0, - 3631,687,1,0,0,0,3632,3634,3,482,241,0,3633,3635,5,82,0,0,3634,3633,1,0, - 0,0,3634,3635,1,0,0,0,3635,3637,1,0,0,0,3636,3638,3,552,276,0,3637,3636, - 1,0,0,0,3637,3638,1,0,0,0,3638,3642,1,0,0,0,3639,3641,3,488,244,0,3640, - 3639,1,0,0,0,3641,3644,1,0,0,0,3642,3640,1,0,0,0,3642,3643,1,0,0,0,3643, - 689,1,0,0,0,3644,3642,1,0,0,0,3645,3646,3,688,344,0,3646,3648,5,98,0,0, - 3647,3649,3,496,248,0,3648,3647,1,0,0,0,3648,3649,1,0,0,0,3649,3650,1,0, - 0,0,3650,3651,3,656,328,0,3651,691,1,0,0,0,3652,3653,3,688,344,0,3653,3655, - 5,44,0,0,3654,3656,3,496,248,0,3655,3654,1,0,0,0,3655,3656,1,0,0,0,3656, - 3657,1,0,0,0,3657,3658,3,656,328,0,3658,693,1,0,0,0,3659,3660,3,688,344, - 0,3660,3662,5,92,0,0,3661,3663,3,496,248,0,3662,3661,1,0,0,0,3662,3663, - 1,0,0,0,3663,3664,1,0,0,0,3664,3665,3,656,328,0,3665,695,1,0,0,0,3666,3667, - 3,688,344,0,3667,3669,5,72,0,0,3668,3670,3,496,248,0,3669,3668,1,0,0,0, - 3669,3670,1,0,0,0,3670,3671,1,0,0,0,3671,3672,3,656,328,0,3672,697,1,0, - 0,0,3673,3674,3,544,272,0,3674,3675,3,700,350,0,3675,3676,3,656,328,0,3676, - 699,1,0,0,0,3677,3679,3,682,341,0,3678,3677,1,0,0,0,3678,3679,1,0,0,0,3679, - 3680,1,0,0,0,3680,3681,5,3,0,0,3681,3682,3,702,351,0,3682,701,1,0,0,0,3683, - 3686,3,704,352,0,3684,3685,5,168,0,0,3685,3687,3,720,360,0,3686,3684,1, - 0,0,0,3686,3687,1,0,0,0,3687,703,1,0,0,0,3688,3689,3,706,353,0,3689,705, - 1,0,0,0,3690,3699,3,380,190,0,3691,3693,3,46,23,0,3692,3691,1,0,0,0,3692, - 3693,1,0,0,0,3693,3695,1,0,0,0,3694,3696,3,382,191,0,3695,3694,1,0,0,0, - 3695,3696,1,0,0,0,3696,3697,1,0,0,0,3697,3699,3,708,354,0,3698,3690,1,0, - 0,0,3698,3692,1,0,0,0,3699,707,1,0,0,0,3700,3701,3,710,355,0,3701,709,1, - 0,0,0,3702,3703,3,712,356,0,3703,711,1,0,0,0,3704,3705,7,25,0,0,3705,3709, - 3,40,20,0,3706,3707,5,171,0,0,3707,3709,3,42,21,0,3708,3704,1,0,0,0,3708, - 3706,1,0,0,0,3709,713,1,0,0,0,3710,3713,3,544,272,0,3711,3714,3,682,341, - 0,3712,3714,3,674,337,0,3713,3711,1,0,0,0,3713,3712,1,0,0,0,3714,3715,1, - 0,0,0,3715,3723,5,136,0,0,3716,3718,3,720,360,0,3717,3719,3,718,359,0,3718, - 3717,1,0,0,0,3718,3719,1,0,0,0,3719,3724,1,0,0,0,3720,3721,3,726,363,0, - 3721,3722,3,718,359,0,3722,3724,1,0,0,0,3723,3716,1,0,0,0,3723,3720,1,0, - 0,0,3724,3725,1,0,0,0,3725,3726,3,656,328,0,3726,715,1,0,0,0,3727,3729, - 3,682,341,0,3728,3727,1,0,0,0,3728,3729,1,0,0,0,3729,3730,1,0,0,0,3730, - 3731,5,136,0,0,3731,3733,3,720,360,0,3732,3734,3,718,359,0,3733,3732,1, - 0,0,0,3733,3734,1,0,0,0,3734,717,1,0,0,0,3735,3736,5,168,0,0,3736,3739, - 3,720,360,0,3737,3738,5,154,0,0,3738,3740,3,720,360,0,3739,3737,1,0,0,0, - 3739,3740,1,0,0,0,3740,3746,1,0,0,0,3741,3742,3,726,363,0,3742,3743,5,154, - 0,0,3743,3744,3,720,360,0,3744,3746,1,0,0,0,3745,3735,1,0,0,0,3745,3741, - 1,0,0,0,3746,719,1,0,0,0,3747,3748,3,722,361,0,3748,721,1,0,0,0,3749,3750, - 3,724,362,0,3750,723,1,0,0,0,3751,3752,3,0,0,0,3752,725,1,0,0,0,3753,3754, - 3,982,491,0,3754,727,1,0,0,0,3755,3756,3,544,272,0,3756,3757,3,730,365, - 0,3757,3758,3,656,328,0,3758,729,1,0,0,0,3759,3761,3,682,341,0,3760,3759, - 1,0,0,0,3760,3761,1,0,0,0,3761,3762,1,0,0,0,3762,3763,5,15,0,0,3763,3764, - 3,732,366,0,3764,3765,3,340,170,0,3765,3766,5,184,0,0,3766,3767,3,720,360, - 0,3767,731,1,0,0,0,3768,3769,3,734,367,0,3769,733,1,0,0,0,3770,3771,3,736, - 368,0,3771,3772,5,202,0,0,3772,3774,1,0,0,0,3773,3770,1,0,0,0,3773,3774, - 1,0,0,0,3774,735,1,0,0,0,3775,3776,3,986,493,0,3776,737,1,0,0,0,3777,3779, - 3,544,272,0,3778,3780,3,682,341,0,3779,3778,1,0,0,0,3779,3780,1,0,0,0,3780, - 3781,1,0,0,0,3781,3783,5,151,0,0,3782,3784,3,720,360,0,3783,3782,1,0,0, - 0,3783,3784,1,0,0,0,3784,3785,1,0,0,0,3785,3786,3,656,328,0,3786,739,1, - 0,0,0,3787,3788,3,684,342,0,3788,3789,5,77,0,0,3789,3790,3,742,371,0,3790, - 3796,3,744,372,0,3791,3794,5,55,0,0,3792,3795,3,744,372,0,3793,3795,3,748, - 374,0,3794,3792,1,0,0,0,3794,3793,1,0,0,0,3795,3797,1,0,0,0,3796,3791,1, - 0,0,0,3796,3797,1,0,0,0,3797,741,1,0,0,0,3798,3799,3,0,0,0,3799,743,1,0, - 0,0,3800,3801,3,746,373,0,3801,745,1,0,0,0,3802,3804,5,4,0,0,3803,3805, - 3,496,248,0,3804,3803,1,0,0,0,3804,3805,1,0,0,0,3805,3807,1,0,0,0,3806, - 3802,1,0,0,0,3806,3807,1,0,0,0,3807,3808,1,0,0,0,3808,3812,5,214,0,0,3809, - 3811,3,658,329,0,3810,3809,1,0,0,0,3811,3814,1,0,0,0,3812,3810,1,0,0,0, - 3812,3813,1,0,0,0,3813,3815,1,0,0,0,3814,3812,1,0,0,0,3815,3816,5,216,0, - 0,3816,747,1,0,0,0,3817,3818,3,740,370,0,3818,749,1,0,0,0,3819,3824,3,684, - 342,0,3820,3821,5,172,0,0,3821,3825,3,742,371,0,3822,3823,5,96,0,0,3823, - 3825,3,726,363,0,3824,3820,1,0,0,0,3824,3822,1,0,0,0,3825,3826,1,0,0,0, - 3826,3831,3,744,372,0,3827,3828,5,161,0,0,3828,3829,3,742,371,0,3829,3830, - 5,205,0,0,3830,3832,1,0,0,0,3831,3827,1,0,0,0,3831,3832,1,0,0,0,3832,751, - 1,0,0,0,3833,3834,3,684,342,0,3834,3835,5,71,0,0,3835,3836,3,754,377,0, - 3836,3837,5,80,0,0,3837,3838,3,720,360,0,3838,3839,3,744,372,0,3839,753, - 1,0,0,0,3840,3842,3,496,248,0,3841,3840,1,0,0,0,3841,3842,1,0,0,0,3842, - 755,1,0,0,0,3843,3845,3,496,248,0,3844,3843,1,0,0,0,3844,3845,1,0,0,0,3845, - 757,1,0,0,0,3846,3850,3,760,380,0,3847,3850,3,762,381,0,3848,3850,3,764, - 382,0,3849,3846,1,0,0,0,3849,3847,1,0,0,0,3849,3848,1,0,0,0,3850,3851,1, - 0,0,0,3851,3852,3,500,250,0,3852,759,1,0,0,0,3853,3854,3,560,280,0,3854, - 3855,5,152,0,0,3855,3856,3,268,134,0,3856,761,1,0,0,0,3857,3858,3,810,405, - 0,3858,3859,5,152,0,0,3859,3860,3,824,412,0,3860,763,1,0,0,0,3861,3862, - 5,55,0,0,3862,3863,3,824,412,0,3863,765,1,0,0,0,3864,3866,5,150,0,0,3865, - 3867,3,496,248,0,3866,3865,1,0,0,0,3866,3867,1,0,0,0,3867,3869,1,0,0,0, - 3868,3864,1,0,0,0,3868,3869,1,0,0,0,3869,3870,1,0,0,0,3870,3871,5,69,0, - 0,3871,3872,3,340,170,0,3872,3873,3,810,405,0,3873,3874,5,152,0,0,3874, - 3875,3,824,412,0,3875,3876,3,500,250,0,3876,767,1,0,0,0,3877,3878,3,536, - 268,0,3878,3879,5,142,0,0,3879,3880,5,45,0,0,3880,3881,3,462,231,0,3881, - 3882,3,770,385,0,3882,769,1,0,0,0,3883,3896,5,205,0,0,3884,3886,5,116,0, - 0,3885,3884,1,0,0,0,3885,3886,1,0,0,0,3886,3887,1,0,0,0,3887,3891,5,214, - 0,0,3888,3890,3,772,386,0,3889,3888,1,0,0,0,3890,3893,1,0,0,0,3891,3889, - 1,0,0,0,3891,3892,1,0,0,0,3892,3894,1,0,0,0,3893,3891,1,0,0,0,3894,3896, - 5,216,0,0,3895,3883,1,0,0,0,3895,3885,1,0,0,0,3896,771,1,0,0,0,3897,3919, - 3,660,330,0,3898,3900,3,556,278,0,3899,3898,1,0,0,0,3899,3900,1,0,0,0,3900, - 3901,1,0,0,0,3901,3905,3,480,240,0,3902,3904,3,794,397,0,3903,3902,1,0, - 0,0,3904,3907,1,0,0,0,3905,3903,1,0,0,0,3905,3906,1,0,0,0,3906,3919,1,0, - 0,0,3907,3905,1,0,0,0,3908,3919,3,792,396,0,3909,3913,3,774,387,0,3910, - 3912,3,780,390,0,3911,3910,1,0,0,0,3912,3915,1,0,0,0,3913,3911,1,0,0,0, - 3913,3914,1,0,0,0,3914,3919,1,0,0,0,3915,3913,1,0,0,0,3916,3919,3,776,388, - 0,3917,3919,3,778,389,0,3918,3897,1,0,0,0,3918,3899,1,0,0,0,3918,3908,1, - 0,0,0,3918,3909,1,0,0,0,3918,3916,1,0,0,0,3918,3917,1,0,0,0,3919,773,1, - 0,0,0,3920,3921,3,78,39,0,3921,3922,5,57,0,0,3922,3923,3,782,391,0,3923, - 775,1,0,0,0,3924,3925,3,78,39,0,3925,3926,5,53,0,0,3926,3927,3,782,391, - 0,3927,777,1,0,0,0,3928,3929,3,78,39,0,3929,3930,5,61,0,0,3930,3931,3,782, - 391,0,3931,779,1,0,0,0,3932,3936,3,78,39,0,3933,3937,3,762,381,0,3934,3935, - 5,152,0,0,3935,3937,3,824,412,0,3936,3933,1,0,0,0,3936,3934,1,0,0,0,3937, - 3938,1,0,0,0,3938,3939,5,205,0,0,3939,781,1,0,0,0,3940,3941,3,976,488,0, - 3941,3942,5,205,0,0,3942,3948,1,0,0,0,3943,3948,3,784,392,0,3944,3948,3, - 786,393,0,3945,3948,3,788,394,0,3946,3948,3,790,395,0,3947,3940,1,0,0,0, - 3947,3943,1,0,0,0,3947,3944,1,0,0,0,3947,3945,1,0,0,0,3947,3946,1,0,0,0, - 3948,783,1,0,0,0,3949,3950,3,678,339,0,3950,3951,3,656,328,0,3951,785,1, - 0,0,0,3952,3953,3,700,350,0,3953,3954,3,656,328,0,3954,787,1,0,0,0,3955, - 3956,3,716,358,0,3956,3957,3,656,328,0,3957,789,1,0,0,0,3958,3959,3,730, - 365,0,3959,3960,3,656,328,0,3960,791,1,0,0,0,3961,3962,3,78,39,0,3962,3963, - 3,802,401,0,3963,793,1,0,0,0,3964,3965,3,78,39,0,3965,3966,3,804,402,0, - 3966,795,1,0,0,0,3967,3968,3,544,272,0,3968,3969,5,142,0,0,3969,3970,3, - 674,337,0,3970,3971,3,798,399,0,3971,797,1,0,0,0,3972,3985,5,205,0,0,3973, - 3975,5,116,0,0,3974,3973,1,0,0,0,3974,3975,1,0,0,0,3975,3976,1,0,0,0,3976, - 3980,5,214,0,0,3977,3979,3,772,386,0,3978,3977,1,0,0,0,3979,3982,1,0,0, - 0,3980,3978,1,0,0,0,3980,3981,1,0,0,0,3981,3983,1,0,0,0,3982,3980,1,0,0, - 0,3983,3985,5,216,0,0,3984,3972,1,0,0,0,3984,3974,1,0,0,0,3985,799,1,0, - 0,0,3986,3987,3,544,272,0,3987,3996,5,60,0,0,3988,3990,3,228,114,0,3989, - 3991,3,198,99,0,3990,3989,1,0,0,0,3990,3991,1,0,0,0,3991,3997,1,0,0,0,3992, - 3994,5,142,0,0,3993,3995,3,496,248,0,3994,3993,1,0,0,0,3994,3995,1,0,0, - 0,3995,3997,1,0,0,0,3996,3988,1,0,0,0,3996,3992,1,0,0,0,3997,3999,1,0,0, - 0,3998,4000,3,394,197,0,3999,3998,1,0,0,0,3999,4000,1,0,0,0,4000,4001,1, - 0,0,0,4001,4002,3,798,399,0,4002,801,1,0,0,0,4003,4008,5,155,0,0,4004,4006, - 3,496,248,0,4005,4004,1,0,0,0,4005,4006,1,0,0,0,4006,4007,1,0,0,0,4007, - 4009,5,69,0,0,4008,4005,1,0,0,0,4008,4009,1,0,0,0,4009,4010,1,0,0,0,4010, - 4011,3,340,170,0,4011,4015,3,726,363,0,4012,4013,3,726,363,0,4013,4014, - 3,806,403,0,4014,4016,1,0,0,0,4015,4012,1,0,0,0,4015,4016,1,0,0,0,4016, - 4018,1,0,0,0,4017,4019,3,810,405,0,4018,4017,1,0,0,0,4018,4019,1,0,0,0, - 4019,4021,1,0,0,0,4020,4022,3,812,406,0,4021,4020,1,0,0,0,4021,4022,1,0, - 0,0,4022,4023,1,0,0,0,4023,4024,5,152,0,0,4024,4025,3,824,412,0,4025,4026, - 3,656,328,0,4026,803,1,0,0,0,4027,4052,3,726,363,0,4028,4032,5,155,0,0, - 4029,4030,3,726,363,0,4030,4031,3,806,403,0,4031,4033,1,0,0,0,4032,4029, - 1,0,0,0,4032,4033,1,0,0,0,4033,4035,1,0,0,0,4034,4036,3,810,405,0,4035, - 4034,1,0,0,0,4035,4036,1,0,0,0,4036,4038,1,0,0,0,4037,4039,3,812,406,0, - 4038,4037,1,0,0,0,4038,4039,1,0,0,0,4039,4053,1,0,0,0,4040,4041,3,726,363, - 0,4041,4043,3,806,403,0,4042,4044,3,810,405,0,4043,4042,1,0,0,0,4043,4044, - 1,0,0,0,4044,4046,1,0,0,0,4045,4047,3,812,406,0,4046,4045,1,0,0,0,4046, - 4047,1,0,0,0,4047,4053,1,0,0,0,4048,4050,3,810,405,0,4049,4051,3,812,406, - 0,4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4053,1,0,0,0,4052,4028,1,0,0, - 0,4052,4040,1,0,0,0,4052,4048,1,0,0,0,4052,4053,1,0,0,0,4053,4054,1,0,0, - 0,4054,4055,5,152,0,0,4055,4056,3,824,412,0,4056,4057,3,656,328,0,4057, - 805,1,0,0,0,4058,4059,5,3,0,0,4059,4060,3,808,404,0,4060,807,1,0,0,0,4061, - 4062,3,702,351,0,4062,809,1,0,0,0,4063,4064,5,77,0,0,4064,4065,3,0,0,0, - 4065,811,1,0,0,0,4066,4067,5,53,0,0,4067,4068,3,814,407,0,4068,813,1,0, - 0,0,4069,4075,3,976,488,0,4070,4075,3,816,408,0,4071,4075,3,818,409,0,4072, - 4075,3,820,410,0,4073,4075,3,822,411,0,4074,4069,1,0,0,0,4074,4070,1,0, - 0,0,4074,4071,1,0,0,0,4074,4072,1,0,0,0,4074,4073,1,0,0,0,4075,815,1,0, - 0,0,4076,4085,3,678,339,0,4077,4081,5,214,0,0,4078,4080,3,658,329,0,4079, - 4078,1,0,0,0,4080,4083,1,0,0,0,4081,4079,1,0,0,0,4081,4082,1,0,0,0,4082, - 4084,1,0,0,0,4083,4081,1,0,0,0,4084,4086,5,216,0,0,4085,4077,1,0,0,0,4085, - 4086,1,0,0,0,4086,817,1,0,0,0,4087,4096,3,700,350,0,4088,4092,5,214,0,0, - 4089,4091,3,658,329,0,4090,4089,1,0,0,0,4091,4094,1,0,0,0,4092,4090,1,0, - 0,0,4092,4093,1,0,0,0,4093,4095,1,0,0,0,4094,4092,1,0,0,0,4095,4097,5,216, - 0,0,4096,4088,1,0,0,0,4096,4097,1,0,0,0,4097,819,1,0,0,0,4098,4107,3,716, - 358,0,4099,4103,5,214,0,0,4100,4102,3,658,329,0,4101,4100,1,0,0,0,4102, - 4105,1,0,0,0,4103,4101,1,0,0,0,4103,4104,1,0,0,0,4104,4106,1,0,0,0,4105, - 4103,1,0,0,0,4106,4108,5,216,0,0,4107,4099,1,0,0,0,4107,4108,1,0,0,0,4108, - 821,1,0,0,0,4109,4118,3,730,365,0,4110,4114,5,214,0,0,4111,4113,3,658,329, - 0,4112,4111,1,0,0,0,4113,4116,1,0,0,0,4114,4112,1,0,0,0,4114,4115,1,0,0, - 0,4115,4117,1,0,0,0,4116,4114,1,0,0,0,4117,4119,5,216,0,0,4118,4110,1,0, - 0,0,4118,4119,1,0,0,0,4119,823,1,0,0,0,4120,4121,3,826,413,0,4121,825,1, - 0,0,0,4122,4123,3,828,414,0,4123,4124,3,268,134,0,4124,827,1,0,0,0,4125, - 4126,3,978,489,0,4126,829,1,0,0,0,4127,4128,3,536,268,0,4128,4129,5,25, - 0,0,4129,4130,5,45,0,0,4130,4131,3,462,231,0,4131,4132,3,834,417,0,4132, - 831,1,0,0,0,4133,4134,3,544,272,0,4134,4135,5,25,0,0,4135,4136,3,674,337, - 0,4136,4137,3,834,417,0,4137,833,1,0,0,0,4138,4144,5,205,0,0,4139,4140, - 5,214,0,0,4140,4141,3,836,418,0,4141,4142,5,216,0,0,4142,4144,1,0,0,0,4143, - 4138,1,0,0,0,4143,4139,1,0,0,0,4144,835,1,0,0,0,4145,4147,3,838,419,0,4146, - 4145,1,0,0,0,4147,4150,1,0,0,0,4148,4146,1,0,0,0,4148,4149,1,0,0,0,4149, - 4152,1,0,0,0,4150,4148,1,0,0,0,4151,4153,3,296,148,0,4152,4151,1,0,0,0, - 4152,4153,1,0,0,0,4153,837,1,0,0,0,4154,4157,3,658,329,0,4155,4157,3,840, - 420,0,4156,4154,1,0,0,0,4156,4155,1,0,0,0,4157,839,1,0,0,0,4158,4159,3, - 78,39,0,4159,4160,5,134,0,0,4160,4161,3,452,226,0,4161,841,1,0,0,0,4162, - 4163,3,536,268,0,4163,4164,5,41,0,0,4164,4165,5,45,0,0,4165,4166,3,462, - 231,0,4166,4167,3,834,417,0,4167,843,1,0,0,0,4168,4169,3,544,272,0,4169, - 4170,5,41,0,0,4170,4171,3,848,424,0,4171,4172,3,834,417,0,4172,845,1,0, - 0,0,4173,4174,3,544,272,0,4174,4176,5,14,0,0,4175,4177,5,107,0,0,4176,4175, - 1,0,0,0,4176,4177,1,0,0,0,4177,4184,1,0,0,0,4178,4180,3,228,114,0,4179, - 4181,3,198,99,0,4180,4179,1,0,0,0,4180,4181,1,0,0,0,4181,4185,1,0,0,0,4182, - 4183,5,41,0,0,4183,4185,3,848,424,0,4184,4178,1,0,0,0,4184,4182,1,0,0,0, - 4185,4186,1,0,0,0,4186,4187,3,834,417,0,4187,847,1,0,0,0,4188,4190,3,496, - 248,0,4189,4188,1,0,0,0,4189,4190,1,0,0,0,4190,4192,1,0,0,0,4191,4193,3, - 394,197,0,4192,4191,1,0,0,0,4192,4193,1,0,0,0,4193,849,1,0,0,0,4194,4195, - 3,536,268,0,4195,4196,5,133,0,0,4196,4197,5,45,0,0,4197,4198,3,462,231, - 0,4198,4199,3,852,426,0,4199,851,1,0,0,0,4200,4210,5,205,0,0,4201,4205, - 5,214,0,0,4202,4204,3,854,427,0,4203,4202,1,0,0,0,4204,4207,1,0,0,0,4205, - 4203,1,0,0,0,4205,4206,1,0,0,0,4206,4208,1,0,0,0,4207,4205,1,0,0,0,4208, - 4210,5,216,0,0,4209,4200,1,0,0,0,4209,4201,1,0,0,0,4210,853,1,0,0,0,4211, - 4219,3,466,233,0,4212,4219,3,856,428,0,4213,4219,3,860,430,0,4214,4219, - 3,866,433,0,4215,4219,3,914,457,0,4216,4219,3,870,435,0,4217,4219,3,874, - 437,0,4218,4211,1,0,0,0,4218,4212,1,0,0,0,4218,4213,1,0,0,0,4218,4214,1, - 0,0,0,4218,4215,1,0,0,0,4218,4216,1,0,0,0,4218,4217,1,0,0,0,4219,855,1, - 0,0,0,4220,4221,3,78,39,0,4221,4222,3,858,429,0,4222,857,1,0,0,0,4223,4227, - 5,146,0,0,4224,4226,3,488,244,0,4225,4224,1,0,0,0,4226,4229,1,0,0,0,4227, - 4225,1,0,0,0,4227,4228,1,0,0,0,4228,4230,1,0,0,0,4229,4227,1,0,0,0,4230, - 4231,3,494,247,0,4231,859,1,0,0,0,4232,4233,3,78,39,0,4233,4234,3,862,431, - 0,4234,4235,3,864,432,0,4235,861,1,0,0,0,4236,4237,7,26,0,0,4237,863,1, - 0,0,0,4238,4240,3,228,114,0,4239,4241,3,198,99,0,4240,4239,1,0,0,0,4240, - 4241,1,0,0,0,4241,4242,1,0,0,0,4242,4243,3,852,426,0,4243,4262,1,0,0,0, - 4244,4246,3,488,244,0,4245,4244,1,0,0,0,4246,4249,1,0,0,0,4247,4245,1,0, - 0,0,4247,4248,1,0,0,0,4248,4250,1,0,0,0,4249,4247,1,0,0,0,4250,4257,5,41, - 0,0,4251,4253,3,488,244,0,4252,4251,1,0,0,0,4253,4254,1,0,0,0,4254,4252, - 1,0,0,0,4254,4255,1,0,0,0,4255,4257,1,0,0,0,4256,4247,1,0,0,0,4256,4252, - 1,0,0,0,4257,4258,1,0,0,0,4258,4259,3,848,424,0,4259,4260,3,834,417,0,4260, - 4262,1,0,0,0,4261,4238,1,0,0,0,4261,4256,1,0,0,0,4262,865,1,0,0,0,4263, - 4264,3,78,39,0,4264,4265,5,73,0,0,4265,4266,3,868,434,0,4266,867,1,0,0, - 0,4267,4269,3,228,114,0,4268,4270,3,198,99,0,4269,4268,1,0,0,0,4269,4270, - 1,0,0,0,4270,4271,1,0,0,0,4271,4272,3,834,417,0,4272,4291,1,0,0,0,4273, - 4275,3,488,244,0,4274,4273,1,0,0,0,4275,4278,1,0,0,0,4276,4274,1,0,0,0, - 4276,4277,1,0,0,0,4277,4279,1,0,0,0,4278,4276,1,0,0,0,4279,4286,5,32,0, - 0,4280,4282,3,488,244,0,4281,4280,1,0,0,0,4282,4283,1,0,0,0,4283,4281,1, - 0,0,0,4283,4284,1,0,0,0,4284,4286,1,0,0,0,4285,4276,1,0,0,0,4285,4281,1, - 0,0,0,4286,4287,1,0,0,0,4287,4288,3,974,487,0,4288,4289,3,834,417,0,4289, - 4291,1,0,0,0,4290,4267,1,0,0,0,4290,4285,1,0,0,0,4291,869,1,0,0,0,4292, - 4293,3,78,39,0,4293,4294,3,872,436,0,4294,871,1,0,0,0,4295,4299,5,5,0,0, - 4296,4298,3,488,244,0,4297,4296,1,0,0,0,4298,4301,1,0,0,0,4299,4297,1,0, - 0,0,4299,4300,1,0,0,0,4300,4302,1,0,0,0,4301,4299,1,0,0,0,4302,4303,3,494, - 247,0,4303,873,1,0,0,0,4304,4305,3,78,39,0,4305,4306,3,876,438,0,4306,875, - 1,0,0,0,4307,4311,5,140,0,0,4308,4310,3,488,244,0,4309,4308,1,0,0,0,4310, - 4313,1,0,0,0,4311,4309,1,0,0,0,4311,4312,1,0,0,0,4312,4314,1,0,0,0,4313, - 4311,1,0,0,0,4314,4315,3,494,247,0,4315,877,1,0,0,0,4316,4317,3,544,272, - 0,4317,4318,5,133,0,0,4318,4319,3,848,424,0,4319,4320,3,852,426,0,4320, - 879,1,0,0,0,4321,4326,3,544,272,0,4322,4324,5,14,0,0,4323,4325,5,107,0, - 0,4324,4323,1,0,0,0,4324,4325,1,0,0,0,4325,4327,1,0,0,0,4326,4322,1,0,0, - 0,4326,4327,1,0,0,0,4327,4328,1,0,0,0,4328,4337,5,135,0,0,4329,4331,3,228, - 114,0,4330,4332,3,198,99,0,4331,4330,1,0,0,0,4331,4332,1,0,0,0,4332,4338, - 1,0,0,0,4333,4335,5,133,0,0,4334,4336,3,496,248,0,4335,4334,1,0,0,0,4335, - 4336,1,0,0,0,4336,4338,1,0,0,0,4337,4329,1,0,0,0,4337,4333,1,0,0,0,4338, - 4340,1,0,0,0,4339,4341,3,394,197,0,4340,4339,1,0,0,0,4340,4341,1,0,0,0, - 4341,4344,1,0,0,0,4342,4343,5,24,0,0,4343,4345,3,882,441,0,4344,4342,1, - 0,0,0,4344,4345,1,0,0,0,4345,4346,1,0,0,0,4346,4347,3,852,426,0,4347,881, - 1,0,0,0,4348,4349,3,884,442,0,4349,883,1,0,0,0,4350,4351,3,886,443,0,4351, - 885,1,0,0,0,4352,4353,3,888,444,0,4353,887,1,0,0,0,4354,4355,3,340,170, - 0,4355,889,1,0,0,0,4356,4357,3,536,268,0,4357,4358,5,32,0,0,4358,4359,5, - 45,0,0,4359,4360,3,462,231,0,4360,4361,3,852,426,0,4361,891,1,0,0,0,4362, - 4363,3,544,272,0,4363,4364,5,32,0,0,4364,4365,3,848,424,0,4365,4366,3,852, - 426,0,4366,893,1,0,0,0,4367,4368,3,536,268,0,4368,4369,5,26,0,0,4369,4370, - 5,45,0,0,4370,4371,3,462,231,0,4371,4372,3,898,449,0,4372,895,1,0,0,0,4373, - 4374,3,544,272,0,4374,4375,5,26,0,0,4375,4376,3,848,424,0,4376,4377,3,898, - 449,0,4377,897,1,0,0,0,4378,4391,5,205,0,0,4379,4383,5,214,0,0,4380,4382, - 3,900,450,0,4381,4380,1,0,0,0,4382,4385,1,0,0,0,4383,4381,1,0,0,0,4383, - 4384,1,0,0,0,4384,4387,1,0,0,0,4385,4383,1,0,0,0,4386,4388,3,296,148,0, - 4387,4386,1,0,0,0,4387,4388,1,0,0,0,4388,4389,1,0,0,0,4389,4391,5,216,0, - 0,4390,4378,1,0,0,0,4390,4379,1,0,0,0,4391,899,1,0,0,0,4392,4398,3,658, - 329,0,4393,4398,3,840,420,0,4394,4398,3,856,428,0,4395,4398,3,870,435,0, - 4396,4398,3,902,451,0,4397,4392,1,0,0,0,4397,4393,1,0,0,0,4397,4394,1,0, - 0,0,4397,4395,1,0,0,0,4397,4396,1,0,0,0,4398,901,1,0,0,0,4399,4400,3,78, - 39,0,4400,4401,5,109,0,0,4401,4402,3,904,452,0,4402,903,1,0,0,0,4403,4405, - 3,488,244,0,4404,4403,1,0,0,0,4405,4408,1,0,0,0,4406,4404,1,0,0,0,4406, - 4407,1,0,0,0,4407,4409,1,0,0,0,4408,4406,1,0,0,0,4409,4410,3,848,424,0, - 4410,4411,3,852,426,0,4411,905,1,0,0,0,4412,4413,3,536,268,0,4413,4414, - 5,11,0,0,4414,4415,5,45,0,0,4415,4416,3,462,231,0,4416,4417,3,898,449,0, - 4417,907,1,0,0,0,4418,4419,3,544,272,0,4419,4420,5,11,0,0,4420,4421,3,848, - 424,0,4421,4422,3,898,449,0,4422,909,1,0,0,0,4423,4424,3,536,268,0,4424, - 4425,5,166,0,0,4425,4426,5,45,0,0,4426,4427,3,462,231,0,4427,4428,3,898, - 449,0,4428,911,1,0,0,0,4429,4430,3,544,272,0,4430,4431,5,166,0,0,4431,4432, - 3,848,424,0,4432,4433,3,898,449,0,4433,913,1,0,0,0,4434,4435,3,78,39,0, - 4435,4436,5,167,0,0,4436,4437,3,916,458,0,4437,915,1,0,0,0,4438,4442,3, - 228,114,0,4439,4441,3,202,101,0,4440,4439,1,0,0,0,4441,4444,1,0,0,0,4442, - 4440,1,0,0,0,4442,4443,1,0,0,0,4443,4445,1,0,0,0,4444,4442,1,0,0,0,4445, - 4446,3,852,426,0,4446,4465,1,0,0,0,4447,4449,3,488,244,0,4448,4447,1,0, - 0,0,4449,4452,1,0,0,0,4450,4448,1,0,0,0,4450,4451,1,0,0,0,4451,4453,1,0, - 0,0,4452,4450,1,0,0,0,4453,4460,5,133,0,0,4454,4456,3,488,244,0,4455,4454, - 1,0,0,0,4456,4457,1,0,0,0,4457,4455,1,0,0,0,4457,4458,1,0,0,0,4458,4460, - 1,0,0,0,4459,4450,1,0,0,0,4459,4455,1,0,0,0,4460,4461,1,0,0,0,4461,4462, - 3,848,424,0,4462,4463,3,852,426,0,4463,4465,1,0,0,0,4464,4438,1,0,0,0,4464, - 4459,1,0,0,0,4465,917,1,0,0,0,4466,4467,3,536,268,0,4467,4468,5,162,0,0, - 4468,4469,5,26,0,0,4469,4470,5,45,0,0,4470,4471,3,462,231,0,4471,4472,3, - 898,449,0,4472,919,1,0,0,0,4473,4474,3,544,272,0,4474,4475,5,162,0,0,4475, - 4476,5,26,0,0,4476,4477,3,848,424,0,4477,4478,3,898,449,0,4478,921,1,0, - 0,0,4479,4480,3,544,272,0,4480,4490,5,81,0,0,4481,4483,3,228,114,0,4482, - 4484,3,198,99,0,4483,4482,1,0,0,0,4483,4484,1,0,0,0,4484,4491,1,0,0,0,4485, - 4486,5,162,0,0,4486,4488,5,26,0,0,4487,4489,3,496,248,0,4488,4487,1,0,0, - 0,4488,4489,1,0,0,0,4489,4491,1,0,0,0,4490,4481,1,0,0,0,4490,4485,1,0,0, - 0,4491,4493,1,0,0,0,4492,4494,3,394,197,0,4493,4492,1,0,0,0,4493,4494,1, - 0,0,0,4494,4495,1,0,0,0,4495,4496,3,898,449,0,4496,923,1,0,0,0,4497,4498, - 3,536,268,0,4498,4499,5,169,0,0,4499,4500,5,45,0,0,4500,4501,3,462,231, - 0,4501,4502,3,926,463,0,4502,925,1,0,0,0,4503,4513,5,205,0,0,4504,4508, - 5,214,0,0,4505,4507,3,928,464,0,4506,4505,1,0,0,0,4507,4510,1,0,0,0,4508, - 4506,1,0,0,0,4508,4509,1,0,0,0,4509,4511,1,0,0,0,4510,4508,1,0,0,0,4511, - 4513,5,216,0,0,4512,4503,1,0,0,0,4512,4504,1,0,0,0,4513,927,1,0,0,0,4514, - 4518,3,466,233,0,4515,4518,3,440,220,0,4516,4518,3,930,465,0,4517,4514, - 1,0,0,0,4517,4515,1,0,0,0,4517,4516,1,0,0,0,4518,929,1,0,0,0,4519,4520, - 3,78,39,0,4520,4521,5,129,0,0,4521,4522,3,932,466,0,4522,931,1,0,0,0,4523, - 4525,3,228,114,0,4524,4526,3,198,99,0,4525,4524,1,0,0,0,4525,4526,1,0,0, - 0,4526,4527,1,0,0,0,4527,4528,3,500,250,0,4528,4545,1,0,0,0,4529,4531,3, - 488,244,0,4530,4529,1,0,0,0,4531,4534,1,0,0,0,4532,4530,1,0,0,0,4532,4533, - 1,0,0,0,4533,4535,1,0,0,0,4534,4532,1,0,0,0,4535,4542,5,130,0,0,4536,4538, - 3,488,244,0,4537,4536,1,0,0,0,4538,4539,1,0,0,0,4539,4537,1,0,0,0,4539, - 4540,1,0,0,0,4540,4542,1,0,0,0,4541,4532,1,0,0,0,4541,4537,1,0,0,0,4542, - 4543,1,0,0,0,4543,4545,3,494,247,0,4544,4523,1,0,0,0,4544,4541,1,0,0,0, - 4545,933,1,0,0,0,4546,4547,3,544,272,0,4547,4549,5,169,0,0,4548,4550,3, - 496,248,0,4549,4548,1,0,0,0,4549,4550,1,0,0,0,4550,4552,1,0,0,0,4551,4553, - 3,394,197,0,4552,4551,1,0,0,0,4552,4553,1,0,0,0,4553,4554,1,0,0,0,4554, - 4555,3,936,468,0,4555,935,1,0,0,0,4556,4566,5,205,0,0,4557,4561,5,214,0, - 0,4558,4560,3,938,469,0,4559,4558,1,0,0,0,4560,4563,1,0,0,0,4561,4559,1, - 0,0,0,4561,4562,1,0,0,0,4562,4564,1,0,0,0,4563,4561,1,0,0,0,4564,4566,5, - 216,0,0,4565,4556,1,0,0,0,4565,4557,1,0,0,0,4566,937,1,0,0,0,4567,4572, - 3,466,233,0,4568,4572,3,440,220,0,4569,4572,3,930,465,0,4570,4572,3,940, - 470,0,4571,4567,1,0,0,0,4571,4568,1,0,0,0,4571,4569,1,0,0,0,4571,4570,1, - 0,0,0,4572,939,1,0,0,0,4573,4576,5,62,0,0,4574,4577,3,942,471,0,4575,4577, - 3,944,472,0,4576,4574,1,0,0,0,4576,4575,1,0,0,0,4577,4578,1,0,0,0,4578, - 4579,3,48,24,0,4579,941,1,0,0,0,4580,4581,3,96,48,0,4581,943,1,0,0,0,4582, - 4583,3,98,49,0,4583,945,1,0,0,0,4584,4585,3,536,268,0,4585,4586,5,170,0, - 0,4586,4587,5,45,0,0,4587,4588,3,462,231,0,4588,4589,3,852,426,0,4589,947, - 1,0,0,0,4590,4591,3,544,272,0,4591,4592,5,170,0,0,4592,4593,3,848,424,0, - 4593,4594,3,852,426,0,4594,949,1,0,0,0,4595,4596,3,536,268,0,4596,4597, - 5,130,0,0,4597,4598,5,45,0,0,4598,4599,3,460,230,0,4599,951,1,0,0,0,4600, - 4601,3,544,272,0,4601,4602,5,130,0,0,4602,4603,3,494,247,0,4603,953,1,0, - 0,0,4604,4606,5,2,0,0,4605,4604,1,0,0,0,4605,4606,1,0,0,0,4606,4610,1,0, - 0,0,4607,4609,3,456,228,0,4608,4607,1,0,0,0,4609,4612,1,0,0,0,4610,4608, - 1,0,0,0,4610,4611,1,0,0,0,4611,4613,1,0,0,0,4612,4610,1,0,0,0,4613,4614, - 5,102,0,0,4614,4615,5,45,0,0,4615,4616,3,460,230,0,4616,955,1,0,0,0,4617, - 4618,3,222,111,0,4618,957,1,0,0,0,4619,4621,3,488,244,0,4620,4619,1,0,0, - 0,4621,4624,1,0,0,0,4622,4620,1,0,0,0,4622,4623,1,0,0,0,4623,4625,1,0,0, - 0,4624,4622,1,0,0,0,4625,4626,7,22,0,0,4626,4636,3,960,480,0,4627,4628, - 5,1,0,0,4628,4633,3,56,28,0,4629,4630,5,200,0,0,4630,4632,3,56,28,0,4631, - 4629,1,0,0,0,4632,4635,1,0,0,0,4633,4631,1,0,0,0,4633,4634,1,0,0,0,4634, - 4637,1,0,0,0,4635,4633,1,0,0,0,4636,4627,1,0,0,0,4636,4637,1,0,0,0,4637, - 4638,1,0,0,0,4638,4639,3,424,212,0,4639,959,1,0,0,0,4640,4642,3,46,23,0, - 4641,4640,1,0,0,0,4641,4642,1,0,0,0,4642,4646,1,0,0,0,4643,4647,5,204,0, - 0,4644,4645,5,158,0,0,4645,4647,5,24,0,0,4646,4643,1,0,0,0,4646,4644,1, - 0,0,0,4647,4649,1,0,0,0,4648,4641,1,0,0,0,4648,4649,1,0,0,0,4649,4650,1, - 0,0,0,4650,4651,3,222,111,0,4651,961,1,0,0,0,4652,4653,3,964,482,0,4653, - 963,1,0,0,0,4654,4656,5,127,0,0,4655,4654,1,0,0,0,4655,4656,1,0,0,0,4656, - 4658,1,0,0,0,4657,4659,7,19,0,0,4658,4657,1,0,0,0,4658,4659,1,0,0,0,4659, - 4660,1,0,0,0,4660,4662,3,234,117,0,4661,4663,3,198,99,0,4662,4661,1,0,0, - 0,4662,4663,1,0,0,0,4663,4665,1,0,0,0,4664,4666,3,394,197,0,4665,4664,1, - 0,0,0,4665,4666,1,0,0,0,4666,4667,1,0,0,0,4667,4668,3,424,212,0,4668,965, - 1,0,0,0,4669,4671,3,454,227,0,4670,4669,1,0,0,0,4670,4671,1,0,0,0,4671, - 4673,1,0,0,0,4672,4674,3,456,228,0,4673,4672,1,0,0,0,4674,4675,1,0,0,0, - 4675,4673,1,0,0,0,4675,4676,1,0,0,0,4676,4677,1,0,0,0,4677,4678,5,45,0, - 0,4678,4679,3,460,230,0,4679,967,1,0,0,0,4680,4682,3,490,245,0,4681,4683, - 3,488,244,0,4682,4681,1,0,0,0,4683,4684,1,0,0,0,4684,4682,1,0,0,0,4684, - 4685,1,0,0,0,4685,4686,1,0,0,0,4686,4687,3,494,247,0,4687,969,1,0,0,0,4688, - 4691,3,96,48,0,4689,4691,3,972,486,0,4690,4688,1,0,0,0,4690,4689,1,0,0, - 0,4691,971,1,0,0,0,4692,4693,3,90,45,0,4693,4694,5,183,0,0,4694,4697,5, - 198,0,0,4695,4696,5,183,0,0,4696,4698,5,179,0,0,4697,4695,1,0,0,0,4697, - 4698,1,0,0,0,4698,973,1,0,0,0,4699,4701,3,496,248,0,4700,4699,1,0,0,0,4700, - 4701,1,0,0,0,4701,4703,1,0,0,0,4702,4704,3,394,197,0,4703,4702,1,0,0,0, - 4703,4704,1,0,0,0,4704,975,1,0,0,0,4705,4706,1,0,0,0,4706,977,1,0,0,0,4707, - 4708,1,0,0,0,4708,979,1,0,0,0,4709,4710,1,0,0,0,4710,981,1,0,0,0,4711,4712, - 1,0,0,0,4712,983,1,0,0,0,4713,4714,5,218,0,0,4714,985,1,0,0,0,4715,4716, - 5,218,0,0,4716,987,1,0,0,0,4717,4718,1,0,0,0,4718,989,1,0,0,0,518,1005, - 1061,1068,1084,1086,1088,1098,1107,1113,1116,1121,1143,1152,1160,1172,1200, - 1207,1215,1219,1223,1227,1232,1237,1240,1247,1256,1264,1271,1281,1285,1293, - 1296,1298,1302,1308,1312,1318,1320,1329,1337,1345,1352,1356,1361,1364,1370, - 1384,1387,1395,1402,1408,1412,1419,1424,1431,1434,1440,1446,1448,1456,1484, - 1496,1504,1509,1513,1516,1519,1523,1525,1530,1539,1549,1558,1567,1576,1585, - 1593,1597,1603,1607,1609,1624,1632,1637,1639,1647,1656,1666,1671,1673,1681, - 1690,1700,1708,1716,1724,1729,1744,1747,1750,1754,1759,1768,1773,1775,1788, - 1791,1795,1799,1802,1807,1812,1815,1818,1821,1824,1830,1835,1845,1847,1852, - 1857,1861,1866,1873,1876,1882,1890,1904,1910,1913,1918,1925,1928,1933,1937, - 1939,1943,1947,1949,1951,1958,1965,1973,1982,1999,2007,2009,2016,2023,2030, - 2035,2037,2050,2058,2066,2071,2073,2086,2095,2097,2104,2110,2112,2120,2129, - 2139,2144,2147,2185,2188,2191,2197,2200,2205,2207,2214,2224,2232,2237,2256, - 2259,2262,2268,2270,2283,2286,2289,2295,2297,2308,2322,2326,2328,2332,2345, - 2358,2365,2369,2414,2419,2436,2454,2459,2479,2483,2490,2493,2500,2503,2507, - 2514,2516,2521,2525,2529,2533,2537,2539,2544,2547,2552,2559,2561,2570,2585, - 2587,2593,2597,2604,2617,2624,2635,2641,2648,2659,2662,2667,2672,2674,2683, - 2692,2694,2698,2704,2709,2712,2716,2719,2726,2733,2739,2747,2754,2758,2766, - 2769,2776,2785,2794,2799,2831,2835,2842,2847,2854,2857,2864,2868,2875,2880, - 2887,2890,2900,2922,2925,2928,2931,2935,2944,2950,2954,2960,2963,2966,2977, - 2990,3003,3007,3024,3042,3065,3073,3088,3100,3102,3106,3112,3121,3125,3130, - 3139,3145,3156,3159,3164,3176,3183,3189,3200,3204,3206,3218,3263,3266,3270, - 3274,3280,3294,3302,3304,3315,3317,3336,3340,3346,3351,3361,3369,3380,3383, - 3387,3390,3394,3408,3416,3421,3436,3440,3444,3457,3460,3464,3471,3477,3500, - 3507,3523,3527,3534,3538,3544,3548,3556,3559,3563,3585,3588,3597,3601,3603, - 3606,3616,3620,3624,3630,3634,3637,3642,3648,3655,3662,3669,3678,3686,3692, - 3695,3698,3708,3713,3718,3723,3728,3733,3739,3745,3760,3773,3779,3783,3794, - 3796,3804,3806,3812,3824,3831,3841,3844,3849,3866,3868,3885,3891,3895,3899, - 3905,3913,3918,3936,3947,3974,3980,3984,3990,3994,3996,3999,4005,4008,4015, - 4018,4021,4032,4035,4038,4043,4046,4050,4052,4074,4081,4085,4092,4096,4103, - 4107,4114,4118,4143,4148,4152,4156,4176,4180,4184,4189,4192,4205,4209,4218, - 4227,4240,4247,4254,4256,4261,4269,4276,4283,4285,4290,4299,4311,4324,4326, - 4331,4335,4337,4340,4344,4383,4387,4390,4397,4406,4442,4450,4457,4459,4464, - 4483,4488,4490,4493,4508,4512,4517,4525,4532,4539,4541,4544,4549,4552,4561, - 4565,4571,4576,4605,4610,4622,4633,4636,4641,4646,4648,4655,4658,4662,4665, - 4670,4675,4684,4690,4697,4700,4703]; - - private static __ATN: ATN; - public static get _ATN(): ATN { - if (!SysMLv2Parser.__ATN) { - SysMLv2Parser.__ATN = new ATNDeserializer().deserialize(SysMLv2Parser._serializedATN); - } - - return SysMLv2Parser.__ATN; - } - - - static DecisionsToDFA = SysMLv2Parser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); - -} - -export class OwnedExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IF(): TerminalNode { - return this.getToken(SysMLv2Parser.IF, 0); - } - public ownedExpression_list(): OwnedExpressionContext[] { - return this.getTypedRuleContexts(OwnedExpressionContext) as OwnedExpressionContext[]; - } - public ownedExpression(i: number): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, i) as OwnedExpressionContext; - } - public QUESTION(): TerminalNode { - return this.getToken(SysMLv2Parser.QUESTION, 0); - } - public ELSE(): TerminalNode { - return this.getToken(SysMLv2Parser.ELSE, 0); - } - public PLUS(): TerminalNode { - return this.getToken(SysMLv2Parser.PLUS, 0); - } - public MINUS(): TerminalNode { - return this.getToken(SysMLv2Parser.MINUS, 0); - } - public TILDE(): TerminalNode { - return this.getToken(SysMLv2Parser.TILDE, 0); - } - public NOT(): TerminalNode { - return this.getToken(SysMLv2Parser.NOT, 0); - } - public typeReference(): TypeReferenceContext { - return this.getTypedRuleContext(TypeReferenceContext, 0) as TypeReferenceContext; - } - public AT_SIGN(): TerminalNode { - return this.getToken(SysMLv2Parser.AT_SIGN, 0); - } - public AT_AT(): TerminalNode { - return this.getToken(SysMLv2Parser.AT_AT, 0); - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public baseExpression(): BaseExpressionContext { - return this.getTypedRuleContext(BaseExpressionContext, 0) as BaseExpressionContext; - } - public QUESTION_QUESTION(): TerminalNode { - return this.getToken(SysMLv2Parser.QUESTION_QUESTION, 0); - } - public IMPLIES(): TerminalNode { - return this.getToken(SysMLv2Parser.IMPLIES, 0); - } - public OR(): TerminalNode { - return this.getToken(SysMLv2Parser.OR, 0); - } - public AND(): TerminalNode { - return this.getToken(SysMLv2Parser.AND, 0); - } - public XOR(): TerminalNode { - return this.getToken(SysMLv2Parser.XOR, 0); - } - public PIPE(): TerminalNode { - return this.getToken(SysMLv2Parser.PIPE, 0); - } - public AMP(): TerminalNode { - return this.getToken(SysMLv2Parser.AMP, 0); - } - public EQ_EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.EQ_EQ, 0); - } - public BANG_EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.BANG_EQ, 0); - } - public EQ_EQ_EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.EQ_EQ_EQ, 0); - } - public BANG_EQ_EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.BANG_EQ_EQ, 0); - } - public LT(): TerminalNode { - return this.getToken(SysMLv2Parser.LT, 0); - } - public GT(): TerminalNode { - return this.getToken(SysMLv2Parser.GT, 0); - } - public LE(): TerminalNode { - return this.getToken(SysMLv2Parser.LE, 0); - } - public GE(): TerminalNode { - return this.getToken(SysMLv2Parser.GE, 0); - } - public DOT_DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT_DOT, 0); - } - public STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR, 0); - } - public SLASH(): TerminalNode { - return this.getToken(SysMLv2Parser.SLASH, 0); - } - public PERCENT(): TerminalNode { - return this.getToken(SysMLv2Parser.PERCENT, 0); - } - public STAR_STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR_STAR, 0); - } - public CARET(): TerminalNode { - return this.getToken(SysMLv2Parser.CARET, 0); - } - public ISTYPE(): TerminalNode { - return this.getToken(SysMLv2Parser.ISTYPE, 0); - } - public HASTYPE(): TerminalNode { - return this.getToken(SysMLv2Parser.HASTYPE, 0); - } - public AS(): TerminalNode { - return this.getToken(SysMLv2Parser.AS, 0); - } - public META(): TerminalNode { - return this.getToken(SysMLv2Parser.META, 0); - } - public LBRACK(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACK, 0); - } - public RBRACK(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACK, 0); - } - public sequenceExpressionList(): SequenceExpressionListContext { - return this.getTypedRuleContext(SequenceExpressionListContext, 0) as SequenceExpressionListContext; - } - public HASH(): TerminalNode { - return this.getToken(SysMLv2Parser.HASH, 0); - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public argumentList(): ArgumentListContext { - return this.getTypedRuleContext(ArgumentListContext, 0) as ArgumentListContext; - } - public DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public DOT_QUESTION(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT_QUESTION, 0); - } - public bodyExpression(): BodyExpressionContext { - return this.getTypedRuleContext(BodyExpressionContext, 0) as BodyExpressionContext; - } - public ARROW(): TerminalNode { - return this.getToken(SysMLv2Parser.ARROW, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedExpression) { - return visitor.visitOwnedExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeReferenceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeReference; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeReference) { - return visitor.visitTypeReference(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SequenceExpressionListContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression_list(): OwnedExpressionContext[] { - return this.getTypedRuleContexts(OwnedExpressionContext) as OwnedExpressionContext[]; - } - public ownedExpression(i: number): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, i) as OwnedExpressionContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sequenceExpressionList; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSequenceExpressionList) { - return visitor.visitSequenceExpressionList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BaseExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nullExpression(): NullExpressionContext { - return this.getTypedRuleContext(NullExpressionContext, 0) as NullExpressionContext; - } - public literalExpression(): LiteralExpressionContext { - return this.getTypedRuleContext(LiteralExpressionContext, 0) as LiteralExpressionContext; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public argumentList(): ArgumentListContext { - return this.getTypedRuleContext(ArgumentListContext, 0) as ArgumentListContext; - } - public DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, 0); - } - public METADATA(): TerminalNode { - return this.getToken(SysMLv2Parser.METADATA, 0); - } - public constructorExpression(): ConstructorExpressionContext { - return this.getTypedRuleContext(ConstructorExpressionContext, 0) as ConstructorExpressionContext; - } - public bodyExpression(): BodyExpressionContext { - return this.getTypedRuleContext(BodyExpressionContext, 0) as BodyExpressionContext; - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public sequenceExpressionList(): SequenceExpressionListContext { - return this.getTypedRuleContext(SequenceExpressionListContext, 0) as SequenceExpressionListContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_baseExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBaseExpression) { - return visitor.visitBaseExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NullExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public NULL(): TerminalNode { - return this.getToken(SysMLv2Parser.NULL, 0); - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nullExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNullExpression) { - return visitor.visitNullExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureReferenceExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureReferenceExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureReferenceExpression) { - return visitor.visitFeatureReferenceExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataAccessExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, 0); - } - public METADATA(): TerminalNode { - return this.getToken(SysMLv2Parser.METADATA, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataAccessExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataAccessExpression) { - return visitor.visitMetadataAccessExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InvocationExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public argumentList(): ArgumentListContext { - return this.getTypedRuleContext(ArgumentListContext, 0) as ArgumentListContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_invocationExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInvocationExpression) { - return visitor.visitInvocationExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstructorExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public NEW(): TerminalNode { - return this.getToken(SysMLv2Parser.NEW, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public argumentList(): ArgumentListContext { - return this.getTypedRuleContext(ArgumentListContext, 0) as ArgumentListContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_constructorExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConstructorExpression) { - return visitor.visitConstructorExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BodyExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public functionBodyPart(): FunctionBodyPartContext { - return this.getTypedRuleContext(FunctionBodyPartContext, 0) as FunctionBodyPartContext; - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bodyExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBodyExpression) { - return visitor.visitBodyExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ArgumentListContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public positionalArgumentList(): PositionalArgumentListContext { - return this.getTypedRuleContext(PositionalArgumentListContext, 0) as PositionalArgumentListContext; - } - public namedArgumentList(): NamedArgumentListContext { - return this.getTypedRuleContext(NamedArgumentListContext, 0) as NamedArgumentListContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_argumentList; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitArgumentList) { - return visitor.visitArgumentList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PositionalArgumentListContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression_list(): OwnedExpressionContext[] { - return this.getTypedRuleContexts(OwnedExpressionContext) as OwnedExpressionContext[]; - } - public ownedExpression(i: number): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, i) as OwnedExpressionContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_positionalArgumentList; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPositionalArgumentList) { - return visitor.visitPositionalArgumentList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamedArgumentListContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public namedArgument_list(): NamedArgumentContext[] { - return this.getTypedRuleContexts(NamedArgumentContext) as NamedArgumentContext[]; - } - public namedArgument(i: number): NamedArgumentContext { - return this.getTypedRuleContext(NamedArgumentContext, i) as NamedArgumentContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namedArgumentList; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamedArgumentList) { - return visitor.visitNamedArgumentList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamedArgumentContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.EQ, 0); - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namedArgument; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamedArgument) { - return visitor.visitNamedArgument(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LiteralExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public literalBoolean(): LiteralBooleanContext { - return this.getTypedRuleContext(LiteralBooleanContext, 0) as LiteralBooleanContext; - } - public literalString(): LiteralStringContext { - return this.getTypedRuleContext(LiteralStringContext, 0) as LiteralStringContext; - } - public literalInteger(): LiteralIntegerContext { - return this.getTypedRuleContext(LiteralIntegerContext, 0) as LiteralIntegerContext; - } - public literalReal(): LiteralRealContext { - return this.getTypedRuleContext(LiteralRealContext, 0) as LiteralRealContext; - } - public literalInfinity(): LiteralInfinityContext { - return this.getTypedRuleContext(LiteralInfinityContext, 0) as LiteralInfinityContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_literalExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLiteralExpression) { - return visitor.visitLiteralExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LiteralBooleanContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public TRUE(): TerminalNode { - return this.getToken(SysMLv2Parser.TRUE, 0); - } - public FALSE(): TerminalNode { - return this.getToken(SysMLv2Parser.FALSE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_literalBoolean; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLiteralBoolean) { - return visitor.visitLiteralBoolean(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LiteralStringContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DOUBLE_STRING(): TerminalNode { - return this.getToken(SysMLv2Parser.DOUBLE_STRING, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_literalString; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLiteralString) { - return visitor.visitLiteralString(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LiteralIntegerContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public INTEGER(): TerminalNode { - return this.getToken(SysMLv2Parser.INTEGER, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_literalInteger; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLiteralInteger) { - return visitor.visitLiteralInteger(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LiteralRealContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public REAL(): TerminalNode { - return this.getToken(SysMLv2Parser.REAL, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_literalReal; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLiteralReal) { - return visitor.visitLiteralReal(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LiteralInfinityContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_literalInfinity; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLiteralInfinity) { - return visitor.visitLiteralInfinity(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ArgumentMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_argumentMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitArgumentMember) { - return visitor.visitArgumentMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ArgumentExpressionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_argumentExpressionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitArgumentExpressionMember) { - return visitor.visitArgumentExpressionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NameContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IDENTIFIER(): TerminalNode { - return this.getToken(SysMLv2Parser.IDENTIFIER, 0); - } - public STRING(): TerminalNode { - return this.getToken(SysMLv2Parser.STRING, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_name; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitName) { - return visitor.visitName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IdentificationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LT(): TerminalNode { - return this.getToken(SysMLv2Parser.LT, 0); - } - public name_list(): NameContext[] { - return this.getTypedRuleContexts(NameContext) as NameContext[]; - } - public name(i: number): NameContext { - return this.getTypedRuleContext(NameContext, i) as NameContext; - } - public GT(): TerminalNode { - return this.getToken(SysMLv2Parser.GT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_identification; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIdentification) { - return visitor.visitIdentification(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RelationshipBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public relationshipOwnedElement_list(): RelationshipOwnedElementContext[] { - return this.getTypedRuleContexts(RelationshipOwnedElementContext) as RelationshipOwnedElementContext[]; - } - public relationshipOwnedElement(i: number): RelationshipOwnedElementContext { - return this.getTypedRuleContext(RelationshipOwnedElementContext, i) as RelationshipOwnedElementContext; - } - public ownedAnnotation_list(): OwnedAnnotationContext[] { - return this.getTypedRuleContexts(OwnedAnnotationContext) as OwnedAnnotationContext[]; - } - public ownedAnnotation(i: number): OwnedAnnotationContext { - return this.getTypedRuleContext(OwnedAnnotationContext, i) as OwnedAnnotationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_relationshipBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRelationshipBody) { - return visitor.visitRelationshipBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RelationshipOwnedElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedRelatedElement(): OwnedRelatedElementContext { - return this.getTypedRuleContext(OwnedRelatedElementContext, 0) as OwnedRelatedElementContext; - } - public ownedAnnotation(): OwnedAnnotationContext { - return this.getTypedRuleContext(OwnedAnnotationContext, 0) as OwnedAnnotationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_relationshipOwnedElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRelationshipOwnedElement) { - return visitor.visitRelationshipOwnedElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedRelatedElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonFeatureElement(): NonFeatureElementContext { - return this.getTypedRuleContext(NonFeatureElementContext, 0) as NonFeatureElementContext; - } - public featureElement(): FeatureElementContext { - return this.getTypedRuleContext(FeatureElementContext, 0) as FeatureElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedRelatedElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedRelatedElement) { - return visitor.visitOwnedRelatedElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DependencyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DEPENDENCY(): TerminalNode { - return this.getToken(SysMLv2Parser.DEPENDENCY, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public prefixMetadataAnnotation_list(): PrefixMetadataAnnotationContext[] { - return this.getTypedRuleContexts(PrefixMetadataAnnotationContext) as PrefixMetadataAnnotationContext[]; - } - public prefixMetadataAnnotation(i: number): PrefixMetadataAnnotationContext { - return this.getTypedRuleContext(PrefixMetadataAnnotationContext, i) as PrefixMetadataAnnotationContext; - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public dependencyDeclaration(): DependencyDeclarationContext { - return this.getTypedRuleContext(DependencyDeclarationContext, 0) as DependencyDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_dependency; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDependency) { - return visitor.visitDependency(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AnnotationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_annotation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAnnotation) { - return visitor.visitAnnotation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedAnnotationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public annotatingElement(): AnnotatingElementContext { - return this.getTypedRuleContext(AnnotatingElementContext, 0) as AnnotatingElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedAnnotation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedAnnotation) { - return visitor.visitOwnedAnnotation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AnnotatingElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public comment(): CommentContext { - return this.getTypedRuleContext(CommentContext, 0) as CommentContext; - } - public documentation(): DocumentationContext { - return this.getTypedRuleContext(DocumentationContext, 0) as DocumentationContext; - } - public textualRepresentation(): TextualRepresentationContext { - return this.getTypedRuleContext(TextualRepresentationContext, 0) as TextualRepresentationContext; - } - public metadataFeature(): MetadataFeatureContext { - return this.getTypedRuleContext(MetadataFeatureContext, 0) as MetadataFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_annotatingElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAnnotatingElement) { - return visitor.visitAnnotatingElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CommentContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public REGULAR_COMMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REGULAR_COMMENT, 0); - } - public COMMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.COMMENT, 0); - } - public LOCALE(): TerminalNode { - return this.getToken(SysMLv2Parser.LOCALE, 0); - } - public DOUBLE_STRING(): TerminalNode { - return this.getToken(SysMLv2Parser.DOUBLE_STRING, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public ABOUT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABOUT, 0); - } - public annotation_list(): AnnotationContext[] { - return this.getTypedRuleContexts(AnnotationContext) as AnnotationContext[]; - } - public annotation(i: number): AnnotationContext { - return this.getTypedRuleContext(AnnotationContext, i) as AnnotationContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_comment; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitComment) { - return visitor.visitComment(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DocumentationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DOC(): TerminalNode { - return this.getToken(SysMLv2Parser.DOC, 0); - } - public REGULAR_COMMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REGULAR_COMMENT, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public LOCALE(): TerminalNode { - return this.getToken(SysMLv2Parser.LOCALE, 0); - } - public DOUBLE_STRING(): TerminalNode { - return this.getToken(SysMLv2Parser.DOUBLE_STRING, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_documentation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDocumentation) { - return visitor.visitDocumentation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TextualRepresentationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LANGUAGE(): TerminalNode { - return this.getToken(SysMLv2Parser.LANGUAGE, 0); - } - public DOUBLE_STRING(): TerminalNode { - return this.getToken(SysMLv2Parser.DOUBLE_STRING, 0); - } - public REGULAR_COMMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REGULAR_COMMENT, 0); - } - public REP(): TerminalNode { - return this.getToken(SysMLv2Parser.REP, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_textualRepresentation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTextualRepresentation) { - return visitor.visitTextualRepresentation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RootNamespaceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public EOF(): TerminalNode { - return this.getToken(SysMLv2Parser.EOF, 0); - } - public packageBodyElement_list(): PackageBodyElementContext[] { - return this.getTypedRuleContexts(PackageBodyElementContext) as PackageBodyElementContext[]; - } - public packageBodyElement(i: number): PackageBodyElementContext { - return this.getTypedRuleContext(PackageBodyElementContext, i) as PackageBodyElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_rootNamespace; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRootNamespace) { - return visitor.visitRootNamespace(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public namespaceDeclaration(): NamespaceDeclarationContext { - return this.getTypedRuleContext(NamespaceDeclarationContext, 0) as NamespaceDeclarationContext; - } - public namespaceBody(): NamespaceBodyContext { - return this.getTypedRuleContext(NamespaceBodyContext, 0) as NamespaceBodyContext; - } - public prefixMetadataMember_list(): PrefixMetadataMemberContext[] { - return this.getTypedRuleContexts(PrefixMetadataMemberContext) as PrefixMetadataMemberContext[]; - } - public prefixMetadataMember(i: number): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, i) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespace; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespace) { - return visitor.visitNamespace(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public NAMESPACE(): TerminalNode { - return this.getToken(SysMLv2Parser.NAMESPACE, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceDeclaration) { - return visitor.visitNamespaceDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public namespaceBodyElement_list(): NamespaceBodyElementContext[] { - return this.getTypedRuleContexts(NamespaceBodyElementContext) as NamespaceBodyElementContext[]; - } - public namespaceBodyElement(i: number): NamespaceBodyElementContext { - return this.getTypedRuleContext(NamespaceBodyElementContext, i) as NamespaceBodyElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceBody) { - return visitor.visitNamespaceBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceBodyElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public namespaceMember(): NamespaceMemberContext { - return this.getTypedRuleContext(NamespaceMemberContext, 0) as NamespaceMemberContext; - } - public aliasMember(): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, 0) as AliasMemberContext; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceBodyElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceBodyElement) { - return visitor.visitNamespaceBodyElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MemberPrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public visibilityIndicator(): VisibilityIndicatorContext { - return this.getTypedRuleContext(VisibilityIndicatorContext, 0) as VisibilityIndicatorContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_memberPrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMemberPrefix) { - return visitor.visitMemberPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VisibilityIndicatorContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public PUBLIC(): TerminalNode { - return this.getToken(SysMLv2Parser.PUBLIC, 0); - } - public PRIVATE(): TerminalNode { - return this.getToken(SysMLv2Parser.PRIVATE, 0); - } - public PROTECTED(): TerminalNode { - return this.getToken(SysMLv2Parser.PROTECTED, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_visibilityIndicator; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitVisibilityIndicator) { - return visitor.visitVisibilityIndicator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonFeatureMember(): NonFeatureMemberContext { - return this.getTypedRuleContext(NonFeatureMemberContext, 0) as NonFeatureMemberContext; - } - public namespaceFeatureMember(): NamespaceFeatureMemberContext { - return this.getTypedRuleContext(NamespaceFeatureMemberContext, 0) as NamespaceFeatureMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceMember) { - return visitor.visitNamespaceMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NonFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public memberElement(): MemberElementContext { - return this.getTypedRuleContext(MemberElementContext, 0) as MemberElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nonFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNonFeatureMember) { - return visitor.visitNonFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public featureElement(): FeatureElementContext { - return this.getTypedRuleContext(FeatureElementContext, 0) as FeatureElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceFeatureMember) { - return visitor.visitNamespaceFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AliasMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public ALIAS(): TerminalNode { - return this.getToken(SysMLv2Parser.ALIAS, 0); - } - public FOR(): TerminalNode { - return this.getToken(SysMLv2Parser.FOR, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public LT(): TerminalNode { - return this.getToken(SysMLv2Parser.LT, 0); - } - public name_list(): NameContext[] { - return this.getTypedRuleContexts(NameContext) as NameContext[]; - } - public name(i: number): NameContext { - return this.getTypedRuleContext(NameContext, i) as NameContext; - } - public GT(): TerminalNode { - return this.getToken(SysMLv2Parser.GT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_aliasMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAliasMember) { - return visitor.visitAliasMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class QualifiedNameContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public name_list(): NameContext[] { - return this.getTypedRuleContexts(NameContext) as NameContext[]; - } - public name(i: number): NameContext { - return this.getTypedRuleContext(NameContext, i) as NameContext; - } - public DOLLAR(): TerminalNode { - return this.getToken(SysMLv2Parser.DOLLAR, 0); - } - public COLON_COLON_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COLON_COLON); - } - public COLON_COLON(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_qualifiedName; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitQualifiedName) { - return visitor.visitQualifiedName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ImportRuleContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IMPORT(): TerminalNode { - return this.getToken(SysMLv2Parser.IMPORT, 0); - } - public importDeclaration(): ImportDeclarationContext { - return this.getTypedRuleContext(ImportDeclarationContext, 0) as ImportDeclarationContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public visibilityIndicator(): VisibilityIndicatorContext { - return this.getTypedRuleContext(VisibilityIndicatorContext, 0) as VisibilityIndicatorContext; - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_importRule; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitImportRule) { - return visitor.visitImportRule(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ImportDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public membershipImport(): MembershipImportContext { - return this.getTypedRuleContext(MembershipImportContext, 0) as MembershipImportContext; - } - public namespaceImport(): NamespaceImportContext { - return this.getTypedRuleContext(NamespaceImportContext, 0) as NamespaceImportContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_importDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitImportDeclaration) { - return visitor.visitImportDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MembershipImportContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public COLON_COLON(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON, 0); - } - public STAR_STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR_STAR, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_membershipImport; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMembershipImport) { - return visitor.visitMembershipImport(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceImportContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public COLON_COLON_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COLON_COLON); - } - public COLON_COLON(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON, i); - } - public STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR, 0); - } - public STAR_STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR_STAR, 0); - } - public filterPackage(): FilterPackageContext { - return this.getTypedRuleContext(FilterPackageContext, 0) as FilterPackageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceImport; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceImport) { - return visitor.visitNamespaceImport(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FilterPackageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public filterPackageImportDeclaration(): FilterPackageImportDeclarationContext { - return this.getTypedRuleContext(FilterPackageImportDeclarationContext, 0) as FilterPackageImportDeclarationContext; - } - public filterPackageMember_list(): FilterPackageMemberContext[] { - return this.getTypedRuleContexts(FilterPackageMemberContext) as FilterPackageMemberContext[]; - } - public filterPackageMember(i: number): FilterPackageMemberContext { - return this.getTypedRuleContext(FilterPackageMemberContext, i) as FilterPackageMemberContext; - } - public filterPackageImport(): FilterPackageImportContext { - return this.getTypedRuleContext(FilterPackageImportContext, 0) as FilterPackageImportContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_filterPackage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFilterPackage) { - return visitor.visitFilterPackage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FilterPackageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LBRACK(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACK, 0); - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public RBRACK(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACK, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_filterPackageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFilterPackageMember) { - return visitor.visitFilterPackageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MemberElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public annotatingElement(): AnnotatingElementContext { - return this.getTypedRuleContext(AnnotatingElementContext, 0) as AnnotatingElementContext; - } - public nonFeatureElement(): NonFeatureElementContext { - return this.getTypedRuleContext(NonFeatureElementContext, 0) as NonFeatureElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_memberElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMemberElement) { - return visitor.visitMemberElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NonFeatureElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public dependency(): DependencyContext { - return this.getTypedRuleContext(DependencyContext, 0) as DependencyContext; - } - public namespace(): NamespaceContext { - return this.getTypedRuleContext(NamespaceContext, 0) as NamespaceContext; - } - public type_(): TypeContext { - return this.getTypedRuleContext(TypeContext, 0) as TypeContext; - } - public classifier(): ClassifierContext { - return this.getTypedRuleContext(ClassifierContext, 0) as ClassifierContext; - } - public dataType(): DataTypeContext { - return this.getTypedRuleContext(DataTypeContext, 0) as DataTypeContext; - } - public class_(): ClassContext { - return this.getTypedRuleContext(ClassContext, 0) as ClassContext; - } - public structure(): StructureContext { - return this.getTypedRuleContext(StructureContext, 0) as StructureContext; - } - public metaclass(): MetaclassContext { - return this.getTypedRuleContext(MetaclassContext, 0) as MetaclassContext; - } - public association(): AssociationContext { - return this.getTypedRuleContext(AssociationContext, 0) as AssociationContext; - } - public associationStructure(): AssociationStructureContext { - return this.getTypedRuleContext(AssociationStructureContext, 0) as AssociationStructureContext; - } - public interaction(): InteractionContext { - return this.getTypedRuleContext(InteractionContext, 0) as InteractionContext; - } - public behavior(): BehaviorContext { - return this.getTypedRuleContext(BehaviorContext, 0) as BehaviorContext; - } - public function_(): FunctionContext { - return this.getTypedRuleContext(FunctionContext, 0) as FunctionContext; - } - public predicate(): PredicateContext { - return this.getTypedRuleContext(PredicateContext, 0) as PredicateContext; - } - public multiplicity(): MultiplicityContext { - return this.getTypedRuleContext(MultiplicityContext, 0) as MultiplicityContext; - } - public package_(): PackageContext { - return this.getTypedRuleContext(PackageContext, 0) as PackageContext; - } - public libraryPackage(): LibraryPackageContext { - return this.getTypedRuleContext(LibraryPackageContext, 0) as LibraryPackageContext; - } - public specialization(): SpecializationContext { - return this.getTypedRuleContext(SpecializationContext, 0) as SpecializationContext; - } - public conjugation(): ConjugationContext { - return this.getTypedRuleContext(ConjugationContext, 0) as ConjugationContext; - } - public subclassification(): SubclassificationContext { - return this.getTypedRuleContext(SubclassificationContext, 0) as SubclassificationContext; - } - public disjoining(): DisjoiningContext { - return this.getTypedRuleContext(DisjoiningContext, 0) as DisjoiningContext; - } - public featureInverting(): FeatureInvertingContext { - return this.getTypedRuleContext(FeatureInvertingContext, 0) as FeatureInvertingContext; - } - public featureTyping(): FeatureTypingContext { - return this.getTypedRuleContext(FeatureTypingContext, 0) as FeatureTypingContext; - } - public subsetting(): SubsettingContext { - return this.getTypedRuleContext(SubsettingContext, 0) as SubsettingContext; - } - public redefinition(): RedefinitionContext { - return this.getTypedRuleContext(RedefinitionContext, 0) as RedefinitionContext; - } - public typeFeaturing(): TypeFeaturingContext { - return this.getTypedRuleContext(TypeFeaturingContext, 0) as TypeFeaturingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nonFeatureElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNonFeatureElement) { - return visitor.visitNonFeatureElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public feature(): FeatureContext { - return this.getTypedRuleContext(FeatureContext, 0) as FeatureContext; - } - public step(): StepContext { - return this.getTypedRuleContext(StepContext, 0) as StepContext; - } - public expression(): ExpressionContext { - return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; - } - public booleanExpression(): BooleanExpressionContext { - return this.getTypedRuleContext(BooleanExpressionContext, 0) as BooleanExpressionContext; - } - public invariant(): InvariantContext { - return this.getTypedRuleContext(InvariantContext, 0) as InvariantContext; - } - public connector(): ConnectorContext { - return this.getTypedRuleContext(ConnectorContext, 0) as ConnectorContext; - } - public bindingConnector(): BindingConnectorContext { - return this.getTypedRuleContext(BindingConnectorContext, 0) as BindingConnectorContext; - } - public succession(): SuccessionContext { - return this.getTypedRuleContext(SuccessionContext, 0) as SuccessionContext; - } - public flow(): FlowContext { - return this.getTypedRuleContext(FlowContext, 0) as FlowContext; - } - public successionFlow(): SuccessionFlowContext { - return this.getTypedRuleContext(SuccessionFlowContext, 0) as SuccessionFlowContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureElement) { - return visitor.visitFeatureElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public TYPE(): TerminalNode { - return this.getToken(SysMLv2Parser.TYPE, 0); - } - public typeDeclaration(): TypeDeclarationContext { - return this.getTypedRuleContext(TypeDeclarationContext, 0) as TypeDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_type; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitType) { - return visitor.visitType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ABSTRACT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABSTRACT, 0); - } - public prefixMetadataMember_list(): PrefixMetadataMemberContext[] { - return this.getTypedRuleContexts(PrefixMetadataMemberContext) as PrefixMetadataMemberContext[]; - } - public prefixMetadataMember(i: number): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, i) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypePrefix) { - return visitor.visitTypePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public ownedMultiplicity(): OwnedMultiplicityContext { - return this.getTypedRuleContext(OwnedMultiplicityContext, 0) as OwnedMultiplicityContext; - } - public specializationPart_list(): SpecializationPartContext[] { - return this.getTypedRuleContexts(SpecializationPartContext) as SpecializationPartContext[]; - } - public specializationPart(i: number): SpecializationPartContext { - return this.getTypedRuleContext(SpecializationPartContext, i) as SpecializationPartContext; - } - public conjugationPart_list(): ConjugationPartContext[] { - return this.getTypedRuleContexts(ConjugationPartContext) as ConjugationPartContext[]; - } - public conjugationPart(i: number): ConjugationPartContext { - return this.getTypedRuleContext(ConjugationPartContext, i) as ConjugationPartContext; - } - public typeRelationshipPart_list(): TypeRelationshipPartContext[] { - return this.getTypedRuleContexts(TypeRelationshipPartContext) as TypeRelationshipPartContext[]; - } - public typeRelationshipPart(i: number): TypeRelationshipPartContext { - return this.getTypedRuleContext(TypeRelationshipPartContext, i) as TypeRelationshipPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeDeclaration) { - return visitor.visitTypeDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SpecializationPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedSpecialization_list(): OwnedSpecializationContext[] { - return this.getTypedRuleContexts(OwnedSpecializationContext) as OwnedSpecializationContext[]; - } - public ownedSpecialization(i: number): OwnedSpecializationContext { - return this.getTypedRuleContext(OwnedSpecializationContext, i) as OwnedSpecializationContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SPECIALIZES(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZES, 0); - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_specializationPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSpecializationPart) { - return visitor.visitSpecializationPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConjugationPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedConjugation(): OwnedConjugationContext { - return this.getTypedRuleContext(OwnedConjugationContext, 0) as OwnedConjugationContext; - } - public TILDE(): TerminalNode { - return this.getToken(SysMLv2Parser.TILDE, 0); - } - public CONJUGATES(): TerminalNode { - return this.getToken(SysMLv2Parser.CONJUGATES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_conjugationPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConjugationPart) { - return visitor.visitConjugationPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeRelationshipPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public disjoiningPart(): DisjoiningPartContext { - return this.getTypedRuleContext(DisjoiningPartContext, 0) as DisjoiningPartContext; - } - public unioningPart(): UnioningPartContext { - return this.getTypedRuleContext(UnioningPartContext, 0) as UnioningPartContext; - } - public intersectingPart(): IntersectingPartContext { - return this.getTypedRuleContext(IntersectingPartContext, 0) as IntersectingPartContext; - } - public differencingPart(): DifferencingPartContext { - return this.getTypedRuleContext(DifferencingPartContext, 0) as DifferencingPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeRelationshipPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeRelationshipPart) { - return visitor.visitTypeRelationshipPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DisjoiningPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DISJOINT(): TerminalNode { - return this.getToken(SysMLv2Parser.DISJOINT, 0); - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public ownedDisjoining_list(): OwnedDisjoiningContext[] { - return this.getTypedRuleContexts(OwnedDisjoiningContext) as OwnedDisjoiningContext[]; - } - public ownedDisjoining(i: number): OwnedDisjoiningContext { - return this.getTypedRuleContext(OwnedDisjoiningContext, i) as OwnedDisjoiningContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_disjoiningPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDisjoiningPart) { - return visitor.visitDisjoiningPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UnioningPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public UNIONS(): TerminalNode { - return this.getToken(SysMLv2Parser.UNIONS, 0); - } - public unioning_list(): UnioningContext[] { - return this.getTypedRuleContexts(UnioningContext) as UnioningContext[]; - } - public unioning(i: number): UnioningContext { - return this.getTypedRuleContext(UnioningContext, i) as UnioningContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_unioningPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUnioningPart) { - return visitor.visitUnioningPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IntersectingPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public INTERSECTS(): TerminalNode { - return this.getToken(SysMLv2Parser.INTERSECTS, 0); - } - public intersecting_list(): IntersectingContext[] { - return this.getTypedRuleContexts(IntersectingContext) as IntersectingContext[]; - } - public intersecting(i: number): IntersectingContext { - return this.getTypedRuleContext(IntersectingContext, i) as IntersectingContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_intersectingPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIntersectingPart) { - return visitor.visitIntersectingPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DifferencingPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DIFFERENCES(): TerminalNode { - return this.getToken(SysMLv2Parser.DIFFERENCES, 0); - } - public differencing_list(): DifferencingContext[] { - return this.getTypedRuleContexts(DifferencingContext) as DifferencingContext[]; - } - public differencing(i: number): DifferencingContext { - return this.getTypedRuleContext(DifferencingContext, i) as DifferencingContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_differencingPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDifferencingPart) { - return visitor.visitDifferencingPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public typeBodyElement_list(): TypeBodyElementContext[] { - return this.getTypedRuleContexts(TypeBodyElementContext) as TypeBodyElementContext[]; - } - public typeBodyElement(i: number): TypeBodyElementContext { - return this.getTypedRuleContext(TypeBodyElementContext, i) as TypeBodyElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeBody) { - return visitor.visitTypeBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeBodyElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonFeatureMember(): NonFeatureMemberContext { - return this.getTypedRuleContext(NonFeatureMemberContext, 0) as NonFeatureMemberContext; - } - public featureMember(): FeatureMemberContext { - return this.getTypedRuleContext(FeatureMemberContext, 0) as FeatureMemberContext; - } - public aliasMember(): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, 0) as AliasMemberContext; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeBodyElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeBodyElement) { - return visitor.visitTypeBodyElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SpecializationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SUBTYPE(): TerminalNode { - return this.getToken(SysMLv2Parser.SUBTYPE, 0); - } - public specificType(): SpecificTypeContext { - return this.getTypedRuleContext(SpecificTypeContext, 0) as SpecificTypeContext; - } - public generalType(): GeneralTypeContext { - return this.getTypedRuleContext(GeneralTypeContext, 0) as GeneralTypeContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SPECIALIZES(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZES, 0); - } - public SPECIALIZATION(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZATION, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_specialization; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSpecialization) { - return visitor.visitSpecialization(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedSpecializationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public generalType(): GeneralTypeContext { - return this.getTypedRuleContext(GeneralTypeContext, 0) as GeneralTypeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedSpecialization; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedSpecialization) { - return visitor.visitOwnedSpecialization(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SpecificTypeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_specificType; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSpecificType) { - return visitor.visitSpecificType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GeneralTypeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_generalType; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitGeneralType) { - return visitor.visitGeneralType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConjugationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public CONJUGATE(): TerminalNode { - return this.getToken(SysMLv2Parser.CONJUGATE, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public TILDE(): TerminalNode { - return this.getToken(SysMLv2Parser.TILDE, 0); - } - public CONJUGATES(): TerminalNode { - return this.getToken(SysMLv2Parser.CONJUGATES, 0); - } - public CONJUGATION(): TerminalNode { - return this.getToken(SysMLv2Parser.CONJUGATION, 0); - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_conjugation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConjugation) { - return visitor.visitConjugation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedConjugationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedConjugation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedConjugation) { - return visitor.visitOwnedConjugation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DisjoiningContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DISJOINT(): TerminalNode { - return this.getToken(SysMLv2Parser.DISJOINT, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public DISJOINING(): TerminalNode { - return this.getToken(SysMLv2Parser.DISJOINING, 0); - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_disjoining; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDisjoining) { - return visitor.visitDisjoining(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedDisjoiningContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedDisjoining; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedDisjoining) { - return visitor.visitOwnedDisjoining(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UnioningContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_unioning; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUnioning) { - return visitor.visitUnioning(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IntersectingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_intersecting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIntersecting) { - return visitor.visitIntersecting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DifferencingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_differencing; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDifferencing) { - return visitor.visitDifferencing(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typeFeatureMember(): TypeFeatureMemberContext { - return this.getTypedRuleContext(TypeFeatureMemberContext, 0) as TypeFeatureMemberContext; - } - public ownedFeatureMember(): OwnedFeatureMemberContext { - return this.getTypedRuleContext(OwnedFeatureMemberContext, 0) as OwnedFeatureMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureMember) { - return visitor.visitFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public MEMBER(): TerminalNode { - return this.getToken(SysMLv2Parser.MEMBER, 0); - } - public featureElement(): FeatureElementContext { - return this.getTypedRuleContext(FeatureElementContext, 0) as FeatureElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeFeatureMember) { - return visitor.visitTypeFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public featureElement(): FeatureElementContext { - return this.getTypedRuleContext(FeatureElementContext, 0) as FeatureElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedFeatureMember) { - return visitor.visitOwnedFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ClassifierContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public CLASSIFIER(): TerminalNode { - return this.getToken(SysMLv2Parser.CLASSIFIER, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_classifier; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitClassifier) { - return visitor.visitClassifier(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ClassifierDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public ownedMultiplicity(): OwnedMultiplicityContext { - return this.getTypedRuleContext(OwnedMultiplicityContext, 0) as OwnedMultiplicityContext; - } - public superclassingPart(): SuperclassingPartContext { - return this.getTypedRuleContext(SuperclassingPartContext, 0) as SuperclassingPartContext; - } - public conjugationPart(): ConjugationPartContext { - return this.getTypedRuleContext(ConjugationPartContext, 0) as ConjugationPartContext; - } - public typeRelationshipPart_list(): TypeRelationshipPartContext[] { - return this.getTypedRuleContexts(TypeRelationshipPartContext) as TypeRelationshipPartContext[]; - } - public typeRelationshipPart(i: number): TypeRelationshipPartContext { - return this.getTypedRuleContext(TypeRelationshipPartContext, i) as TypeRelationshipPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_classifierDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitClassifierDeclaration) { - return visitor.visitClassifierDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SuperclassingPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedSubclassification_list(): OwnedSubclassificationContext[] { - return this.getTypedRuleContexts(OwnedSubclassificationContext) as OwnedSubclassificationContext[]; - } - public ownedSubclassification(i: number): OwnedSubclassificationContext { - return this.getTypedRuleContext(OwnedSubclassificationContext, i) as OwnedSubclassificationContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SPECIALIZES(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZES, 0); - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_superclassingPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSuperclassingPart) { - return visitor.visitSuperclassingPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubclassificationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SUBCLASSIFIER(): TerminalNode { - return this.getToken(SysMLv2Parser.SUBCLASSIFIER, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SPECIALIZES(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZES, 0); - } - public SPECIALIZATION(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZATION, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subclassification; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubclassification) { - return visitor.visitSubclassification(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedSubclassificationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedSubclassification; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedSubclassification) { - return visitor.visitOwnedSubclassification(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public FEATURE(): TerminalNode { - return this.getToken(SysMLv2Parser.FEATURE, 0); - } - public prefixMetadataMember(): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, 0) as PrefixMetadataMemberContext; - } - public endFeaturePrefix(): EndFeaturePrefixContext { - return this.getTypedRuleContext(EndFeaturePrefixContext, 0) as EndFeaturePrefixContext; - } - public basicFeaturePrefix(): BasicFeaturePrefixContext { - return this.getTypedRuleContext(BasicFeaturePrefixContext, 0) as BasicFeaturePrefixContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_feature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeature) { - return visitor.visitFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EndFeaturePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public END(): TerminalNode { - return this.getToken(SysMLv2Parser.END, 0); - } - public CONST(): TerminalNode { - return this.getToken(SysMLv2Parser.CONST, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_endFeaturePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEndFeaturePrefix) { - return visitor.visitEndFeaturePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BasicFeaturePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureDirection(): FeatureDirectionContext { - return this.getTypedRuleContext(FeatureDirectionContext, 0) as FeatureDirectionContext; - } - public DERIVED(): TerminalNode { - return this.getToken(SysMLv2Parser.DERIVED, 0); - } - public ABSTRACT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABSTRACT, 0); - } - public COMPOSITE(): TerminalNode { - return this.getToken(SysMLv2Parser.COMPOSITE, 0); - } - public PORTION(): TerminalNode { - return this.getToken(SysMLv2Parser.PORTION, 0); - } - public VAR(): TerminalNode { - return this.getToken(SysMLv2Parser.VAR, 0); - } - public CONST(): TerminalNode { - return this.getToken(SysMLv2Parser.CONST, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_basicFeaturePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBasicFeaturePrefix) { - return visitor.visitBasicFeaturePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeaturePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public endFeaturePrefix(): EndFeaturePrefixContext { - return this.getTypedRuleContext(EndFeaturePrefixContext, 0) as EndFeaturePrefixContext; - } - public ownedCrossFeatureMember(): OwnedCrossFeatureMemberContext { - return this.getTypedRuleContext(OwnedCrossFeatureMemberContext, 0) as OwnedCrossFeatureMemberContext; - } - public basicFeaturePrefix(): BasicFeaturePrefixContext { - return this.getTypedRuleContext(BasicFeaturePrefixContext, 0) as BasicFeaturePrefixContext; - } - public prefixMetadataMember_list(): PrefixMetadataMemberContext[] { - return this.getTypedRuleContexts(PrefixMetadataMemberContext) as PrefixMetadataMemberContext[]; - } - public prefixMetadataMember(i: number): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, i) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featurePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeaturePrefix) { - return visitor.visitFeaturePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedCrossFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedCrossFeature(): OwnedCrossFeatureContext { - return this.getTypedRuleContext(OwnedCrossFeatureContext, 0) as OwnedCrossFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedCrossFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedCrossFeatureMember) { - return visitor.visitOwnedCrossFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedCrossFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public basicFeaturePrefix(): BasicFeaturePrefixContext { - return this.getTypedRuleContext(BasicFeaturePrefixContext, 0) as BasicFeaturePrefixContext; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public basicUsagePrefix(): BasicUsagePrefixContext { - return this.getTypedRuleContext(BasicUsagePrefixContext, 0) as BasicUsagePrefixContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedCrossFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedCrossFeature) { - return visitor.visitOwnedCrossFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureDirectionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IN(): TerminalNode { - return this.getToken(SysMLv2Parser.IN, 0); - } - public OUT(): TerminalNode { - return this.getToken(SysMLv2Parser.OUT, 0); - } - public INOUT(): TerminalNode { - return this.getToken(SysMLv2Parser.INOUT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureDirection; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureDirection) { - return visitor.visitFeatureDirection(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureIdentification(): FeatureIdentificationContext { - return this.getTypedRuleContext(FeatureIdentificationContext, 0) as FeatureIdentificationContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public conjugationPart(): ConjugationPartContext { - return this.getTypedRuleContext(ConjugationPartContext, 0) as ConjugationPartContext; - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public featureRelationshipPart_list(): FeatureRelationshipPartContext[] { - return this.getTypedRuleContexts(FeatureRelationshipPartContext) as FeatureRelationshipPartContext[]; - } - public featureRelationshipPart(i: number): FeatureRelationshipPartContext { - return this.getTypedRuleContext(FeatureRelationshipPartContext, i) as FeatureRelationshipPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureDeclaration) { - return visitor.visitFeatureDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureIdentificationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LT(): TerminalNode { - return this.getToken(SysMLv2Parser.LT, 0); - } - public name_list(): NameContext[] { - return this.getTypedRuleContexts(NameContext) as NameContext[]; - } - public name(i: number): NameContext { - return this.getTypedRuleContext(NameContext, i) as NameContext; - } - public GT(): TerminalNode { - return this.getToken(SysMLv2Parser.GT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureIdentification; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureIdentification) { - return visitor.visitFeatureIdentification(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureRelationshipPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typeRelationshipPart(): TypeRelationshipPartContext { - return this.getTypedRuleContext(TypeRelationshipPartContext, 0) as TypeRelationshipPartContext; - } - public chainingPart(): ChainingPartContext { - return this.getTypedRuleContext(ChainingPartContext, 0) as ChainingPartContext; - } - public invertingPart(): InvertingPartContext { - return this.getTypedRuleContext(InvertingPartContext, 0) as InvertingPartContext; - } - public typeFeaturingPart(): TypeFeaturingPartContext { - return this.getTypedRuleContext(TypeFeaturingPartContext, 0) as TypeFeaturingPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureRelationshipPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureRelationshipPart) { - return visitor.visitFeatureRelationshipPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ChainingPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public CHAINS(): TerminalNode { - return this.getToken(SysMLv2Parser.CHAINS, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_chainingPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitChainingPart) { - return visitor.visitChainingPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InvertingPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public INVERSE(): TerminalNode { - return this.getToken(SysMLv2Parser.INVERSE, 0); - } - public OF(): TerminalNode { - return this.getToken(SysMLv2Parser.OF, 0); - } - public ownedFeatureInverting(): OwnedFeatureInvertingContext { - return this.getTypedRuleContext(OwnedFeatureInvertingContext, 0) as OwnedFeatureInvertingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_invertingPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInvertingPart) { - return visitor.visitInvertingPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeFeaturingPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public FEATURED(): TerminalNode { - return this.getToken(SysMLv2Parser.FEATURED, 0); - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public ownedTypeFeaturing_list(): OwnedTypeFeaturingContext[] { - return this.getTypedRuleContexts(OwnedTypeFeaturingContext) as OwnedTypeFeaturingContext[]; - } - public ownedTypeFeaturing(i: number): OwnedTypeFeaturingContext { - return this.getTypedRuleContext(OwnedTypeFeaturingContext, i) as OwnedTypeFeaturingContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeFeaturingPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeFeaturingPart) { - return visitor.visitTypeFeaturingPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureSpecializationPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureSpecialization_list(): FeatureSpecializationContext[] { - return this.getTypedRuleContexts(FeatureSpecializationContext) as FeatureSpecializationContext[]; - } - public featureSpecialization(i: number): FeatureSpecializationContext { - return this.getTypedRuleContext(FeatureSpecializationContext, i) as FeatureSpecializationContext; - } - public multiplicityPart(): MultiplicityPartContext { - return this.getTypedRuleContext(MultiplicityPartContext, 0) as MultiplicityPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureSpecializationPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureSpecializationPart) { - return visitor.visitFeatureSpecializationPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MultiplicityPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedMultiplicity(): OwnedMultiplicityContext { - return this.getTypedRuleContext(OwnedMultiplicityContext, 0) as OwnedMultiplicityContext; - } - public ORDERED(): TerminalNode { - return this.getToken(SysMLv2Parser.ORDERED, 0); - } - public NONUNIQUE(): TerminalNode { - return this.getToken(SysMLv2Parser.NONUNIQUE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_multiplicityPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMultiplicityPart) { - return visitor.visitMultiplicityPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureSpecializationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typings(): TypingsContext { - return this.getTypedRuleContext(TypingsContext, 0) as TypingsContext; - } - public subsettings(): SubsettingsContext { - return this.getTypedRuleContext(SubsettingsContext, 0) as SubsettingsContext; - } - public references(): ReferencesContext { - return this.getTypedRuleContext(ReferencesContext, 0) as ReferencesContext; - } - public crosses(): CrossesContext { - return this.getTypedRuleContext(CrossesContext, 0) as CrossesContext; - } - public redefinitions(): RedefinitionsContext { - return this.getTypedRuleContext(RedefinitionsContext, 0) as RedefinitionsContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureSpecialization; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureSpecialization) { - return visitor.visitFeatureSpecialization(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypingsContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typedBy(): TypedByContext { - return this.getTypedRuleContext(TypedByContext, 0) as TypedByContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public featureTyping_list(): FeatureTypingContext[] { - return this.getTypedRuleContexts(FeatureTypingContext) as FeatureTypingContext[]; - } - public featureTyping(i: number): FeatureTypingContext { - return this.getTypedRuleContext(FeatureTypingContext, i) as FeatureTypingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typings; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypings) { - return visitor.visitTypings(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypedByContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureTyping(): FeatureTypingContext { - return this.getTypedRuleContext(FeatureTypingContext, 0) as FeatureTypingContext; - } - public COLON(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON, 0); - } - public TYPED(): TerminalNode { - return this.getToken(SysMLv2Parser.TYPED, 0); - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public DEFINED(): TerminalNode { - return this.getToken(SysMLv2Parser.DEFINED, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typedBy; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypedBy) { - return visitor.visitTypedBy(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubsettingsContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public subsets(): SubsetsContext { - return this.getTypedRuleContext(SubsetsContext, 0) as SubsetsContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public ownedSubsetting_list(): OwnedSubsettingContext[] { - return this.getTypedRuleContexts(OwnedSubsettingContext) as OwnedSubsettingContext[]; - } - public ownedSubsetting(i: number): OwnedSubsettingContext { - return this.getTypedRuleContext(OwnedSubsettingContext, i) as OwnedSubsettingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subsettings; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubsettings) { - return visitor.visitSubsettings(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubsetsContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedSubsetting(): OwnedSubsettingContext { - return this.getTypedRuleContext(OwnedSubsettingContext, 0) as OwnedSubsettingContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SUBSETS(): TerminalNode { - return this.getToken(SysMLv2Parser.SUBSETS, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subsets; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubsets) { - return visitor.visitSubsets(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReferencesContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public COLON_COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON_GT, 0); - } - public REFERENCES(): TerminalNode { - return this.getToken(SysMLv2Parser.REFERENCES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_references; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitReferences) { - return visitor.visitReferences(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CrossesContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedCrossSubsetting(): OwnedCrossSubsettingContext { - return this.getTypedRuleContext(OwnedCrossSubsettingContext, 0) as OwnedCrossSubsettingContext; - } - public FAT_ARROW(): TerminalNode { - return this.getToken(SysMLv2Parser.FAT_ARROW, 0); - } - public CROSSES(): TerminalNode { - return this.getToken(SysMLv2Parser.CROSSES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_crosses; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCrosses) { - return visitor.visitCrosses(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RedefinitionsContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public redefines(): RedefinesContext { - return this.getTypedRuleContext(RedefinesContext, 0) as RedefinesContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public ownedRedefinition_list(): OwnedRedefinitionContext[] { - return this.getTypedRuleContexts(OwnedRedefinitionContext) as OwnedRedefinitionContext[]; - } - public ownedRedefinition(i: number): OwnedRedefinitionContext { - return this.getTypedRuleContext(OwnedRedefinitionContext, i) as OwnedRedefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_redefinitions; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRedefinitions) { - return visitor.visitRedefinitions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RedefinesContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedRedefinition(): OwnedRedefinitionContext { - return this.getTypedRuleContext(OwnedRedefinitionContext, 0) as OwnedRedefinitionContext; - } - public COLON_GT_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT_GT, 0); - } - public REDEFINES(): TerminalNode { - return this.getToken(SysMLv2Parser.REDEFINES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_redefines; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRedefines) { - return visitor.visitRedefines(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureTypingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public TYPING(): TerminalNode { - return this.getToken(SysMLv2Parser.TYPING, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public generalType(): GeneralTypeContext { - return this.getTypedRuleContext(GeneralTypeContext, 0) as GeneralTypeContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public COLON(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON, 0); - } - public TYPED(): TerminalNode { - return this.getToken(SysMLv2Parser.TYPED, 0); - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public SPECIALIZATION(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZATION, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public ownedFeatureTyping(): OwnedFeatureTypingContext { - return this.getTypedRuleContext(OwnedFeatureTypingContext, 0) as OwnedFeatureTypingContext; - } - public conjugatedPortTyping(): ConjugatedPortTypingContext { - return this.getTypedRuleContext(ConjugatedPortTypingContext, 0) as ConjugatedPortTypingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureTyping; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureTyping) { - return visitor.visitFeatureTyping(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedFeatureTypingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedFeatureTyping; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedFeatureTyping) { - return visitor.visitOwnedFeatureTyping(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubsettingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SUBSET(): TerminalNode { - return this.getToken(SysMLv2Parser.SUBSET, 0); - } - public specificType(): SpecificTypeContext { - return this.getTypedRuleContext(SpecificTypeContext, 0) as SpecificTypeContext; - } - public generalType(): GeneralTypeContext { - return this.getTypedRuleContext(GeneralTypeContext, 0) as GeneralTypeContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SUBSETS(): TerminalNode { - return this.getToken(SysMLv2Parser.SUBSETS, 0); - } - public SPECIALIZATION(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZATION, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subsetting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubsetting) { - return visitor.visitSubsetting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedSubsettingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedSubsetting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedSubsetting) { - return visitor.visitOwnedSubsetting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedReferenceSubsettingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedReferenceSubsetting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedReferenceSubsetting) { - return visitor.visitOwnedReferenceSubsetting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedCrossSubsettingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedCrossSubsetting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedCrossSubsetting) { - return visitor.visitOwnedCrossSubsetting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RedefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public REDEFINITION(): TerminalNode { - return this.getToken(SysMLv2Parser.REDEFINITION, 0); - } - public specificType(): SpecificTypeContext { - return this.getTypedRuleContext(SpecificTypeContext, 0) as SpecificTypeContext; - } - public generalType(): GeneralTypeContext { - return this.getTypedRuleContext(GeneralTypeContext, 0) as GeneralTypeContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public COLON_GT_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT_GT, 0); - } - public REDEFINES(): TerminalNode { - return this.getToken(SysMLv2Parser.REDEFINES, 0); - } - public SPECIALIZATION(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZATION, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_redefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRedefinition) { - return visitor.visitRedefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedRedefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedRedefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedRedefinition) { - return visitor.visitOwnedRedefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedFeatureChainContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureChain(): FeatureChainContext { - return this.getTypedRuleContext(FeatureChainContext, 0) as FeatureChainContext; - } - public ownedFeatureChaining_list(): OwnedFeatureChainingContext[] { - return this.getTypedRuleContexts(OwnedFeatureChainingContext) as OwnedFeatureChainingContext[]; - } - public ownedFeatureChaining(i: number): OwnedFeatureChainingContext { - return this.getTypedRuleContext(OwnedFeatureChainingContext, i) as OwnedFeatureChainingContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedFeatureChain; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedFeatureChain) { - return visitor.visitOwnedFeatureChain(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureChainContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedFeatureChaining_list(): OwnedFeatureChainingContext[] { - return this.getTypedRuleContexts(OwnedFeatureChainingContext) as OwnedFeatureChainingContext[]; - } - public ownedFeatureChaining(i: number): OwnedFeatureChainingContext { - return this.getTypedRuleContext(OwnedFeatureChainingContext, i) as OwnedFeatureChainingContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureChain; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureChain) { - return visitor.visitFeatureChain(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedFeatureChainingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedFeatureChaining; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedFeatureChaining) { - return visitor.visitOwnedFeatureChaining(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureInvertingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public INVERSE(): TerminalNode { - return this.getToken(SysMLv2Parser.INVERSE, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public OF(): TerminalNode { - return this.getToken(SysMLv2Parser.OF, 0); - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public INVERTING(): TerminalNode { - return this.getToken(SysMLv2Parser.INVERTING, 0); - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureInverting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureInverting) { - return visitor.visitFeatureInverting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedFeatureInvertingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedFeatureInverting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedFeatureInverting) { - return visitor.visitOwnedFeatureInverting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeFeaturingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public FEATURING(): TerminalNode { - return this.getToken(SysMLv2Parser.FEATURING, 0); - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public OF(): TerminalNode { - return this.getToken(SysMLv2Parser.OF, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeFeaturing; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeFeaturing) { - return visitor.visitTypeFeaturing(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedTypeFeaturingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedTypeFeaturing; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedTypeFeaturing) { - return visitor.visitOwnedTypeFeaturing(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DataTypeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public DATATYPE(): TerminalNode { - return this.getToken(SysMLv2Parser.DATATYPE, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_dataType; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDataType) { - return visitor.visitDataType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ClassContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public CLASS(): TerminalNode { - return this.getToken(SysMLv2Parser.CLASS, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_class; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitClass) { - return visitor.visitClass(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StructureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public STRUCT(): TerminalNode { - return this.getToken(SysMLv2Parser.STRUCT, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_structure; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStructure) { - return visitor.visitStructure(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssociationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public ASSOC(): TerminalNode { - return this.getToken(SysMLv2Parser.ASSOC, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_association; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssociation) { - return visitor.visitAssociation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssociationStructureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public ASSOC(): TerminalNode { - return this.getToken(SysMLv2Parser.ASSOC, 0); - } - public STRUCT(): TerminalNode { - return this.getToken(SysMLv2Parser.STRUCT, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_associationStructure; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssociationStructure) { - return visitor.visitAssociationStructure(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectorContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public CONNECTOR(): TerminalNode { - return this.getToken(SysMLv2Parser.CONNECTOR, 0); - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public connectorDeclaration(): ConnectorDeclarationContext { - return this.getTypedRuleContext(ConnectorDeclarationContext, 0) as ConnectorDeclarationContext; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connector; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnector) { - return visitor.visitConnector(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectorDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public binaryConnectorDeclaration(): BinaryConnectorDeclarationContext { - return this.getTypedRuleContext(BinaryConnectorDeclarationContext, 0) as BinaryConnectorDeclarationContext; - } - public naryConnectorDeclaration(): NaryConnectorDeclarationContext { - return this.getTypedRuleContext(NaryConnectorDeclarationContext, 0) as NaryConnectorDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connectorDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnectorDeclaration) { - return visitor.visitConnectorDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BinaryConnectorDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_binaryConnectorDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBinaryConnectorDeclaration) { - return visitor.visitBinaryConnectorDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NaryConnectorDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_naryConnectorDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNaryConnectorDeclaration) { - return visitor.visitNaryConnectorDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectorEndMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public connectorEnd(): ConnectorEndContext { - return this.getTypedRuleContext(ConnectorEndContext, 0) as ConnectorEndContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connectorEndMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnectorEndMember) { - return visitor.visitConnectorEndMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectorEndContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public ownedCrossMultiplicityMember(): OwnedCrossMultiplicityMemberContext { - return this.getTypedRuleContext(OwnedCrossMultiplicityMemberContext, 0) as OwnedCrossMultiplicityMemberContext; - } - public name(): NameContext { - return this.getTypedRuleContext(NameContext, 0) as NameContext; - } - public COLON_COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON_GT, 0); - } - public REFERENCES(): TerminalNode { - return this.getToken(SysMLv2Parser.REFERENCES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connectorEnd; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnectorEnd) { - return visitor.visitConnectorEnd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedCrossMultiplicityMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedCrossMultiplicity(): OwnedCrossMultiplicityContext { - return this.getTypedRuleContext(OwnedCrossMultiplicityContext, 0) as OwnedCrossMultiplicityContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedCrossMultiplicityMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedCrossMultiplicityMember) { - return visitor.visitOwnedCrossMultiplicityMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedCrossMultiplicityContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedMultiplicity(): OwnedMultiplicityContext { - return this.getTypedRuleContext(OwnedMultiplicityContext, 0) as OwnedMultiplicityContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedCrossMultiplicity; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedCrossMultiplicity) { - return visitor.visitOwnedCrossMultiplicity(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BindingConnectorContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public BINDING(): TerminalNode { - return this.getToken(SysMLv2Parser.BINDING, 0); - } - public bindingConnectorDeclaration(): BindingConnectorDeclarationContext { - return this.getTypedRuleContext(BindingConnectorDeclarationContext, 0) as BindingConnectorDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bindingConnector; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBindingConnector) { - return visitor.visitBindingConnector(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BindingConnectorDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public OF(): TerminalNode { - return this.getToken(SysMLv2Parser.OF, 0); - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.EQ, 0); - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bindingConnectorDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBindingConnectorDeclaration) { - return visitor.visitBindingConnectorDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public SUCCESSION(): TerminalNode { - return this.getToken(SysMLv2Parser.SUCCESSION, 0); - } - public successionDeclaration(): SuccessionDeclarationContext { - return this.getTypedRuleContext(SuccessionDeclarationContext, 0) as SuccessionDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_succession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSuccession) { - return visitor.visitSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SuccessionDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public FIRST(): TerminalNode { - return this.getToken(SysMLv2Parser.FIRST, 0); - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_successionDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSuccessionDeclaration) { - return visitor.visitSuccessionDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BehaviorContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public BEHAVIOR(): TerminalNode { - return this.getToken(SysMLv2Parser.BEHAVIOR, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_behavior; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBehavior) { - return visitor.visitBehavior(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StepContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public STEP(): TerminalNode { - return this.getToken(SysMLv2Parser.STEP, 0); - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_step; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStep) { - return visitor.visitStep(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public FUNCTION(): TerminalNode { - return this.getToken(SysMLv2Parser.FUNCTION, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public functionBody(): FunctionBodyContext { - return this.getTypedRuleContext(FunctionBodyContext, 0) as FunctionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_function; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunction) { - return visitor.visitFunction(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public functionBodyPart(): FunctionBodyPartContext { - return this.getTypedRuleContext(FunctionBodyPartContext, 0) as FunctionBodyPartContext; - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionBody) { - return visitor.visitFunctionBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionBodyPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typeBodyElement_list(): TypeBodyElementContext[] { - return this.getTypedRuleContexts(TypeBodyElementContext) as TypeBodyElementContext[]; - } - public typeBodyElement(i: number): TypeBodyElementContext { - return this.getTypedRuleContext(TypeBodyElementContext, i) as TypeBodyElementContext; - } - public returnFeatureMember_list(): ReturnFeatureMemberContext[] { - return this.getTypedRuleContexts(ReturnFeatureMemberContext) as ReturnFeatureMemberContext[]; - } - public returnFeatureMember(i: number): ReturnFeatureMemberContext { - return this.getTypedRuleContext(ReturnFeatureMemberContext, i) as ReturnFeatureMemberContext; - } - public resultExpressionMember(): ResultExpressionMemberContext { - return this.getTypedRuleContext(ResultExpressionMemberContext, 0) as ResultExpressionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionBodyPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionBodyPart) { - return visitor.visitFunctionBodyPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReturnFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public RETURN(): TerminalNode { - return this.getToken(SysMLv2Parser.RETURN, 0); - } - public featureElement(): FeatureElementContext { - return this.getTypedRuleContext(FeatureElementContext, 0) as FeatureElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_returnFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitReturnFeatureMember) { - return visitor.visitReturnFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ResultExpressionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_resultExpressionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitResultExpressionMember) { - return visitor.visitResultExpressionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public EXPR(): TerminalNode { - return this.getToken(SysMLv2Parser.EXPR, 0); - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public functionBody(): FunctionBodyContext { - return this.getTypedRuleContext(FunctionBodyContext, 0) as FunctionBodyContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_expression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExpression) { - return visitor.visitExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PredicateContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public PREDICATE(): TerminalNode { - return this.getToken(SysMLv2Parser.PREDICATE, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public functionBody(): FunctionBodyContext { - return this.getTypedRuleContext(FunctionBodyContext, 0) as FunctionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_predicate; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPredicate) { - return visitor.visitPredicate(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BooleanExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public BOOL(): TerminalNode { - return this.getToken(SysMLv2Parser.BOOL, 0); - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public functionBody(): FunctionBodyContext { - return this.getTypedRuleContext(FunctionBodyContext, 0) as FunctionBodyContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_booleanExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBooleanExpression) { - return visitor.visitBooleanExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InvariantContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public INV(): TerminalNode { - return this.getToken(SysMLv2Parser.INV, 0); - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public functionBody(): FunctionBodyContext { - return this.getTypedRuleContext(FunctionBodyContext, 0) as FunctionBodyContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public TRUE(): TerminalNode { - return this.getToken(SysMLv2Parser.TRUE, 0); - } - public FALSE(): TerminalNode { - return this.getToken(SysMLv2Parser.FALSE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_invariant; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInvariant) { - return visitor.visitInvariant(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedExpressionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedExpressionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedExpressionMember) { - return visitor.visitOwnedExpressionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataReferenceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public elementReferenceMember(): ElementReferenceMemberContext { - return this.getTypedRuleContext(ElementReferenceMemberContext, 0) as ElementReferenceMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataReference; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataReference) { - return visitor.visitMetadataReference(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeReferenceMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typeReference(): TypeReferenceContext { - return this.getTypedRuleContext(TypeReferenceContext, 0) as TypeReferenceContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeReferenceMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeReferenceMember) { - return visitor.visitTypeReferenceMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TypeResultMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typeReference(): TypeReferenceContext { - return this.getTypedRuleContext(TypeReferenceContext, 0) as TypeReferenceContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_typeResultMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTypeResultMember) { - return visitor.visitTypeResultMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReferenceTypingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_referenceTyping; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitReferenceTyping) { - return visitor.visitReferenceTyping(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyResultMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyFeature_(): EmptyFeature_Context { - return this.getTypedRuleContext(EmptyFeature_Context, 0) as EmptyFeature_Context; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyResultMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyResultMember) { - return visitor.visitEmptyResultMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SequenceOperatorExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpressionMember(): OwnedExpressionMemberContext { - return this.getTypedRuleContext(OwnedExpressionMemberContext, 0) as OwnedExpressionMemberContext; - } - public COMMA(): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, 0); - } - public sequenceExpressionListMember(): SequenceExpressionListMemberContext { - return this.getTypedRuleContext(SequenceExpressionListMemberContext, 0) as SequenceExpressionListMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sequenceOperatorExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSequenceOperatorExpression) { - return visitor.visitSequenceOperatorExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SequenceExpressionListMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public sequenceExpressionList(): SequenceExpressionListContext { - return this.getTypedRuleContext(SequenceExpressionListContext, 0) as SequenceExpressionListContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sequenceExpressionListMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSequenceExpressionListMember) { - return visitor.visitSequenceExpressionListMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BodyArgumentMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public bodyArgument(): BodyArgumentContext { - return this.getTypedRuleContext(BodyArgumentContext, 0) as BodyArgumentContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bodyArgumentMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBodyArgumentMember) { - return visitor.visitBodyArgumentMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BodyArgumentContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public bodyArgumentValue(): BodyArgumentValueContext { - return this.getTypedRuleContext(BodyArgumentValueContext, 0) as BodyArgumentValueContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bodyArgument; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBodyArgument) { - return visitor.visitBodyArgument(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BodyArgumentValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public bodyExpression(): BodyExpressionContext { - return this.getTypedRuleContext(BodyExpressionContext, 0) as BodyExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bodyArgumentValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBodyArgumentValue) { - return visitor.visitBodyArgumentValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionReferenceArgumentMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public functionReferenceArgument(): FunctionReferenceArgumentContext { - return this.getTypedRuleContext(FunctionReferenceArgumentContext, 0) as FunctionReferenceArgumentContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionReferenceArgumentMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionReferenceArgumentMember) { - return visitor.visitFunctionReferenceArgumentMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionReferenceArgumentContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public functionReferenceArgumentValue(): FunctionReferenceArgumentValueContext { - return this.getTypedRuleContext(FunctionReferenceArgumentValueContext, 0) as FunctionReferenceArgumentValueContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionReferenceArgument; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionReferenceArgument) { - return visitor.visitFunctionReferenceArgument(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionReferenceArgumentValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public functionReferenceExpression(): FunctionReferenceExpressionContext { - return this.getTypedRuleContext(FunctionReferenceExpressionContext, 0) as FunctionReferenceExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionReferenceArgumentValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionReferenceArgumentValue) { - return visitor.visitFunctionReferenceArgumentValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionReferenceExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public functionReferenceMember(): FunctionReferenceMemberContext { - return this.getTypedRuleContext(FunctionReferenceMemberContext, 0) as FunctionReferenceMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionReferenceExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionReferenceExpression) { - return visitor.visitFunctionReferenceExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionReferenceMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public functionReference(): FunctionReferenceContext { - return this.getTypedRuleContext(FunctionReferenceContext, 0) as FunctionReferenceContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionReferenceMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionReferenceMember) { - return visitor.visitFunctionReferenceMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FunctionReferenceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public referenceTyping(): ReferenceTypingContext { - return this.getTypedRuleContext(ReferenceTypingContext, 0) as ReferenceTypingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_functionReference; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFunctionReference) { - return visitor.visitFunctionReference(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureChainMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureChainMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureChainMember) { - return visitor.visitFeatureChainMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedFeatureChainMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureChain(): FeatureChainContext { - return this.getTypedRuleContext(FeatureChainContext, 0) as FeatureChainContext; - } - public ownedFeatureChain(): OwnedFeatureChainContext { - return this.getTypedRuleContext(OwnedFeatureChainContext, 0) as OwnedFeatureChainContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedFeatureChainMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedFeatureChainMember) { - return visitor.visitOwnedFeatureChainMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureReferenceMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureReference(): FeatureReferenceContext { - return this.getTypedRuleContext(FeatureReferenceContext, 0) as FeatureReferenceContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureReferenceMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureReferenceMember) { - return visitor.visitFeatureReferenceMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureReferenceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureReference; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureReference) { - return visitor.visitFeatureReference(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ElementReferenceMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_elementReferenceMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitElementReferenceMember) { - return visitor.visitElementReferenceMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstructorResultMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public constructorResult(): ConstructorResultContext { - return this.getTypedRuleContext(ConstructorResultContext, 0) as ConstructorResultContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_constructorResultMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConstructorResultMember) { - return visitor.visitConstructorResultMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstructorResultContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public argumentList(): ArgumentListContext { - return this.getTypedRuleContext(ArgumentListContext, 0) as ArgumentListContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_constructorResult; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConstructorResult) { - return visitor.visitConstructorResult(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InstantiatedTypeMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_instantiatedTypeMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInstantiatedTypeMember) { - return visitor.visitInstantiatedTypeMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InstantiatedTypeReferenceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_instantiatedTypeReference; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInstantiatedTypeReference) { - return visitor.visitInstantiatedTypeReference(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamedArgumentMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public namedArgument(): NamedArgumentContext { - return this.getTypedRuleContext(NamedArgumentContext, 0) as NamedArgumentContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namedArgumentMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamedArgumentMember) { - return visitor.visitNamedArgumentMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ParameterRedefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_parameterRedefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitParameterRedefinition) { - return visitor.visitParameterRedefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionBodyMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public expressionBody(): ExpressionBodyContext { - return this.getTypedRuleContext(ExpressionBodyContext, 0) as ExpressionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_expressionBodyMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExpressionBodyMember) { - return visitor.visitExpressionBodyMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public functionBodyPart(): FunctionBodyPartContext { - return this.getTypedRuleContext(FunctionBodyPartContext, 0) as FunctionBodyPartContext; - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_expressionBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExpressionBody) { - return visitor.visitExpressionBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BooleanValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public TRUE(): TerminalNode { - return this.getToken(SysMLv2Parser.TRUE, 0); - } - public FALSE(): TerminalNode { - return this.getToken(SysMLv2Parser.FALSE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_booleanValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBooleanValue) { - return visitor.visitBooleanValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RealValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, 0); - } - public INTEGER_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.INTEGER); - } - public INTEGER(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.INTEGER, i); - } - public REAL(): TerminalNode { - return this.getToken(SysMLv2Parser.REAL, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_realValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRealValue) { - return visitor.visitRealValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InteractionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public INTERACTION(): TerminalNode { - return this.getToken(SysMLv2Parser.INTERACTION, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interaction; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInteraction) { - return visitor.visitInteraction(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public FLOW(): TerminalNode { - return this.getToken(SysMLv2Parser.FLOW, 0); - } - public flowDeclaration(): FlowDeclarationContext { - return this.getTypedRuleContext(FlowDeclarationContext, 0) as FlowDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flow; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlow) { - return visitor.visitFlow(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SuccessionFlowContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featurePrefix(): FeaturePrefixContext { - return this.getTypedRuleContext(FeaturePrefixContext, 0) as FeaturePrefixContext; - } - public SUCCESSION(): TerminalNode { - return this.getToken(SysMLv2Parser.SUCCESSION, 0); - } - public FLOW(): TerminalNode { - return this.getToken(SysMLv2Parser.FLOW, 0); - } - public flowDeclaration(): FlowDeclarationContext { - return this.getTypedRuleContext(FlowDeclarationContext, 0) as FlowDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_successionFlow; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSuccessionFlow) { - return visitor.visitSuccessionFlow(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public OF(): TerminalNode { - return this.getToken(SysMLv2Parser.OF, 0); - } - public payloadFeatureMember(): PayloadFeatureMemberContext { - return this.getTypedRuleContext(PayloadFeatureMemberContext, 0) as PayloadFeatureMemberContext; - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public flowEndMember_list(): FlowEndMemberContext[] { - return this.getTypedRuleContexts(FlowEndMemberContext) as FlowEndMemberContext[]; - } - public flowEndMember(i: number): FlowEndMemberContext { - return this.getTypedRuleContext(FlowEndMemberContext, i) as FlowEndMemberContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public ALL(): TerminalNode { - return this.getToken(SysMLv2Parser.ALL, 0); - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public flowPayloadFeatureMember(): FlowPayloadFeatureMemberContext { - return this.getTypedRuleContext(FlowPayloadFeatureMemberContext, 0) as FlowPayloadFeatureMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowDeclaration) { - return visitor.visitFlowDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PayloadFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public payloadFeature(): PayloadFeatureContext { - return this.getTypedRuleContext(PayloadFeatureContext, 0) as PayloadFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_payloadFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPayloadFeatureMember) { - return visitor.visitPayloadFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PayloadFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public payloadFeatureSpecializationPart(): PayloadFeatureSpecializationPartContext { - return this.getTypedRuleContext(PayloadFeatureSpecializationPartContext, 0) as PayloadFeatureSpecializationPartContext; - } - public ownedFeatureTyping(): OwnedFeatureTypingContext { - return this.getTypedRuleContext(OwnedFeatureTypingContext, 0) as OwnedFeatureTypingContext; - } - public ownedMultiplicity(): OwnedMultiplicityContext { - return this.getTypedRuleContext(OwnedMultiplicityContext, 0) as OwnedMultiplicityContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_payloadFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPayloadFeature) { - return visitor.visitPayloadFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PayloadFeatureSpecializationPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureSpecialization_list(): FeatureSpecializationContext[] { - return this.getTypedRuleContexts(FeatureSpecializationContext) as FeatureSpecializationContext[]; - } - public featureSpecialization(i: number): FeatureSpecializationContext { - return this.getTypedRuleContext(FeatureSpecializationContext, i) as FeatureSpecializationContext; - } - public multiplicityPart(): MultiplicityPartContext { - return this.getTypedRuleContext(MultiplicityPartContext, 0) as MultiplicityPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_payloadFeatureSpecializationPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPayloadFeatureSpecializationPart) { - return visitor.visitPayloadFeatureSpecializationPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowEndMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public flowEnd(): FlowEndContext { - return this.getTypedRuleContext(FlowEndContext, 0) as FlowEndContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowEndMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowEndMember) { - return visitor.visitFlowEndMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowEndContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowEnd; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowEnd) { - return visitor.visitFlowEnd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public flowFeature(): FlowFeatureContext { - return this.getTypedRuleContext(FlowFeatureContext, 0) as FlowFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowFeatureMember) { - return visitor.visitFlowFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public flowFeatureRedefinition(): FlowFeatureRedefinitionContext { - return this.getTypedRuleContext(FlowFeatureRedefinitionContext, 0) as FlowFeatureRedefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowFeature) { - return visitor.visitFlowFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowFeatureRedefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowFeatureRedefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowFeatureRedefinition) { - return visitor.visitFlowFeatureRedefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ValuePartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureValue(): FeatureValueContext { - return this.getTypedRuleContext(FeatureValueContext, 0) as FeatureValueContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_valuePart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitValuePart) { - return visitor.visitValuePart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.EQ, 0); - } - public COLON_EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_EQ, 0); - } - public DEFAULT(): TerminalNode { - return this.getToken(SysMLv2Parser.DEFAULT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureValue) { - return visitor.visitFeatureValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MultiplicityContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public multiplicitySubset(): MultiplicitySubsetContext { - return this.getTypedRuleContext(MultiplicitySubsetContext, 0) as MultiplicitySubsetContext; - } - public multiplicityRange(): MultiplicityRangeContext { - return this.getTypedRuleContext(MultiplicityRangeContext, 0) as MultiplicityRangeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_multiplicity; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMultiplicity) { - return visitor.visitMultiplicity(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MultiplicitySubsetContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public MULTIPLICITY(): TerminalNode { - return this.getToken(SysMLv2Parser.MULTIPLICITY, 0); - } - public subsets(): SubsetsContext { - return this.getTypedRuleContext(SubsetsContext, 0) as SubsetsContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_multiplicitySubset; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMultiplicitySubset) { - return visitor.visitMultiplicitySubset(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MultiplicityRangeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public MULTIPLICITY(): TerminalNode { - return this.getToken(SysMLv2Parser.MULTIPLICITY, 0); - } - public multiplicityBounds(): MultiplicityBoundsContext { - return this.getTypedRuleContext(MultiplicityBoundsContext, 0) as MultiplicityBoundsContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_multiplicityRange; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMultiplicityRange) { - return visitor.visitMultiplicityRange(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedMultiplicityContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedMultiplicityRange(): OwnedMultiplicityRangeContext { - return this.getTypedRuleContext(OwnedMultiplicityRangeContext, 0) as OwnedMultiplicityRangeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedMultiplicity; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedMultiplicity) { - return visitor.visitOwnedMultiplicity(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OwnedMultiplicityRangeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public multiplicityBounds(): MultiplicityBoundsContext { - return this.getTypedRuleContext(MultiplicityBoundsContext, 0) as MultiplicityBoundsContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ownedMultiplicityRange; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOwnedMultiplicityRange) { - return visitor.visitOwnedMultiplicityRange(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MultiplicityBoundsContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LBRACK(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACK, 0); - } - public multiplicityExpressionMember_list(): MultiplicityExpressionMemberContext[] { - return this.getTypedRuleContexts(MultiplicityExpressionMemberContext) as MultiplicityExpressionMemberContext[]; - } - public multiplicityExpressionMember(i: number): MultiplicityExpressionMemberContext { - return this.getTypedRuleContext(MultiplicityExpressionMemberContext, i) as MultiplicityExpressionMemberContext; - } - public RBRACK(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACK, 0); - } - public DOT_DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT_DOT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_multiplicityBounds; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMultiplicityBounds) { - return visitor.visitMultiplicityBounds(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MultiplicityExpressionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public literalExpression(): LiteralExpressionContext { - return this.getTypedRuleContext(LiteralExpressionContext, 0) as LiteralExpressionContext; - } - public featureReferenceExpression(): FeatureReferenceExpressionContext { - return this.getTypedRuleContext(FeatureReferenceExpressionContext, 0) as FeatureReferenceExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_multiplicityExpressionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMultiplicityExpressionMember) { - return visitor.visitMultiplicityExpressionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetaclassContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public typePrefix(): TypePrefixContext { - return this.getTypedRuleContext(TypePrefixContext, 0) as TypePrefixContext; - } - public METACLASS(): TerminalNode { - return this.getToken(SysMLv2Parser.METACLASS, 0); - } - public classifierDeclaration(): ClassifierDeclarationContext { - return this.getTypedRuleContext(ClassifierDeclarationContext, 0) as ClassifierDeclarationContext; - } - public typeBody(): TypeBodyContext { - return this.getTypedRuleContext(TypeBodyContext, 0) as TypeBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metaclass; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetaclass) { - return visitor.visitMetaclass(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrefixMetadataAnnotationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public HASH(): TerminalNode { - return this.getToken(SysMLv2Parser.HASH, 0); - } - public prefixMetadataFeature(): PrefixMetadataFeatureContext { - return this.getTypedRuleContext(PrefixMetadataFeatureContext, 0) as PrefixMetadataFeatureContext; - } - public prefixMetadataUsage(): PrefixMetadataUsageContext { - return this.getTypedRuleContext(PrefixMetadataUsageContext, 0) as PrefixMetadataUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_prefixMetadataAnnotation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPrefixMetadataAnnotation) { - return visitor.visitPrefixMetadataAnnotation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrefixMetadataMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public HASH(): TerminalNode { - return this.getToken(SysMLv2Parser.HASH, 0); - } - public prefixMetadataFeature(): PrefixMetadataFeatureContext { - return this.getTypedRuleContext(PrefixMetadataFeatureContext, 0) as PrefixMetadataFeatureContext; - } - public prefixMetadataUsage(): PrefixMetadataUsageContext { - return this.getTypedRuleContext(PrefixMetadataUsageContext, 0) as PrefixMetadataUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_prefixMetadataMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPrefixMetadataMember) { - return visitor.visitPrefixMetadataMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrefixMetadataFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedFeatureTyping(): OwnedFeatureTypingContext { - return this.getTypedRuleContext(OwnedFeatureTypingContext, 0) as OwnedFeatureTypingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_prefixMetadataFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPrefixMetadataFeature) { - return visitor.visitPrefixMetadataFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public metadataFeatureDeclaration(): MetadataFeatureDeclarationContext { - return this.getTypedRuleContext(MetadataFeatureDeclarationContext, 0) as MetadataFeatureDeclarationContext; - } - public metadataBody(): MetadataBodyContext { - return this.getTypedRuleContext(MetadataBodyContext, 0) as MetadataBodyContext; - } - public AT_SIGN(): TerminalNode { - return this.getToken(SysMLv2Parser.AT_SIGN, 0); - } - public METADATA(): TerminalNode { - return this.getToken(SysMLv2Parser.METADATA, 0); - } - public prefixMetadataMember_list(): PrefixMetadataMemberContext[] { - return this.getTypedRuleContexts(PrefixMetadataMemberContext) as PrefixMetadataMemberContext[]; - } - public prefixMetadataMember(i: number): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, i) as PrefixMetadataMemberContext; - } - public ABOUT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABOUT, 0); - } - public annotation_list(): AnnotationContext[] { - return this.getTypedRuleContexts(AnnotationContext) as AnnotationContext[]; - } - public annotation(i: number): AnnotationContext { - return this.getTypedRuleContext(AnnotationContext, i) as AnnotationContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataFeature) { - return visitor.visitMetadataFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataFeatureDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedFeatureTyping(): OwnedFeatureTypingContext { - return this.getTypedRuleContext(OwnedFeatureTypingContext, 0) as OwnedFeatureTypingContext; - } - public COLON(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON, 0); - } - public TYPED(): TerminalNode { - return this.getToken(SysMLv2Parser.TYPED, 0); - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataFeatureDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataFeatureDeclaration) { - return visitor.visitMetadataFeatureDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public metadataBodyElement_list(): MetadataBodyElementContext[] { - return this.getTypedRuleContexts(MetadataBodyElementContext) as MetadataBodyElementContext[]; - } - public metadataBodyElement(i: number): MetadataBodyElementContext { - return this.getTypedRuleContext(MetadataBodyElementContext, i) as MetadataBodyElementContext; - } - public definitionMember_list(): DefinitionMemberContext[] { - return this.getTypedRuleContexts(DefinitionMemberContext) as DefinitionMemberContext[]; - } - public definitionMember(i: number): DefinitionMemberContext { - return this.getTypedRuleContext(DefinitionMemberContext, i) as DefinitionMemberContext; - } - public metadataBodyUsageMember_list(): MetadataBodyUsageMemberContext[] { - return this.getTypedRuleContexts(MetadataBodyUsageMemberContext) as MetadataBodyUsageMemberContext[]; - } - public metadataBodyUsageMember(i: number): MetadataBodyUsageMemberContext { - return this.getTypedRuleContext(MetadataBodyUsageMemberContext, i) as MetadataBodyUsageMemberContext; - } - public aliasMember_list(): AliasMemberContext[] { - return this.getTypedRuleContexts(AliasMemberContext) as AliasMemberContext[]; - } - public aliasMember(i: number): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, i) as AliasMemberContext; - } - public importRule_list(): ImportRuleContext[] { - return this.getTypedRuleContexts(ImportRuleContext) as ImportRuleContext[]; - } - public importRule(i: number): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, i) as ImportRuleContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataBody) { - return visitor.visitMetadataBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataBodyElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonFeatureMember(): NonFeatureMemberContext { - return this.getTypedRuleContext(NonFeatureMemberContext, 0) as NonFeatureMemberContext; - } - public metadataBodyFeatureMember(): MetadataBodyFeatureMemberContext { - return this.getTypedRuleContext(MetadataBodyFeatureMemberContext, 0) as MetadataBodyFeatureMemberContext; - } - public aliasMember(): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, 0) as AliasMemberContext; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataBodyElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataBodyElement) { - return visitor.visitMetadataBodyElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataBodyFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public metadataBodyFeature(): MetadataBodyFeatureContext { - return this.getTypedRuleContext(MetadataBodyFeatureContext, 0) as MetadataBodyFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataBodyFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataBodyFeatureMember) { - return visitor.visitMetadataBodyFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataBodyFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedRedefinition(): OwnedRedefinitionContext { - return this.getTypedRuleContext(OwnedRedefinitionContext, 0) as OwnedRedefinitionContext; - } - public metadataBody(): MetadataBodyContext { - return this.getTypedRuleContext(MetadataBodyContext, 0) as MetadataBodyContext; - } - public FEATURE(): TerminalNode { - return this.getToken(SysMLv2Parser.FEATURE, 0); - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public COLON_GT_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT_GT, 0); - } - public REDEFINES(): TerminalNode { - return this.getToken(SysMLv2Parser.REDEFINES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataBodyFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataBodyFeature) { - return visitor.visitMetadataBodyFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PackageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public packageDeclaration(): PackageDeclarationContext { - return this.getTypedRuleContext(PackageDeclarationContext, 0) as PackageDeclarationContext; - } - public packageBody(): PackageBodyContext { - return this.getTypedRuleContext(PackageBodyContext, 0) as PackageBodyContext; - } - public prefixMetadataMember_list(): PrefixMetadataMemberContext[] { - return this.getTypedRuleContexts(PrefixMetadataMemberContext) as PrefixMetadataMemberContext[]; - } - public prefixMetadataMember(i: number): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, i) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_package; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPackage) { - return visitor.visitPackage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LibraryPackageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LIBRARY(): TerminalNode { - return this.getToken(SysMLv2Parser.LIBRARY, 0); - } - public packageDeclaration(): PackageDeclarationContext { - return this.getTypedRuleContext(PackageDeclarationContext, 0) as PackageDeclarationContext; - } - public packageBody(): PackageBodyContext { - return this.getTypedRuleContext(PackageBodyContext, 0) as PackageBodyContext; - } - public STANDARD(): TerminalNode { - return this.getToken(SysMLv2Parser.STANDARD, 0); - } - public prefixMetadataMember_list(): PrefixMetadataMemberContext[] { - return this.getTypedRuleContexts(PrefixMetadataMemberContext) as PrefixMetadataMemberContext[]; - } - public prefixMetadataMember(i: number): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, i) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_libraryPackage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitLibraryPackage) { - return visitor.visitLibraryPackage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PackageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public PACKAGE(): TerminalNode { - return this.getToken(SysMLv2Parser.PACKAGE, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_packageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPackageDeclaration) { - return visitor.visitPackageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PackageBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public packageBodyElement_list(): PackageBodyElementContext[] { - return this.getTypedRuleContexts(PackageBodyElementContext) as PackageBodyElementContext[]; - } - public packageBodyElement(i: number): PackageBodyElementContext { - return this.getTypedRuleContext(PackageBodyElementContext, i) as PackageBodyElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_packageBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPackageBody) { - return visitor.visitPackageBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ElementFilterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public FILTER(): TerminalNode { - return this.getToken(SysMLv2Parser.FILTER, 0); - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_elementFilterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitElementFilterMember) { - return visitor.visitElementFilterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DependencyDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName_list(): QualifiedNameContext[] { - return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; - } - public qualifiedName(i: number): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_dependencyDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDependencyDeclaration) { - return visitor.visitDependencyDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AnnotatingMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public annotatingElement(): AnnotatingElementContext { - return this.getTypedRuleContext(AnnotatingElementContext, 0) as AnnotatingElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_annotatingMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAnnotatingMember) { - return visitor.visitAnnotatingMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PackageBodyElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public packageMember(): PackageMemberContext { - return this.getTypedRuleContext(PackageMemberContext, 0) as PackageMemberContext; - } - public elementFilterMember(): ElementFilterMemberContext { - return this.getTypedRuleContext(ElementFilterMemberContext, 0) as ElementFilterMemberContext; - } - public aliasMember(): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, 0) as AliasMemberContext; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_packageBodyElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPackageBodyElement) { - return visitor.visitPackageBodyElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PackageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public definitionElement(): DefinitionElementContext { - return this.getTypedRuleContext(DefinitionElementContext, 0) as DefinitionElementContext; - } - public usageElement(): UsageElementContext { - return this.getTypedRuleContext(UsageElementContext, 0) as UsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_packageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPackageMember) { - return visitor.visitPackageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public package_(): PackageContext { - return this.getTypedRuleContext(PackageContext, 0) as PackageContext; - } - public libraryPackage(): LibraryPackageContext { - return this.getTypedRuleContext(LibraryPackageContext, 0) as LibraryPackageContext; - } - public annotatingElement(): AnnotatingElementContext { - return this.getTypedRuleContext(AnnotatingElementContext, 0) as AnnotatingElementContext; - } - public dependency(): DependencyContext { - return this.getTypedRuleContext(DependencyContext, 0) as DependencyContext; - } - public attributeDefinition(): AttributeDefinitionContext { - return this.getTypedRuleContext(AttributeDefinitionContext, 0) as AttributeDefinitionContext; - } - public enumerationDefinition(): EnumerationDefinitionContext { - return this.getTypedRuleContext(EnumerationDefinitionContext, 0) as EnumerationDefinitionContext; - } - public occurrenceDefinition(): OccurrenceDefinitionContext { - return this.getTypedRuleContext(OccurrenceDefinitionContext, 0) as OccurrenceDefinitionContext; - } - public individualDefinition(): IndividualDefinitionContext { - return this.getTypedRuleContext(IndividualDefinitionContext, 0) as IndividualDefinitionContext; - } - public itemDefinition(): ItemDefinitionContext { - return this.getTypedRuleContext(ItemDefinitionContext, 0) as ItemDefinitionContext; - } - public partDefinition(): PartDefinitionContext { - return this.getTypedRuleContext(PartDefinitionContext, 0) as PartDefinitionContext; - } - public connectionDefinition(): ConnectionDefinitionContext { - return this.getTypedRuleContext(ConnectionDefinitionContext, 0) as ConnectionDefinitionContext; - } - public flowDefinition(): FlowDefinitionContext { - return this.getTypedRuleContext(FlowDefinitionContext, 0) as FlowDefinitionContext; - } - public interfaceDefinition(): InterfaceDefinitionContext { - return this.getTypedRuleContext(InterfaceDefinitionContext, 0) as InterfaceDefinitionContext; - } - public portDefinition(): PortDefinitionContext { - return this.getTypedRuleContext(PortDefinitionContext, 0) as PortDefinitionContext; - } - public actionDefinition(): ActionDefinitionContext { - return this.getTypedRuleContext(ActionDefinitionContext, 0) as ActionDefinitionContext; - } - public calculationDefinition(): CalculationDefinitionContext { - return this.getTypedRuleContext(CalculationDefinitionContext, 0) as CalculationDefinitionContext; - } - public stateDefinition(): StateDefinitionContext { - return this.getTypedRuleContext(StateDefinitionContext, 0) as StateDefinitionContext; - } - public constraintDefinition(): ConstraintDefinitionContext { - return this.getTypedRuleContext(ConstraintDefinitionContext, 0) as ConstraintDefinitionContext; - } - public requirementDefinition(): RequirementDefinitionContext { - return this.getTypedRuleContext(RequirementDefinitionContext, 0) as RequirementDefinitionContext; - } - public concernDefinition(): ConcernDefinitionContext { - return this.getTypedRuleContext(ConcernDefinitionContext, 0) as ConcernDefinitionContext; - } - public caseDefinition(): CaseDefinitionContext { - return this.getTypedRuleContext(CaseDefinitionContext, 0) as CaseDefinitionContext; - } - public analysisCaseDefinition(): AnalysisCaseDefinitionContext { - return this.getTypedRuleContext(AnalysisCaseDefinitionContext, 0) as AnalysisCaseDefinitionContext; - } - public verificationCaseDefinition(): VerificationCaseDefinitionContext { - return this.getTypedRuleContext(VerificationCaseDefinitionContext, 0) as VerificationCaseDefinitionContext; - } - public useCaseDefinition(): UseCaseDefinitionContext { - return this.getTypedRuleContext(UseCaseDefinitionContext, 0) as UseCaseDefinitionContext; - } - public viewDefinition(): ViewDefinitionContext { - return this.getTypedRuleContext(ViewDefinitionContext, 0) as ViewDefinitionContext; - } - public viewpointDefinition(): ViewpointDefinitionContext { - return this.getTypedRuleContext(ViewpointDefinitionContext, 0) as ViewpointDefinitionContext; - } - public renderingDefinition(): RenderingDefinitionContext { - return this.getTypedRuleContext(RenderingDefinitionContext, 0) as RenderingDefinitionContext; - } - public metadataDefinition(): MetadataDefinitionContext { - return this.getTypedRuleContext(MetadataDefinitionContext, 0) as MetadataDefinitionContext; - } - public allocationDefinition(): AllocationDefinitionContext { - return this.getTypedRuleContext(AllocationDefinitionContext, 0) as AllocationDefinitionContext; - } - public extendedDefinition(): ExtendedDefinitionContext { - return this.getTypedRuleContext(ExtendedDefinitionContext, 0) as ExtendedDefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionElement) { - return visitor.visitDefinitionElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonOccurrenceUsageElement(): NonOccurrenceUsageElementContext { - return this.getTypedRuleContext(NonOccurrenceUsageElementContext, 0) as NonOccurrenceUsageElementContext; - } - public occurrenceUsageElement(): OccurrenceUsageElementContext { - return this.getTypedRuleContext(OccurrenceUsageElementContext, 0) as OccurrenceUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsageElement) { - return visitor.visitUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BasicDefinitionPrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ABSTRACT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABSTRACT, 0); - } - public VARIATION(): TerminalNode { - return this.getToken(SysMLv2Parser.VARIATION, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_basicDefinitionPrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBasicDefinitionPrefix) { - return visitor.visitBasicDefinitionPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionExtensionKeywordContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public prefixMetadataMember(): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, 0) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionExtensionKeyword; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionExtensionKeyword) { - return visitor.visitDefinitionExtensionKeyword(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionPrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public basicDefinitionPrefix(): BasicDefinitionPrefixContext { - return this.getTypedRuleContext(BasicDefinitionPrefixContext, 0) as BasicDefinitionPrefixContext; - } - public definitionExtensionKeyword_list(): DefinitionExtensionKeywordContext[] { - return this.getTypedRuleContexts(DefinitionExtensionKeywordContext) as DefinitionExtensionKeywordContext[]; - } - public definitionExtensionKeyword(i: number): DefinitionExtensionKeywordContext { - return this.getTypedRuleContext(DefinitionExtensionKeywordContext, i) as DefinitionExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionPrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionPrefix) { - return visitor.visitDefinitionPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public definitionBody(): DefinitionBodyContext { - return this.getTypedRuleContext(DefinitionBodyContext, 0) as DefinitionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinition) { - return visitor.visitDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public subclassificationPart(): SubclassificationPartContext { - return this.getTypedRuleContext(SubclassificationPartContext, 0) as SubclassificationPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionDeclaration) { - return visitor.visitDefinitionDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public definitionBodyItem_list(): DefinitionBodyItemContext[] { - return this.getTypedRuleContexts(DefinitionBodyItemContext) as DefinitionBodyItemContext[]; - } - public definitionBodyItem(i: number): DefinitionBodyItemContext { - return this.getTypedRuleContext(DefinitionBodyItemContext, i) as DefinitionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionBody) { - return visitor.visitDefinitionBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public definitionBodyItemContent(): DefinitionBodyItemContentContext { - return this.getTypedRuleContext(DefinitionBodyItemContentContext, 0) as DefinitionBodyItemContentContext; - } - public occurrenceUsageElement(): OccurrenceUsageElementContext { - return this.getTypedRuleContext(OccurrenceUsageElementContext, 0) as OccurrenceUsageElementContext; - } - public sourceSuccessionMember(): SourceSuccessionMemberContext { - return this.getTypedRuleContext(SourceSuccessionMemberContext, 0) as SourceSuccessionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionBodyItem) { - return visitor.visitDefinitionBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionBodyItemContentContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ALIAS(): TerminalNode { - return this.getToken(SysMLv2Parser.ALIAS, 0); - } - public FOR(): TerminalNode { - return this.getToken(SysMLv2Parser.FOR, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public LT(): TerminalNode { - return this.getToken(SysMLv2Parser.LT, 0); - } - public name_list(): NameContext[] { - return this.getTypedRuleContexts(NameContext) as NameContext[]; - } - public name(i: number): NameContext { - return this.getTypedRuleContext(NameContext, i) as NameContext; - } - public GT(): TerminalNode { - return this.getToken(SysMLv2Parser.GT, 0); - } - public VARIANT(): TerminalNode { - return this.getToken(SysMLv2Parser.VARIANT, 0); - } - public variantUsageElement(): VariantUsageElementContext { - return this.getTypedRuleContext(VariantUsageElementContext, 0) as VariantUsageElementContext; - } - public definitionElement(): DefinitionElementContext { - return this.getTypedRuleContext(DefinitionElementContext, 0) as DefinitionElementContext; - } - public nonOccurrenceUsageElement(): NonOccurrenceUsageElementContext { - return this.getTypedRuleContext(NonOccurrenceUsageElementContext, 0) as NonOccurrenceUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionBodyItemContent; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionBodyItemContent) { - return visitor.visitDefinitionBodyItemContent(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefinitionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public definitionElement(): DefinitionElementContext { - return this.getTypedRuleContext(DefinitionElementContext, 0) as DefinitionElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_definitionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefinitionMember) { - return visitor.visitDefinitionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VariantUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public VARIANT(): TerminalNode { - return this.getToken(SysMLv2Parser.VARIANT, 0); - } - public variantUsageElement(): VariantUsageElementContext { - return this.getTypedRuleContext(VariantUsageElementContext, 0) as VariantUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_variantUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitVariantUsageMember) { - return visitor.visitVariantUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NonOccurrenceUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public nonOccurrenceUsageElement(): NonOccurrenceUsageElementContext { - return this.getTypedRuleContext(NonOccurrenceUsageElementContext, 0) as NonOccurrenceUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nonOccurrenceUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNonOccurrenceUsageMember) { - return visitor.visitNonOccurrenceUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OccurrenceUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public occurrenceUsageElement(): OccurrenceUsageElementContext { - return this.getTypedRuleContext(OccurrenceUsageElementContext, 0) as OccurrenceUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_occurrenceUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOccurrenceUsageMember) { - return visitor.visitOccurrenceUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StructureUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public structureUsageElement(): StructureUsageElementContext { - return this.getTypedRuleContext(StructureUsageElementContext, 0) as StructureUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_structureUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStructureUsageMember) { - return visitor.visitStructureUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BehaviorUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public behaviorUsageElement(): BehaviorUsageElementContext { - return this.getTypedRuleContext(BehaviorUsageElementContext, 0) as BehaviorUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_behaviorUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBehaviorUsageMember) { - return visitor.visitBehaviorUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RefPrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureDirection(): FeatureDirectionContext { - return this.getTypedRuleContext(FeatureDirectionContext, 0) as FeatureDirectionContext; - } - public DERIVED(): TerminalNode { - return this.getToken(SysMLv2Parser.DERIVED, 0); - } - public CONSTANT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONSTANT, 0); - } - public ABSTRACT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABSTRACT, 0); - } - public VARIATION(): TerminalNode { - return this.getToken(SysMLv2Parser.VARIATION, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_refPrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRefPrefix) { - return visitor.visitRefPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BasicUsagePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public refPrefix(): RefPrefixContext { - return this.getTypedRuleContext(RefPrefixContext, 0) as RefPrefixContext; - } - public REF(): TerminalNode { - return this.getToken(SysMLv2Parser.REF, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_basicUsagePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBasicUsagePrefix) { - return visitor.visitBasicUsagePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EndUsagePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public END(): TerminalNode { - return this.getToken(SysMLv2Parser.END, 0); - } - public ownedCrossFeatureMember(): OwnedCrossFeatureMemberContext { - return this.getTypedRuleContext(OwnedCrossFeatureMemberContext, 0) as OwnedCrossFeatureMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_endUsagePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEndUsagePrefix) { - return visitor.visitEndUsagePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsageExtensionKeywordContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public prefixMetadataMember(): PrefixMetadataMemberContext { - return this.getTypedRuleContext(PrefixMetadataMemberContext, 0) as PrefixMetadataMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usageExtensionKeyword; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsageExtensionKeyword) { - return visitor.visitUsageExtensionKeyword(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UnextendedUsagePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public endUsagePrefix(): EndUsagePrefixContext { - return this.getTypedRuleContext(EndUsagePrefixContext, 0) as EndUsagePrefixContext; - } - public basicUsagePrefix(): BasicUsagePrefixContext { - return this.getTypedRuleContext(BasicUsagePrefixContext, 0) as BasicUsagePrefixContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_unextendedUsagePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUnextendedUsagePrefix) { - return visitor.visitUnextendedUsagePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsagePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public unextendedUsagePrefix(): UnextendedUsagePrefixContext { - return this.getTypedRuleContext(UnextendedUsagePrefixContext, 0) as UnextendedUsagePrefixContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usagePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsagePrefix) { - return visitor.visitUsagePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageCompletion(): UsageCompletionContext { - return this.getTypedRuleContext(UsageCompletionContext, 0) as UsageCompletionContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsage) { - return visitor.visitUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsageDeclaration) { - return visitor.visitUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsageCompletionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usageCompletion; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsageCompletion) { - return visitor.visitUsageCompletion(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UsageBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionBody(): DefinitionBodyContext { - return this.getTypedRuleContext(DefinitionBodyContext, 0) as DefinitionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_usageBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUsageBody) { - return visitor.visitUsageBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefaultReferenceUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public refPrefix(): RefPrefixContext { - return this.getTypedRuleContext(RefPrefixContext, 0) as RefPrefixContext; - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_defaultReferenceUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefaultReferenceUsage) { - return visitor.visitDefaultReferenceUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReferenceUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public REF(): TerminalNode { - return this.getToken(SysMLv2Parser.REF, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public endUsagePrefix(): EndUsagePrefixContext { - return this.getTypedRuleContext(EndUsagePrefixContext, 0) as EndUsagePrefixContext; - } - public refPrefix(): RefPrefixContext { - return this.getTypedRuleContext(RefPrefixContext, 0) as RefPrefixContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_referenceUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitReferenceUsage) { - return visitor.visitReferenceUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EndFeatureUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public endUsagePrefix(): EndUsagePrefixContext { - return this.getTypedRuleContext(EndUsagePrefixContext, 0) as EndUsagePrefixContext; - } - public featureDeclaration(): FeatureDeclarationContext { - return this.getTypedRuleContext(FeatureDeclarationContext, 0) as FeatureDeclarationContext; - } - public usageCompletion(): UsageCompletionContext { - return this.getTypedRuleContext(UsageCompletionContext, 0) as UsageCompletionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_endFeatureUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEndFeatureUsage) { - return visitor.visitEndFeatureUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VariantReferenceContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public featureSpecialization_list(): FeatureSpecializationContext[] { - return this.getTypedRuleContexts(FeatureSpecializationContext) as FeatureSpecializationContext[]; - } - public featureSpecialization(i: number): FeatureSpecializationContext { - return this.getTypedRuleContext(FeatureSpecializationContext, i) as FeatureSpecializationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_variantReference; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitVariantReference) { - return visitor.visitVariantReference(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NonOccurrenceUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public referenceUsage(): ReferenceUsageContext { - return this.getTypedRuleContext(ReferenceUsageContext, 0) as ReferenceUsageContext; - } - public endFeatureUsage(): EndFeatureUsageContext { - return this.getTypedRuleContext(EndFeatureUsageContext, 0) as EndFeatureUsageContext; - } - public attributeUsage(): AttributeUsageContext { - return this.getTypedRuleContext(AttributeUsageContext, 0) as AttributeUsageContext; - } - public enumerationUsage(): EnumerationUsageContext { - return this.getTypedRuleContext(EnumerationUsageContext, 0) as EnumerationUsageContext; - } - public bindingConnectorAsUsage(): BindingConnectorAsUsageContext { - return this.getTypedRuleContext(BindingConnectorAsUsageContext, 0) as BindingConnectorAsUsageContext; - } - public successionAsUsage(): SuccessionAsUsageContext { - return this.getTypedRuleContext(SuccessionAsUsageContext, 0) as SuccessionAsUsageContext; - } - public extendedUsage(): ExtendedUsageContext { - return this.getTypedRuleContext(ExtendedUsageContext, 0) as ExtendedUsageContext; - } - public defaultReferenceUsage(): DefaultReferenceUsageContext { - return this.getTypedRuleContext(DefaultReferenceUsageContext, 0) as DefaultReferenceUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nonOccurrenceUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNonOccurrenceUsageElement) { - return visitor.visitNonOccurrenceUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OccurrenceUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public structureUsageElement(): StructureUsageElementContext { - return this.getTypedRuleContext(StructureUsageElementContext, 0) as StructureUsageElementContext; - } - public behaviorUsageElement(): BehaviorUsageElementContext { - return this.getTypedRuleContext(BehaviorUsageElementContext, 0) as BehaviorUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_occurrenceUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOccurrenceUsageElement) { - return visitor.visitOccurrenceUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StructureUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsage(): OccurrenceUsageContext { - return this.getTypedRuleContext(OccurrenceUsageContext, 0) as OccurrenceUsageContext; - } - public individualUsage(): IndividualUsageContext { - return this.getTypedRuleContext(IndividualUsageContext, 0) as IndividualUsageContext; - } - public portionUsage(): PortionUsageContext { - return this.getTypedRuleContext(PortionUsageContext, 0) as PortionUsageContext; - } - public eventOccurrenceUsage(): EventOccurrenceUsageContext { - return this.getTypedRuleContext(EventOccurrenceUsageContext, 0) as EventOccurrenceUsageContext; - } - public itemUsage(): ItemUsageContext { - return this.getTypedRuleContext(ItemUsageContext, 0) as ItemUsageContext; - } - public partUsage(): PartUsageContext { - return this.getTypedRuleContext(PartUsageContext, 0) as PartUsageContext; - } - public viewUsage(): ViewUsageContext { - return this.getTypedRuleContext(ViewUsageContext, 0) as ViewUsageContext; - } - public renderingUsage(): RenderingUsageContext { - return this.getTypedRuleContext(RenderingUsageContext, 0) as RenderingUsageContext; - } - public portUsage(): PortUsageContext { - return this.getTypedRuleContext(PortUsageContext, 0) as PortUsageContext; - } - public connectionUsage(): ConnectionUsageContext { - return this.getTypedRuleContext(ConnectionUsageContext, 0) as ConnectionUsageContext; - } - public interfaceUsage(): InterfaceUsageContext { - return this.getTypedRuleContext(InterfaceUsageContext, 0) as InterfaceUsageContext; - } - public allocationUsage(): AllocationUsageContext { - return this.getTypedRuleContext(AllocationUsageContext, 0) as AllocationUsageContext; - } - public message(): MessageContext { - return this.getTypedRuleContext(MessageContext, 0) as MessageContext; - } - public flowUsage(): FlowUsageContext { - return this.getTypedRuleContext(FlowUsageContext, 0) as FlowUsageContext; - } - public successionFlowUsage(): SuccessionFlowUsageContext { - return this.getTypedRuleContext(SuccessionFlowUsageContext, 0) as SuccessionFlowUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_structureUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStructureUsageElement) { - return visitor.visitStructureUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BehaviorUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionUsage(): ActionUsageContext { - return this.getTypedRuleContext(ActionUsageContext, 0) as ActionUsageContext; - } - public calculationUsage(): CalculationUsageContext { - return this.getTypedRuleContext(CalculationUsageContext, 0) as CalculationUsageContext; - } - public stateUsage(): StateUsageContext { - return this.getTypedRuleContext(StateUsageContext, 0) as StateUsageContext; - } - public constraintUsage(): ConstraintUsageContext { - return this.getTypedRuleContext(ConstraintUsageContext, 0) as ConstraintUsageContext; - } - public requirementUsage(): RequirementUsageContext { - return this.getTypedRuleContext(RequirementUsageContext, 0) as RequirementUsageContext; - } - public concernUsage(): ConcernUsageContext { - return this.getTypedRuleContext(ConcernUsageContext, 0) as ConcernUsageContext; - } - public caseUsage(): CaseUsageContext { - return this.getTypedRuleContext(CaseUsageContext, 0) as CaseUsageContext; - } - public analysisCaseUsage(): AnalysisCaseUsageContext { - return this.getTypedRuleContext(AnalysisCaseUsageContext, 0) as AnalysisCaseUsageContext; - } - public verificationCaseUsage(): VerificationCaseUsageContext { - return this.getTypedRuleContext(VerificationCaseUsageContext, 0) as VerificationCaseUsageContext; - } - public useCaseUsage(): UseCaseUsageContext { - return this.getTypedRuleContext(UseCaseUsageContext, 0) as UseCaseUsageContext; - } - public viewpointUsage(): ViewpointUsageContext { - return this.getTypedRuleContext(ViewpointUsageContext, 0) as ViewpointUsageContext; - } - public performActionUsage(): PerformActionUsageContext { - return this.getTypedRuleContext(PerformActionUsageContext, 0) as PerformActionUsageContext; - } - public exhibitStateUsage(): ExhibitStateUsageContext { - return this.getTypedRuleContext(ExhibitStateUsageContext, 0) as ExhibitStateUsageContext; - } - public includeUseCaseUsage(): IncludeUseCaseUsageContext { - return this.getTypedRuleContext(IncludeUseCaseUsageContext, 0) as IncludeUseCaseUsageContext; - } - public assertConstraintUsage(): AssertConstraintUsageContext { - return this.getTypedRuleContext(AssertConstraintUsageContext, 0) as AssertConstraintUsageContext; - } - public satisfyRequirementUsage(): SatisfyRequirementUsageContext { - return this.getTypedRuleContext(SatisfyRequirementUsageContext, 0) as SatisfyRequirementUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_behaviorUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBehaviorUsageElement) { - return visitor.visitBehaviorUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VariantUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public variantReference(): VariantReferenceContext { - return this.getTypedRuleContext(VariantReferenceContext, 0) as VariantReferenceContext; - } - public referenceUsage(): ReferenceUsageContext { - return this.getTypedRuleContext(ReferenceUsageContext, 0) as ReferenceUsageContext; - } - public attributeUsage(): AttributeUsageContext { - return this.getTypedRuleContext(AttributeUsageContext, 0) as AttributeUsageContext; - } - public bindingConnectorAsUsage(): BindingConnectorAsUsageContext { - return this.getTypedRuleContext(BindingConnectorAsUsageContext, 0) as BindingConnectorAsUsageContext; - } - public successionAsUsage(): SuccessionAsUsageContext { - return this.getTypedRuleContext(SuccessionAsUsageContext, 0) as SuccessionAsUsageContext; - } - public occurrenceUsage(): OccurrenceUsageContext { - return this.getTypedRuleContext(OccurrenceUsageContext, 0) as OccurrenceUsageContext; - } - public individualUsage(): IndividualUsageContext { - return this.getTypedRuleContext(IndividualUsageContext, 0) as IndividualUsageContext; - } - public portionUsage(): PortionUsageContext { - return this.getTypedRuleContext(PortionUsageContext, 0) as PortionUsageContext; - } - public eventOccurrenceUsage(): EventOccurrenceUsageContext { - return this.getTypedRuleContext(EventOccurrenceUsageContext, 0) as EventOccurrenceUsageContext; - } - public itemUsage(): ItemUsageContext { - return this.getTypedRuleContext(ItemUsageContext, 0) as ItemUsageContext; - } - public partUsage(): PartUsageContext { - return this.getTypedRuleContext(PartUsageContext, 0) as PartUsageContext; - } - public viewUsage(): ViewUsageContext { - return this.getTypedRuleContext(ViewUsageContext, 0) as ViewUsageContext; - } - public renderingUsage(): RenderingUsageContext { - return this.getTypedRuleContext(RenderingUsageContext, 0) as RenderingUsageContext; - } - public portUsage(): PortUsageContext { - return this.getTypedRuleContext(PortUsageContext, 0) as PortUsageContext; - } - public connectionUsage(): ConnectionUsageContext { - return this.getTypedRuleContext(ConnectionUsageContext, 0) as ConnectionUsageContext; - } - public interfaceUsage(): InterfaceUsageContext { - return this.getTypedRuleContext(InterfaceUsageContext, 0) as InterfaceUsageContext; - } - public allocationUsage(): AllocationUsageContext { - return this.getTypedRuleContext(AllocationUsageContext, 0) as AllocationUsageContext; - } - public message(): MessageContext { - return this.getTypedRuleContext(MessageContext, 0) as MessageContext; - } - public flowUsage(): FlowUsageContext { - return this.getTypedRuleContext(FlowUsageContext, 0) as FlowUsageContext; - } - public successionFlowUsage(): SuccessionFlowUsageContext { - return this.getTypedRuleContext(SuccessionFlowUsageContext, 0) as SuccessionFlowUsageContext; - } - public behaviorUsageElement(): BehaviorUsageElementContext { - return this.getTypedRuleContext(BehaviorUsageElementContext, 0) as BehaviorUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_variantUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitVariantUsageElement) { - return visitor.visitVariantUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubclassificationPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedSubclassification_list(): OwnedSubclassificationContext[] { - return this.getTypedRuleContexts(OwnedSubclassificationContext) as OwnedSubclassificationContext[]; - } - public ownedSubclassification(i: number): OwnedSubclassificationContext { - return this.getTypedRuleContext(OwnedSubclassificationContext, i) as OwnedSubclassificationContext; - } - public COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT, 0); - } - public SPECIALIZES(): TerminalNode { - return this.getToken(SysMLv2Parser.SPECIALIZES, 0); - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subclassificationPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubclassificationPart) { - return visitor.visitSubclassificationPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AttributeDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionPrefix(): DefinitionPrefixContext { - return this.getTypedRuleContext(DefinitionPrefixContext, 0) as DefinitionPrefixContext; - } - public ATTRIBUTE(): TerminalNode { - return this.getToken(SysMLv2Parser.ATTRIBUTE, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_attributeDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAttributeDefinition) { - return visitor.visitAttributeDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AttributeUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usagePrefix(): UsagePrefixContext { - return this.getTypedRuleContext(UsagePrefixContext, 0) as UsagePrefixContext; - } - public ATTRIBUTE(): TerminalNode { - return this.getToken(SysMLv2Parser.ATTRIBUTE, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_attributeUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAttributeUsage) { - return visitor.visitAttributeUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EnumerationDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ENUM(): TerminalNode { - return this.getToken(SysMLv2Parser.ENUM, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public enumerationBody(): EnumerationBodyContext { - return this.getTypedRuleContext(EnumerationBodyContext, 0) as EnumerationBodyContext; - } - public definitionExtensionKeyword_list(): DefinitionExtensionKeywordContext[] { - return this.getTypedRuleContexts(DefinitionExtensionKeywordContext) as DefinitionExtensionKeywordContext[]; - } - public definitionExtensionKeyword(i: number): DefinitionExtensionKeywordContext { - return this.getTypedRuleContext(DefinitionExtensionKeywordContext, i) as DefinitionExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_enumerationDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEnumerationDefinition) { - return visitor.visitEnumerationDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EnumerationBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public annotatingMember_list(): AnnotatingMemberContext[] { - return this.getTypedRuleContexts(AnnotatingMemberContext) as AnnotatingMemberContext[]; - } - public annotatingMember(i: number): AnnotatingMemberContext { - return this.getTypedRuleContext(AnnotatingMemberContext, i) as AnnotatingMemberContext; - } - public enumerationUsageMember_list(): EnumerationUsageMemberContext[] { - return this.getTypedRuleContexts(EnumerationUsageMemberContext) as EnumerationUsageMemberContext[]; - } - public enumerationUsageMember(i: number): EnumerationUsageMemberContext { - return this.getTypedRuleContext(EnumerationUsageMemberContext, i) as EnumerationUsageMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_enumerationBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEnumerationBody) { - return visitor.visitEnumerationBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EnumerationUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public enumeratedValue(): EnumeratedValueContext { - return this.getTypedRuleContext(EnumeratedValueContext, 0) as EnumeratedValueContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_enumerationUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEnumerationUsageMember) { - return visitor.visitEnumerationUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EnumeratedValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public ENUM(): TerminalNode { - return this.getToken(SysMLv2Parser.ENUM, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_enumeratedValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEnumeratedValue) { - return visitor.visitEnumeratedValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EnumerationUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usagePrefix(): UsagePrefixContext { - return this.getTypedRuleContext(UsagePrefixContext, 0) as UsagePrefixContext; - } - public ENUM(): TerminalNode { - return this.getToken(SysMLv2Parser.ENUM, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_enumerationUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEnumerationUsage) { - return visitor.visitEnumerationUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OccurrenceDefinitionPrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public basicDefinitionPrefix(): BasicDefinitionPrefixContext { - return this.getTypedRuleContext(BasicDefinitionPrefixContext, 0) as BasicDefinitionPrefixContext; - } - public INDIVIDUAL(): TerminalNode { - return this.getToken(SysMLv2Parser.INDIVIDUAL, 0); - } - public emptyMultiplicityMember(): EmptyMultiplicityMemberContext { - return this.getTypedRuleContext(EmptyMultiplicityMemberContext, 0) as EmptyMultiplicityMemberContext; - } - public definitionExtensionKeyword_list(): DefinitionExtensionKeywordContext[] { - return this.getTypedRuleContexts(DefinitionExtensionKeywordContext) as DefinitionExtensionKeywordContext[]; - } - public definitionExtensionKeyword(i: number): DefinitionExtensionKeywordContext { - return this.getTypedRuleContext(DefinitionExtensionKeywordContext, i) as DefinitionExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_occurrenceDefinitionPrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOccurrenceDefinitionPrefix) { - return visitor.visitOccurrenceDefinitionPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OccurrenceDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public OCCURRENCE(): TerminalNode { - return this.getToken(SysMLv2Parser.OCCURRENCE, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_occurrenceDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOccurrenceDefinition) { - return visitor.visitOccurrenceDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IndividualDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public INDIVIDUAL(): TerminalNode { - return this.getToken(SysMLv2Parser.INDIVIDUAL, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public emptyMultiplicityMember(): EmptyMultiplicityMemberContext { - return this.getTypedRuleContext(EmptyMultiplicityMemberContext, 0) as EmptyMultiplicityMemberContext; - } - public basicDefinitionPrefix(): BasicDefinitionPrefixContext { - return this.getTypedRuleContext(BasicDefinitionPrefixContext, 0) as BasicDefinitionPrefixContext; - } - public definitionExtensionKeyword_list(): DefinitionExtensionKeywordContext[] { - return this.getTypedRuleContexts(DefinitionExtensionKeywordContext) as DefinitionExtensionKeywordContext[]; - } - public definitionExtensionKeyword(i: number): DefinitionExtensionKeywordContext { - return this.getTypedRuleContext(DefinitionExtensionKeywordContext, i) as DefinitionExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_individualDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIndividualDefinition) { - return visitor.visitIndividualDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyMultiplicityMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyMultiplicity_(): EmptyMultiplicity_Context { - return this.getTypedRuleContext(EmptyMultiplicity_Context, 0) as EmptyMultiplicity_Context; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyMultiplicityMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyMultiplicityMember) { - return visitor.visitEmptyMultiplicityMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OccurrenceUsagePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public basicUsagePrefix(): BasicUsagePrefixContext { - return this.getTypedRuleContext(BasicUsagePrefixContext, 0) as BasicUsagePrefixContext; - } - public INDIVIDUAL(): TerminalNode { - return this.getToken(SysMLv2Parser.INDIVIDUAL, 0); - } - public portionKind(): PortionKindContext { - return this.getTypedRuleContext(PortionKindContext, 0) as PortionKindContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_occurrenceUsagePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOccurrenceUsagePrefix) { - return visitor.visitOccurrenceUsagePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class OccurrenceUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public OCCURRENCE(): TerminalNode { - return this.getToken(SysMLv2Parser.OCCURRENCE, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_occurrenceUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitOccurrenceUsage) { - return visitor.visitOccurrenceUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IndividualUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public basicUsagePrefix(): BasicUsagePrefixContext { - return this.getTypedRuleContext(BasicUsagePrefixContext, 0) as BasicUsagePrefixContext; - } - public INDIVIDUAL(): TerminalNode { - return this.getToken(SysMLv2Parser.INDIVIDUAL, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_individualUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIndividualUsage) { - return visitor.visitIndividualUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PortionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public basicUsagePrefix(): BasicUsagePrefixContext { - return this.getTypedRuleContext(BasicUsagePrefixContext, 0) as BasicUsagePrefixContext; - } - public portionKind(): PortionKindContext { - return this.getTypedRuleContext(PortionKindContext, 0) as PortionKindContext; - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public INDIVIDUAL(): TerminalNode { - return this.getToken(SysMLv2Parser.INDIVIDUAL, 0); - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_portionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPortionUsage) { - return visitor.visitPortionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PortionKindContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SNAPSHOT(): TerminalNode { - return this.getToken(SysMLv2Parser.SNAPSHOT, 0); - } - public TIMESLICE(): TerminalNode { - return this.getToken(SysMLv2Parser.TIMESLICE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_portionKind; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPortionKind) { - return visitor.visitPortionKind(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EventOccurrenceUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public EVENT(): TerminalNode { - return this.getToken(SysMLv2Parser.EVENT, 0); - } - public usageCompletion(): UsageCompletionContext { - return this.getTypedRuleContext(UsageCompletionContext, 0) as UsageCompletionContext; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public OCCURRENCE(): TerminalNode { - return this.getToken(SysMLv2Parser.OCCURRENCE, 0); - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_eventOccurrenceUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEventOccurrenceUsage) { - return visitor.visitEventOccurrenceUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SourceSuccessionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public sourceSuccession(): SourceSuccessionContext { - return this.getTypedRuleContext(SourceSuccessionContext, 0) as SourceSuccessionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sourceSuccessionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSourceSuccessionMember) { - return visitor.visitSourceSuccessionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SourceSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public sourceEndMember(): SourceEndMemberContext { - return this.getTypedRuleContext(SourceEndMemberContext, 0) as SourceEndMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sourceSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSourceSuccession) { - return visitor.visitSourceSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SourceEndMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public sourceEnd(): SourceEndContext { - return this.getTypedRuleContext(SourceEndContext, 0) as SourceEndContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sourceEndMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSourceEndMember) { - return visitor.visitSourceEndMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SourceEndContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedMultiplicity(): OwnedMultiplicityContext { - return this.getTypedRuleContext(OwnedMultiplicityContext, 0) as OwnedMultiplicityContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sourceEnd; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSourceEnd) { - return visitor.visitSourceEnd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ItemDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public ITEM(): TerminalNode { - return this.getToken(SysMLv2Parser.ITEM, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_itemDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitItemDefinition) { - return visitor.visitItemDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ItemUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public ITEM(): TerminalNode { - return this.getToken(SysMLv2Parser.ITEM, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_itemUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitItemUsage) { - return visitor.visitItemUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PartDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public PART(): TerminalNode { - return this.getToken(SysMLv2Parser.PART, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_partDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPartDefinition) { - return visitor.visitPartDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PartUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public PART(): TerminalNode { - return this.getToken(SysMLv2Parser.PART, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_partUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPartUsage) { - return visitor.visitPartUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PortDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionPrefix(): DefinitionPrefixContext { - return this.getTypedRuleContext(DefinitionPrefixContext, 0) as DefinitionPrefixContext; - } - public PORT(): TerminalNode { - return this.getToken(SysMLv2Parser.PORT, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public conjugatedPortDefinitionMember(): ConjugatedPortDefinitionMemberContext { - return this.getTypedRuleContext(ConjugatedPortDefinitionMemberContext, 0) as ConjugatedPortDefinitionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_portDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPortDefinition) { - return visitor.visitPortDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConjugatedPortDefinitionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public conjugatedPortDefinition(): ConjugatedPortDefinitionContext { - return this.getTypedRuleContext(ConjugatedPortDefinitionContext, 0) as ConjugatedPortDefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_conjugatedPortDefinitionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConjugatedPortDefinitionMember) { - return visitor.visitConjugatedPortDefinitionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConjugatedPortDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public portConjugation(): PortConjugationContext { - return this.getTypedRuleContext(PortConjugationContext, 0) as PortConjugationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_conjugatedPortDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConjugatedPortDefinition) { - return visitor.visitConjugatedPortDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PortUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public PORT(): TerminalNode { - return this.getToken(SysMLv2Parser.PORT, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_portUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPortUsage) { - return visitor.visitPortUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConjugatedPortTypingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public TILDE(): TerminalNode { - return this.getToken(SysMLv2Parser.TILDE, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_conjugatedPortTyping; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConjugatedPortTyping) { - return visitor.visitConjugatedPortTyping(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectionDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public CONNECTION(): TerminalNode { - return this.getToken(SysMLv2Parser.CONNECTION, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connectionDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnectionDefinition) { - return visitor.visitConnectionDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public CONNECTION(): TerminalNode { - return this.getToken(SysMLv2Parser.CONNECTION, 0); - } - public CONNECT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONNECT, 0); - } - public connectorPart(): ConnectorPartContext { - return this.getTypedRuleContext(ConnectorPartContext, 0) as ConnectorPartContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connectionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnectionUsage) { - return visitor.visitConnectionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConnectorPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public binaryConnectorPart(): BinaryConnectorPartContext { - return this.getTypedRuleContext(BinaryConnectorPartContext, 0) as BinaryConnectorPartContext; - } - public naryConnectorPart(): NaryConnectorPartContext { - return this.getTypedRuleContext(NaryConnectorPartContext, 0) as NaryConnectorPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_connectorPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConnectorPart) { - return visitor.visitConnectorPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BinaryConnectorPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_binaryConnectorPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBinaryConnectorPart) { - return visitor.visitBinaryConnectorPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NaryConnectorPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_naryConnectorPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNaryConnectorPart) { - return visitor.visitNaryConnectorPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BindingConnectorAsUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usagePrefix(): UsagePrefixContext { - return this.getTypedRuleContext(UsagePrefixContext, 0) as UsagePrefixContext; - } - public BIND(): TerminalNode { - return this.getToken(SysMLv2Parser.BIND, 0); - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.EQ, 0); - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public BINDING(): TerminalNode { - return this.getToken(SysMLv2Parser.BINDING, 0); - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_bindingConnectorAsUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBindingConnectorAsUsage) { - return visitor.visitBindingConnectorAsUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SuccessionAsUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usagePrefix(): UsagePrefixContext { - return this.getTypedRuleContext(UsagePrefixContext, 0) as UsagePrefixContext; - } - public FIRST(): TerminalNode { - return this.getToken(SysMLv2Parser.FIRST, 0); - } - public connectorEndMember_list(): ConnectorEndMemberContext[] { - return this.getTypedRuleContexts(ConnectorEndMemberContext) as ConnectorEndMemberContext[]; - } - public connectorEndMember(i: number): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, i) as ConnectorEndMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public SUCCESSION(): TerminalNode { - return this.getToken(SysMLv2Parser.SUCCESSION, 0); - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_successionAsUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSuccessionAsUsage) { - return visitor.visitSuccessionAsUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public INTERFACE(): TerminalNode { - return this.getToken(SysMLv2Parser.INTERFACE, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public interfaceBody(): InterfaceBodyContext { - return this.getTypedRuleContext(InterfaceBodyContext, 0) as InterfaceBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceDefinition) { - return visitor.visitInterfaceDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public interfaceBodyItem_list(): InterfaceBodyItemContext[] { - return this.getTypedRuleContexts(InterfaceBodyItemContext) as InterfaceBodyItemContext[]; - } - public interfaceBodyItem(i: number): InterfaceBodyItemContext { - return this.getTypedRuleContext(InterfaceBodyItemContext, i) as InterfaceBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceBody) { - return visitor.visitInterfaceBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionMember(): DefinitionMemberContext { - return this.getTypedRuleContext(DefinitionMemberContext, 0) as DefinitionMemberContext; - } - public variantUsageMember(): VariantUsageMemberContext { - return this.getTypedRuleContext(VariantUsageMemberContext, 0) as VariantUsageMemberContext; - } - public interfaceNonOccurrenceUsageMember(): InterfaceNonOccurrenceUsageMemberContext { - return this.getTypedRuleContext(InterfaceNonOccurrenceUsageMemberContext, 0) as InterfaceNonOccurrenceUsageMemberContext; - } - public interfaceOccurrenceUsageMember(): InterfaceOccurrenceUsageMemberContext { - return this.getTypedRuleContext(InterfaceOccurrenceUsageMemberContext, 0) as InterfaceOccurrenceUsageMemberContext; - } - public sourceSuccessionMember(): SourceSuccessionMemberContext { - return this.getTypedRuleContext(SourceSuccessionMemberContext, 0) as SourceSuccessionMemberContext; - } - public aliasMember(): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, 0) as AliasMemberContext; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceBodyItem) { - return visitor.visitInterfaceBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceNonOccurrenceUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public interfaceNonOccurrenceUsageElement(): InterfaceNonOccurrenceUsageElementContext { - return this.getTypedRuleContext(InterfaceNonOccurrenceUsageElementContext, 0) as InterfaceNonOccurrenceUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceNonOccurrenceUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceNonOccurrenceUsageMember) { - return visitor.visitInterfaceNonOccurrenceUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceNonOccurrenceUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public referenceUsage(): ReferenceUsageContext { - return this.getTypedRuleContext(ReferenceUsageContext, 0) as ReferenceUsageContext; - } - public attributeUsage(): AttributeUsageContext { - return this.getTypedRuleContext(AttributeUsageContext, 0) as AttributeUsageContext; - } - public enumerationUsage(): EnumerationUsageContext { - return this.getTypedRuleContext(EnumerationUsageContext, 0) as EnumerationUsageContext; - } - public bindingConnectorAsUsage(): BindingConnectorAsUsageContext { - return this.getTypedRuleContext(BindingConnectorAsUsageContext, 0) as BindingConnectorAsUsageContext; - } - public successionAsUsage(): SuccessionAsUsageContext { - return this.getTypedRuleContext(SuccessionAsUsageContext, 0) as SuccessionAsUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceNonOccurrenceUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceNonOccurrenceUsageElement) { - return visitor.visitInterfaceNonOccurrenceUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceOccurrenceUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public interfaceOccurrenceUsageElement(): InterfaceOccurrenceUsageElementContext { - return this.getTypedRuleContext(InterfaceOccurrenceUsageElementContext, 0) as InterfaceOccurrenceUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceOccurrenceUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceOccurrenceUsageMember) { - return visitor.visitInterfaceOccurrenceUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceOccurrenceUsageElementContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public defaultInterfaceEnd(): DefaultInterfaceEndContext { - return this.getTypedRuleContext(DefaultInterfaceEndContext, 0) as DefaultInterfaceEndContext; - } - public structureUsageElement(): StructureUsageElementContext { - return this.getTypedRuleContext(StructureUsageElementContext, 0) as StructureUsageElementContext; - } - public behaviorUsageElement(): BehaviorUsageElementContext { - return this.getTypedRuleContext(BehaviorUsageElementContext, 0) as BehaviorUsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceOccurrenceUsageElement; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceOccurrenceUsageElement) { - return visitor.visitInterfaceOccurrenceUsageElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefaultInterfaceEndContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public END(): TerminalNode { - return this.getToken(SysMLv2Parser.END, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_defaultInterfaceEnd; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefaultInterfaceEnd) { - return visitor.visitDefaultInterfaceEnd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public INTERFACE(): TerminalNode { - return this.getToken(SysMLv2Parser.INTERFACE, 0); - } - public interfaceUsageDeclaration(): InterfaceUsageDeclarationContext { - return this.getTypedRuleContext(InterfaceUsageDeclarationContext, 0) as InterfaceUsageDeclarationContext; - } - public interfaceBody(): InterfaceBodyContext { - return this.getTypedRuleContext(InterfaceBodyContext, 0) as InterfaceBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceUsage) { - return visitor.visitInterfaceUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public CONNECT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONNECT, 0); - } - public interfacePart(): InterfacePartContext { - return this.getTypedRuleContext(InterfacePartContext, 0) as InterfacePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceUsageDeclaration) { - return visitor.visitInterfaceUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfacePartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public binaryInterfacePart(): BinaryInterfacePartContext { - return this.getTypedRuleContext(BinaryInterfacePartContext, 0) as BinaryInterfacePartContext; - } - public naryInterfacePart(): NaryInterfacePartContext { - return this.getTypedRuleContext(NaryInterfacePartContext, 0) as NaryInterfacePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfacePart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfacePart) { - return visitor.visitInterfacePart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BinaryInterfacePartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public interfaceEndMember_list(): InterfaceEndMemberContext[] { - return this.getTypedRuleContexts(InterfaceEndMemberContext) as InterfaceEndMemberContext[]; - } - public interfaceEndMember(i: number): InterfaceEndMemberContext { - return this.getTypedRuleContext(InterfaceEndMemberContext, i) as InterfaceEndMemberContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_binaryInterfacePart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitBinaryInterfacePart) { - return visitor.visitBinaryInterfacePart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NaryInterfacePartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.LPAREN, 0); - } - public interfaceEndMember_list(): InterfaceEndMemberContext[] { - return this.getTypedRuleContexts(InterfaceEndMemberContext) as InterfaceEndMemberContext[]; - } - public interfaceEndMember(i: number): InterfaceEndMemberContext { - return this.getTypedRuleContext(InterfaceEndMemberContext, i) as InterfaceEndMemberContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public RPAREN(): TerminalNode { - return this.getToken(SysMLv2Parser.RPAREN, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_naryInterfacePart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNaryInterfacePart) { - return visitor.visitNaryInterfacePart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceEndMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public interfaceEnd(): InterfaceEndContext { - return this.getTypedRuleContext(InterfaceEndContext, 0) as InterfaceEndContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceEndMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceEndMember) { - return visitor.visitInterfaceEndMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InterfaceEndContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public ownedCrossMultiplicityMember(): OwnedCrossMultiplicityMemberContext { - return this.getTypedRuleContext(OwnedCrossMultiplicityMemberContext, 0) as OwnedCrossMultiplicityMemberContext; - } - public name(): NameContext { - return this.getTypedRuleContext(NameContext, 0) as NameContext; - } - public COLON_COLON_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON_GT, 0); - } - public REFERENCES(): TerminalNode { - return this.getToken(SysMLv2Parser.REFERENCES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_interfaceEnd; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInterfaceEnd) { - return visitor.visitInterfaceEnd(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AllocationDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public ALLOCATION(): TerminalNode { - return this.getToken(SysMLv2Parser.ALLOCATION, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_allocationDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAllocationDefinition) { - return visitor.visitAllocationDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AllocationUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public allocationUsageDeclaration(): AllocationUsageDeclarationContext { - return this.getTypedRuleContext(AllocationUsageDeclarationContext, 0) as AllocationUsageDeclarationContext; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_allocationUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAllocationUsage) { - return visitor.visitAllocationUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AllocationUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ALLOCATION(): TerminalNode { - return this.getToken(SysMLv2Parser.ALLOCATION, 0); - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public ALLOCATE(): TerminalNode { - return this.getToken(SysMLv2Parser.ALLOCATE, 0); - } - public connectorPart(): ConnectorPartContext { - return this.getTypedRuleContext(ConnectorPartContext, 0) as ConnectorPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_allocationUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAllocationUsageDeclaration) { - return visitor.visitAllocationUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public FLOW(): TerminalNode { - return this.getToken(SysMLv2Parser.FLOW, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowDefinition) { - return visitor.visitFlowDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MessageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public MESSAGE(): TerminalNode { - return this.getToken(SysMLv2Parser.MESSAGE, 0); - } - public messageDeclaration(): MessageDeclarationContext { - return this.getTypedRuleContext(MessageDeclarationContext, 0) as MessageDeclarationContext; - } - public definitionBody(): DefinitionBodyContext { - return this.getTypedRuleContext(DefinitionBodyContext, 0) as DefinitionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_message; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMessage) { - return visitor.visitMessage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MessageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public OF(): TerminalNode { - return this.getToken(SysMLv2Parser.OF, 0); - } - public flowPayloadFeatureMember(): FlowPayloadFeatureMemberContext { - return this.getTypedRuleContext(FlowPayloadFeatureMemberContext, 0) as FlowPayloadFeatureMemberContext; - } - public FROM(): TerminalNode { - return this.getToken(SysMLv2Parser.FROM, 0); - } - public messageEventMember_list(): MessageEventMemberContext[] { - return this.getTypedRuleContexts(MessageEventMemberContext) as MessageEventMemberContext[]; - } - public messageEventMember(i: number): MessageEventMemberContext { - return this.getTypedRuleContext(MessageEventMemberContext, i) as MessageEventMemberContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_messageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMessageDeclaration) { - return visitor.visitMessageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MessageEventMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public messageEvent(): MessageEventContext { - return this.getTypedRuleContext(MessageEventContext, 0) as MessageEventContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_messageEventMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMessageEventMember) { - return visitor.visitMessageEventMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MessageEventContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_messageEvent; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMessageEvent) { - return visitor.visitMessageEvent(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public FLOW(): TerminalNode { - return this.getToken(SysMLv2Parser.FLOW, 0); - } - public flowDeclaration(): FlowDeclarationContext { - return this.getTypedRuleContext(FlowDeclarationContext, 0) as FlowDeclarationContext; - } - public definitionBody(): DefinitionBodyContext { - return this.getTypedRuleContext(DefinitionBodyContext, 0) as DefinitionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowUsage) { - return visitor.visitFlowUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SuccessionFlowUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public SUCCESSION(): TerminalNode { - return this.getToken(SysMLv2Parser.SUCCESSION, 0); - } - public FLOW(): TerminalNode { - return this.getToken(SysMLv2Parser.FLOW, 0); - } - public flowDeclaration(): FlowDeclarationContext { - return this.getTypedRuleContext(FlowDeclarationContext, 0) as FlowDeclarationContext; - } - public definitionBody(): DefinitionBodyContext { - return this.getTypedRuleContext(DefinitionBodyContext, 0) as DefinitionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_successionFlowUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSuccessionFlowUsage) { - return visitor.visitSuccessionFlowUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowPayloadFeatureMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public flowPayloadFeature(): FlowPayloadFeatureContext { - return this.getTypedRuleContext(FlowPayloadFeatureContext, 0) as FlowPayloadFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowPayloadFeatureMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowPayloadFeatureMember) { - return visitor.visitFlowPayloadFeatureMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowPayloadFeatureContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public payloadFeature(): PayloadFeatureContext { - return this.getTypedRuleContext(PayloadFeatureContext, 0) as PayloadFeatureContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowPayloadFeature; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowPayloadFeature) { - return visitor.visitFlowPayloadFeature(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FlowEndSubsettingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public featureChainPrefix(): FeatureChainPrefixContext { - return this.getTypedRuleContext(FeatureChainPrefixContext, 0) as FeatureChainPrefixContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_flowEndSubsetting; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFlowEndSubsetting) { - return visitor.visitFlowEndSubsetting(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureChainPrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedFeatureChaining_list(): OwnedFeatureChainingContext[] { - return this.getTypedRuleContexts(OwnedFeatureChainingContext) as OwnedFeatureChainingContext[]; - } - public ownedFeatureChaining(i: number): OwnedFeatureChainingContext { - return this.getTypedRuleContext(OwnedFeatureChainingContext, i) as OwnedFeatureChainingContext; - } - public DOT_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.DOT); - } - public DOT(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureChainPrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureChainPrefix) { - return visitor.visitFeatureChainPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public ACTION(): TerminalNode { - return this.getToken(SysMLv2Parser.ACTION, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionDefinition) { - return visitor.visitActionDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public actionBodyItem_list(): ActionBodyItemContext[] { - return this.getTypedRuleContexts(ActionBodyItemContext) as ActionBodyItemContext[]; - } - public actionBodyItem(i: number): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, i) as ActionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionBody) { - return visitor.visitActionBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonBehaviorBodyItem(): NonBehaviorBodyItemContext { - return this.getTypedRuleContext(NonBehaviorBodyItemContext, 0) as NonBehaviorBodyItemContext; - } - public initialNodeMember(): InitialNodeMemberContext { - return this.getTypedRuleContext(InitialNodeMemberContext, 0) as InitialNodeMemberContext; - } - public actionTargetSuccessionMember_list(): ActionTargetSuccessionMemberContext[] { - return this.getTypedRuleContexts(ActionTargetSuccessionMemberContext) as ActionTargetSuccessionMemberContext[]; - } - public actionTargetSuccessionMember(i: number): ActionTargetSuccessionMemberContext { - return this.getTypedRuleContext(ActionTargetSuccessionMemberContext, i) as ActionTargetSuccessionMemberContext; - } - public actionBehaviorMember(): ActionBehaviorMemberContext { - return this.getTypedRuleContext(ActionBehaviorMemberContext, 0) as ActionBehaviorMemberContext; - } - public sourceSuccessionMember(): SourceSuccessionMemberContext { - return this.getTypedRuleContext(SourceSuccessionMemberContext, 0) as SourceSuccessionMemberContext; - } - public guardedSuccessionMember(): GuardedSuccessionMemberContext { - return this.getTypedRuleContext(GuardedSuccessionMemberContext, 0) as GuardedSuccessionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionBodyItem) { - return visitor.visitActionBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NonBehaviorBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public importRule(): ImportRuleContext { - return this.getTypedRuleContext(ImportRuleContext, 0) as ImportRuleContext; - } - public aliasMember(): AliasMemberContext { - return this.getTypedRuleContext(AliasMemberContext, 0) as AliasMemberContext; - } - public definitionMember(): DefinitionMemberContext { - return this.getTypedRuleContext(DefinitionMemberContext, 0) as DefinitionMemberContext; - } - public variantUsageMember(): VariantUsageMemberContext { - return this.getTypedRuleContext(VariantUsageMemberContext, 0) as VariantUsageMemberContext; - } - public nonOccurrenceUsageMember(): NonOccurrenceUsageMemberContext { - return this.getTypedRuleContext(NonOccurrenceUsageMemberContext, 0) as NonOccurrenceUsageMemberContext; - } - public structureUsageMember(): StructureUsageMemberContext { - return this.getTypedRuleContext(StructureUsageMemberContext, 0) as StructureUsageMemberContext; - } - public sourceSuccessionMember(): SourceSuccessionMemberContext { - return this.getTypedRuleContext(SourceSuccessionMemberContext, 0) as SourceSuccessionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nonBehaviorBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNonBehaviorBodyItem) { - return visitor.visitNonBehaviorBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionBehaviorMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public behaviorUsageMember(): BehaviorUsageMemberContext { - return this.getTypedRuleContext(BehaviorUsageMemberContext, 0) as BehaviorUsageMemberContext; - } - public actionNodeMember(): ActionNodeMemberContext { - return this.getTypedRuleContext(ActionNodeMemberContext, 0) as ActionNodeMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionBehaviorMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionBehaviorMember) { - return visitor.visitActionBehaviorMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InitialNodeMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public FIRST(): TerminalNode { - return this.getToken(SysMLv2Parser.FIRST, 0); - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_initialNodeMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitInitialNodeMember) { - return visitor.visitInitialNodeMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionNodeMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public actionNode(): ActionNodeContext { - return this.getTypedRuleContext(ActionNodeContext, 0) as ActionNodeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionNodeMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionNodeMember) { - return visitor.visitActionNodeMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionTargetSuccessionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public actionTargetSuccession(): ActionTargetSuccessionContext { - return this.getTypedRuleContext(ActionTargetSuccessionContext, 0) as ActionTargetSuccessionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionTargetSuccessionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionTargetSuccessionMember) { - return visitor.visitActionTargetSuccessionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GuardedSuccessionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public guardedSuccession(): GuardedSuccessionContext { - return this.getTypedRuleContext(GuardedSuccessionContext, 0) as GuardedSuccessionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_guardedSuccessionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitGuardedSuccessionMember) { - return visitor.visitGuardedSuccessionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public ACTION(): TerminalNode { - return this.getToken(SysMLv2Parser.ACTION, 0); - } - public actionUsageDeclaration(): ActionUsageDeclarationContext { - return this.getTypedRuleContext(ActionUsageDeclarationContext, 0) as ActionUsageDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionUsage) { - return visitor.visitActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionUsageDeclaration) { - return visitor.visitActionUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PerformActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public PERFORM(): TerminalNode { - return this.getToken(SysMLv2Parser.PERFORM, 0); - } - public performActionUsageDeclaration(): PerformActionUsageDeclarationContext { - return this.getTypedRuleContext(PerformActionUsageDeclarationContext, 0) as PerformActionUsageDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_performActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPerformActionUsage) { - return visitor.visitPerformActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PerformActionUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public ACTION(): TerminalNode { - return this.getToken(SysMLv2Parser.ACTION, 0); - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_performActionUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPerformActionUsageDeclaration) { - return visitor.visitPerformActionUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public controlNode(): ControlNodeContext { - return this.getTypedRuleContext(ControlNodeContext, 0) as ControlNodeContext; - } - public sendNode(): SendNodeContext { - return this.getTypedRuleContext(SendNodeContext, 0) as SendNodeContext; - } - public acceptNode(): AcceptNodeContext { - return this.getTypedRuleContext(AcceptNodeContext, 0) as AcceptNodeContext; - } - public assignmentNode(): AssignmentNodeContext { - return this.getTypedRuleContext(AssignmentNodeContext, 0) as AssignmentNodeContext; - } - public terminateNode(): TerminateNodeContext { - return this.getTypedRuleContext(TerminateNodeContext, 0) as TerminateNodeContext; - } - public ifNode(): IfNodeContext { - return this.getTypedRuleContext(IfNodeContext, 0) as IfNodeContext; - } - public whileLoopNode(): WhileLoopNodeContext { - return this.getTypedRuleContext(WhileLoopNodeContext, 0) as WhileLoopNodeContext; - } - public forLoopNode(): ForLoopNodeContext { - return this.getTypedRuleContext(ForLoopNodeContext, 0) as ForLoopNodeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionNode) { - return visitor.visitActionNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionNodeUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ACTION(): TerminalNode { - return this.getToken(SysMLv2Parser.ACTION, 0); - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionNodeUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionNodeUsageDeclaration) { - return visitor.visitActionNodeUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionNodePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - return this.getTypedRuleContext(ActionNodeUsageDeclarationContext, 0) as ActionNodeUsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionNodePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionNodePrefix) { - return visitor.visitActionNodePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ControlNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public mergeNode(): MergeNodeContext { - return this.getTypedRuleContext(MergeNodeContext, 0) as MergeNodeContext; - } - public decisionNode(): DecisionNodeContext { - return this.getTypedRuleContext(DecisionNodeContext, 0) as DecisionNodeContext; - } - public joinNode(): JoinNodeContext { - return this.getTypedRuleContext(JoinNodeContext, 0) as JoinNodeContext; - } - public forkNode(): ForkNodeContext { - return this.getTypedRuleContext(ForkNodeContext, 0) as ForkNodeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_controlNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitControlNode) { - return visitor.visitControlNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ControlNodePrefixContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public refPrefix(): RefPrefixContext { - return this.getTypedRuleContext(RefPrefixContext, 0) as RefPrefixContext; - } - public INDIVIDUAL(): TerminalNode { - return this.getToken(SysMLv2Parser.INDIVIDUAL, 0); - } - public portionKind(): PortionKindContext { - return this.getTypedRuleContext(PortionKindContext, 0) as PortionKindContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_controlNodePrefix; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitControlNodePrefix) { - return visitor.visitControlNodePrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MergeNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public controlNodePrefix(): ControlNodePrefixContext { - return this.getTypedRuleContext(ControlNodePrefixContext, 0) as ControlNodePrefixContext; - } - public MERGE(): TerminalNode { - return this.getToken(SysMLv2Parser.MERGE, 0); - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_mergeNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMergeNode) { - return visitor.visitMergeNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DecisionNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public controlNodePrefix(): ControlNodePrefixContext { - return this.getTypedRuleContext(ControlNodePrefixContext, 0) as ControlNodePrefixContext; - } - public DECIDE(): TerminalNode { - return this.getToken(SysMLv2Parser.DECIDE, 0); - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_decisionNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDecisionNode) { - return visitor.visitDecisionNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class JoinNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public controlNodePrefix(): ControlNodePrefixContext { - return this.getTypedRuleContext(ControlNodePrefixContext, 0) as ControlNodePrefixContext; - } - public JOIN(): TerminalNode { - return this.getToken(SysMLv2Parser.JOIN, 0); - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_joinNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitJoinNode) { - return visitor.visitJoinNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ForkNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public controlNodePrefix(): ControlNodePrefixContext { - return this.getTypedRuleContext(ControlNodePrefixContext, 0) as ControlNodePrefixContext; - } - public FORK(): TerminalNode { - return this.getToken(SysMLv2Parser.FORK, 0); - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_forkNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitForkNode) { - return visitor.visitForkNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AcceptNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public acceptNodeDeclaration(): AcceptNodeDeclarationContext { - return this.getTypedRuleContext(AcceptNodeDeclarationContext, 0) as AcceptNodeDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_acceptNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAcceptNode) { - return visitor.visitAcceptNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AcceptNodeDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ACCEPT(): TerminalNode { - return this.getToken(SysMLv2Parser.ACCEPT, 0); - } - public acceptParameterPart(): AcceptParameterPartContext { - return this.getTypedRuleContext(AcceptParameterPartContext, 0) as AcceptParameterPartContext; - } - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - return this.getTypedRuleContext(ActionNodeUsageDeclarationContext, 0) as ActionNodeUsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_acceptNodeDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAcceptNodeDeclaration) { - return visitor.visitAcceptNodeDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AcceptParameterPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public payloadParameterMember(): PayloadParameterMemberContext { - return this.getTypedRuleContext(PayloadParameterMemberContext, 0) as PayloadParameterMemberContext; - } - public VIA(): TerminalNode { - return this.getToken(SysMLv2Parser.VIA, 0); - } - public nodeParameterMember(): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, 0) as NodeParameterMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_acceptParameterPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAcceptParameterPart) { - return visitor.visitAcceptParameterPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PayloadParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public payloadParameter(): PayloadParameterContext { - return this.getTypedRuleContext(PayloadParameterContext, 0) as PayloadParameterContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_payloadParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPayloadParameterMember) { - return visitor.visitPayloadParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PayloadParameterContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public payloadFeature(): PayloadFeatureContext { - return this.getTypedRuleContext(PayloadFeatureContext, 0) as PayloadFeatureContext; - } - public triggerValuePart(): TriggerValuePartContext { - return this.getTypedRuleContext(TriggerValuePartContext, 0) as TriggerValuePartContext; - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public payloadFeatureSpecializationPart(): PayloadFeatureSpecializationPartContext { - return this.getTypedRuleContext(PayloadFeatureSpecializationPartContext, 0) as PayloadFeatureSpecializationPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_payloadParameter; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPayloadParameter) { - return visitor.visitPayloadParameter(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerValuePartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public triggerFeatureValue(): TriggerFeatureValueContext { - return this.getTypedRuleContext(TriggerFeatureValueContext, 0) as TriggerFeatureValueContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_triggerValuePart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTriggerValuePart) { - return visitor.visitTriggerValuePart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerFeatureValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public triggerExpression(): TriggerExpressionContext { - return this.getTypedRuleContext(TriggerExpressionContext, 0) as TriggerExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_triggerFeatureValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTriggerFeatureValue) { - return visitor.visitTriggerFeatureValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public argumentMember(): ArgumentMemberContext { - return this.getTypedRuleContext(ArgumentMemberContext, 0) as ArgumentMemberContext; - } - public AT(): TerminalNode { - return this.getToken(SysMLv2Parser.AT, 0); - } - public AFTER(): TerminalNode { - return this.getToken(SysMLv2Parser.AFTER, 0); - } - public WHEN(): TerminalNode { - return this.getToken(SysMLv2Parser.WHEN, 0); - } - public argumentExpressionMember(): ArgumentExpressionMemberContext { - return this.getTypedRuleContext(ArgumentExpressionMemberContext, 0) as ArgumentExpressionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_triggerExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTriggerExpression) { - return visitor.visitTriggerExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SendNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public SEND(): TerminalNode { - return this.getToken(SysMLv2Parser.SEND, 0); - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - return this.getTypedRuleContext(ActionNodeUsageDeclarationContext, 0) as ActionNodeUsageDeclarationContext; - } - public actionUsageDeclaration(): ActionUsageDeclarationContext { - return this.getTypedRuleContext(ActionUsageDeclarationContext, 0) as ActionUsageDeclarationContext; - } - public nodeParameterMember(): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, 0) as NodeParameterMemberContext; - } - public emptyParameterMember(): EmptyParameterMemberContext { - return this.getTypedRuleContext(EmptyParameterMemberContext, 0) as EmptyParameterMemberContext; - } - public senderReceiverPart(): SenderReceiverPartContext { - return this.getTypedRuleContext(SenderReceiverPartContext, 0) as SenderReceiverPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sendNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSendNode) { - return visitor.visitSendNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SendNodeDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEND(): TerminalNode { - return this.getToken(SysMLv2Parser.SEND, 0); - } - public nodeParameterMember(): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, 0) as NodeParameterMemberContext; - } - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - return this.getTypedRuleContext(ActionNodeUsageDeclarationContext, 0) as ActionNodeUsageDeclarationContext; - } - public senderReceiverPart(): SenderReceiverPartContext { - return this.getTypedRuleContext(SenderReceiverPartContext, 0) as SenderReceiverPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_sendNodeDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSendNodeDeclaration) { - return visitor.visitSendNodeDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SenderReceiverPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public VIA(): TerminalNode { - return this.getToken(SysMLv2Parser.VIA, 0); - } - public nodeParameterMember_list(): NodeParameterMemberContext[] { - return this.getTypedRuleContexts(NodeParameterMemberContext) as NodeParameterMemberContext[]; - } - public nodeParameterMember(i: number): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, i) as NodeParameterMemberContext; - } - public TO(): TerminalNode { - return this.getToken(SysMLv2Parser.TO, 0); - } - public emptyParameterMember(): EmptyParameterMemberContext { - return this.getTypedRuleContext(EmptyParameterMemberContext, 0) as EmptyParameterMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_senderReceiverPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSenderReceiverPart) { - return visitor.visitSenderReceiverPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NodeParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nodeParameter(): NodeParameterContext { - return this.getTypedRuleContext(NodeParameterContext, 0) as NodeParameterContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nodeParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNodeParameterMember) { - return visitor.visitNodeParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NodeParameterContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureBinding(): FeatureBindingContext { - return this.getTypedRuleContext(FeatureBindingContext, 0) as FeatureBindingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nodeParameter; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNodeParameter) { - return visitor.visitNodeParameter(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FeatureBindingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_featureBinding; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFeatureBinding) { - return visitor.visitFeatureBinding(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyUsage_(): EmptyUsage_Context { - return this.getTypedRuleContext(EmptyUsage_Context, 0) as EmptyUsage_Context; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyParameterMember) { - return visitor.visitEmptyParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssignmentNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public assignmentNodeDeclaration(): AssignmentNodeDeclarationContext { - return this.getTypedRuleContext(AssignmentNodeDeclarationContext, 0) as AssignmentNodeDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_assignmentNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssignmentNode) { - return visitor.visitAssignmentNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssignmentNodeDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ASSIGN(): TerminalNode { - return this.getToken(SysMLv2Parser.ASSIGN, 0); - } - public assignmentTargetMember(): AssignmentTargetMemberContext { - return this.getTypedRuleContext(AssignmentTargetMemberContext, 0) as AssignmentTargetMemberContext; - } - public featureChainMember(): FeatureChainMemberContext { - return this.getTypedRuleContext(FeatureChainMemberContext, 0) as FeatureChainMemberContext; - } - public COLON_EQ(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_EQ, 0); - } - public nodeParameterMember(): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, 0) as NodeParameterMemberContext; - } - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - return this.getTypedRuleContext(ActionNodeUsageDeclarationContext, 0) as ActionNodeUsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_assignmentNodeDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssignmentNodeDeclaration) { - return visitor.visitAssignmentNodeDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssignmentTargetMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public assignmentTargetParameter(): AssignmentTargetParameterContext { - return this.getTypedRuleContext(AssignmentTargetParameterContext, 0) as AssignmentTargetParameterContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_assignmentTargetMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssignmentTargetMember) { - return visitor.visitAssignmentTargetMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssignmentTargetParameterContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public assignmentTargetBinding(): AssignmentTargetBindingContext { - return this.getTypedRuleContext(AssignmentTargetBindingContext, 0) as AssignmentTargetBindingContext; - } - public DOT(): TerminalNode { - return this.getToken(SysMLv2Parser.DOT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_assignmentTargetParameter; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssignmentTargetParameter) { - return visitor.visitAssignmentTargetParameter(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssignmentTargetBindingContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonFeatureChainPrimaryExpression(): NonFeatureChainPrimaryExpressionContext { - return this.getTypedRuleContext(NonFeatureChainPrimaryExpressionContext, 0) as NonFeatureChainPrimaryExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_assignmentTargetBinding; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssignmentTargetBinding) { - return visitor.visitAssignmentTargetBinding(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TerminateNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public TERMINATE(): TerminalNode { - return this.getToken(SysMLv2Parser.TERMINATE, 0); - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public actionNodeUsageDeclaration(): ActionNodeUsageDeclarationContext { - return this.getTypedRuleContext(ActionNodeUsageDeclarationContext, 0) as ActionNodeUsageDeclarationContext; - } - public nodeParameterMember(): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, 0) as NodeParameterMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_terminateNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTerminateNode) { - return visitor.visitTerminateNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IfNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionNodePrefix(): ActionNodePrefixContext { - return this.getTypedRuleContext(ActionNodePrefixContext, 0) as ActionNodePrefixContext; - } - public IF(): TerminalNode { - return this.getToken(SysMLv2Parser.IF, 0); - } - public expressionParameterMember(): ExpressionParameterMemberContext { - return this.getTypedRuleContext(ExpressionParameterMemberContext, 0) as ExpressionParameterMemberContext; - } - public actionBodyParameterMember_list(): ActionBodyParameterMemberContext[] { - return this.getTypedRuleContexts(ActionBodyParameterMemberContext) as ActionBodyParameterMemberContext[]; - } - public actionBodyParameterMember(i: number): ActionBodyParameterMemberContext { - return this.getTypedRuleContext(ActionBodyParameterMemberContext, i) as ActionBodyParameterMemberContext; - } - public ELSE(): TerminalNode { - return this.getToken(SysMLv2Parser.ELSE, 0); - } - public ifNodeParameterMember(): IfNodeParameterMemberContext { - return this.getTypedRuleContext(IfNodeParameterMemberContext, 0) as IfNodeParameterMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ifNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIfNode) { - return visitor.visitIfNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_expressionParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExpressionParameterMember) { - return visitor.visitExpressionParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionBodyParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionBodyParameter(): ActionBodyParameterContext { - return this.getTypedRuleContext(ActionBodyParameterContext, 0) as ActionBodyParameterContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionBodyParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionBodyParameterMember) { - return visitor.visitActionBodyParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionBodyParameterContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public ACTION(): TerminalNode { - return this.getToken(SysMLv2Parser.ACTION, 0); - } - public actionBodyItem_list(): ActionBodyItemContext[] { - return this.getTypedRuleContexts(ActionBodyItemContext) as ActionBodyItemContext[]; - } - public actionBodyItem(i: number): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, i) as ActionBodyItemContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionBodyParameter; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionBodyParameter) { - return visitor.visitActionBodyParameter(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IfNodeParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ifNode(): IfNodeContext { - return this.getTypedRuleContext(IfNodeContext, 0) as IfNodeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_ifNodeParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIfNodeParameterMember) { - return visitor.visitIfNodeParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class WhileLoopNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionNodePrefix(): ActionNodePrefixContext { - return this.getTypedRuleContext(ActionNodePrefixContext, 0) as ActionNodePrefixContext; - } - public actionBodyParameterMember(): ActionBodyParameterMemberContext { - return this.getTypedRuleContext(ActionBodyParameterMemberContext, 0) as ActionBodyParameterMemberContext; - } - public WHILE(): TerminalNode { - return this.getToken(SysMLv2Parser.WHILE, 0); - } - public expressionParameterMember_list(): ExpressionParameterMemberContext[] { - return this.getTypedRuleContexts(ExpressionParameterMemberContext) as ExpressionParameterMemberContext[]; - } - public expressionParameterMember(i: number): ExpressionParameterMemberContext { - return this.getTypedRuleContext(ExpressionParameterMemberContext, i) as ExpressionParameterMemberContext; - } - public LOOP(): TerminalNode { - return this.getToken(SysMLv2Parser.LOOP, 0); - } - public emptyParameterMember(): EmptyParameterMemberContext { - return this.getTypedRuleContext(EmptyParameterMemberContext, 0) as EmptyParameterMemberContext; - } - public UNTIL(): TerminalNode { - return this.getToken(SysMLv2Parser.UNTIL, 0); - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_whileLoopNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitWhileLoopNode) { - return visitor.visitWhileLoopNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ForLoopNodeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionNodePrefix(): ActionNodePrefixContext { - return this.getTypedRuleContext(ActionNodePrefixContext, 0) as ActionNodePrefixContext; - } - public FOR(): TerminalNode { - return this.getToken(SysMLv2Parser.FOR, 0); - } - public forVariableDeclarationMember(): ForVariableDeclarationMemberContext { - return this.getTypedRuleContext(ForVariableDeclarationMemberContext, 0) as ForVariableDeclarationMemberContext; - } - public IN(): TerminalNode { - return this.getToken(SysMLv2Parser.IN, 0); - } - public nodeParameterMember(): NodeParameterMemberContext { - return this.getTypedRuleContext(NodeParameterMemberContext, 0) as NodeParameterMemberContext; - } - public actionBodyParameterMember(): ActionBodyParameterMemberContext { - return this.getTypedRuleContext(ActionBodyParameterMemberContext, 0) as ActionBodyParameterMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_forLoopNode; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitForLoopNode) { - return visitor.visitForLoopNode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ForVariableDeclarationMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_forVariableDeclarationMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitForVariableDeclarationMember) { - return visitor.visitForVariableDeclarationMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ForVariableDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_forVariableDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitForVariableDeclaration) { - return visitor.visitForVariableDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActionTargetSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public targetSuccession(): TargetSuccessionContext { - return this.getTypedRuleContext(TargetSuccessionContext, 0) as TargetSuccessionContext; - } - public guardedTargetSuccession(): GuardedTargetSuccessionContext { - return this.getTypedRuleContext(GuardedTargetSuccessionContext, 0) as GuardedTargetSuccessionContext; - } - public defaultTargetSuccession(): DefaultTargetSuccessionContext { - return this.getTypedRuleContext(DefaultTargetSuccessionContext, 0) as DefaultTargetSuccessionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actionTargetSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActionTargetSuccession) { - return visitor.visitActionTargetSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TargetSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public sourceEndMember(): SourceEndMemberContext { - return this.getTypedRuleContext(SourceEndMemberContext, 0) as SourceEndMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public connectorEndMember(): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, 0) as ConnectorEndMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_targetSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTargetSuccession) { - return visitor.visitTargetSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GuardedTargetSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public guardExpressionMember(): GuardExpressionMemberContext { - return this.getTypedRuleContext(GuardExpressionMemberContext, 0) as GuardExpressionMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - return this.getTypedRuleContext(TransitionSuccessionMemberContext, 0) as TransitionSuccessionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_guardedTargetSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitGuardedTargetSuccession) { - return visitor.visitGuardedTargetSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DefaultTargetSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ELSE(): TerminalNode { - return this.getToken(SysMLv2Parser.ELSE, 0); - } - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - return this.getTypedRuleContext(TransitionSuccessionMemberContext, 0) as TransitionSuccessionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_defaultTargetSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDefaultTargetSuccession) { - return visitor.visitDefaultTargetSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GuardedSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public FIRST(): TerminalNode { - return this.getToken(SysMLv2Parser.FIRST, 0); - } - public featureChainMember(): FeatureChainMemberContext { - return this.getTypedRuleContext(FeatureChainMemberContext, 0) as FeatureChainMemberContext; - } - public guardExpressionMember(): GuardExpressionMemberContext { - return this.getTypedRuleContext(GuardExpressionMemberContext, 0) as GuardExpressionMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - return this.getTypedRuleContext(TransitionSuccessionMemberContext, 0) as TransitionSuccessionMemberContext; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public SUCCESSION(): TerminalNode { - return this.getToken(SysMLv2Parser.SUCCESSION, 0); - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_guardedSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitGuardedSuccession) { - return visitor.visitGuardedSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public STATE(): TerminalNode { - return this.getToken(SysMLv2Parser.STATE, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public stateDefBody(): StateDefBodyContext { - return this.getTypedRuleContext(StateDefBodyContext, 0) as StateDefBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateDefinition) { - return visitor.visitStateDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateDefBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public PARALLEL(): TerminalNode { - return this.getToken(SysMLv2Parser.PARALLEL, 0); - } - public stateBodyItem_list(): StateBodyItemContext[] { - return this.getTypedRuleContexts(StateBodyItemContext) as StateBodyItemContext[]; - } - public stateBodyItem(i: number): StateBodyItemContext { - return this.getTypedRuleContext(StateBodyItemContext, i) as StateBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateDefBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateDefBody) { - return visitor.visitStateDefBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public nonBehaviorBodyItem(): NonBehaviorBodyItemContext { - return this.getTypedRuleContext(NonBehaviorBodyItemContext, 0) as NonBehaviorBodyItemContext; - } - public behaviorUsageMember(): BehaviorUsageMemberContext { - return this.getTypedRuleContext(BehaviorUsageMemberContext, 0) as BehaviorUsageMemberContext; - } - public sourceSuccessionMember(): SourceSuccessionMemberContext { - return this.getTypedRuleContext(SourceSuccessionMemberContext, 0) as SourceSuccessionMemberContext; - } - public targetTransitionUsageMember_list(): TargetTransitionUsageMemberContext[] { - return this.getTypedRuleContexts(TargetTransitionUsageMemberContext) as TargetTransitionUsageMemberContext[]; - } - public targetTransitionUsageMember(i: number): TargetTransitionUsageMemberContext { - return this.getTypedRuleContext(TargetTransitionUsageMemberContext, i) as TargetTransitionUsageMemberContext; - } - public transitionUsageMember(): TransitionUsageMemberContext { - return this.getTypedRuleContext(TransitionUsageMemberContext, 0) as TransitionUsageMemberContext; - } - public entryActionMember(): EntryActionMemberContext { - return this.getTypedRuleContext(EntryActionMemberContext, 0) as EntryActionMemberContext; - } - public entryTransitionMember_list(): EntryTransitionMemberContext[] { - return this.getTypedRuleContexts(EntryTransitionMemberContext) as EntryTransitionMemberContext[]; - } - public entryTransitionMember(i: number): EntryTransitionMemberContext { - return this.getTypedRuleContext(EntryTransitionMemberContext, i) as EntryTransitionMemberContext; - } - public doActionMember(): DoActionMemberContext { - return this.getTypedRuleContext(DoActionMemberContext, 0) as DoActionMemberContext; - } - public exitActionMember(): ExitActionMemberContext { - return this.getTypedRuleContext(ExitActionMemberContext, 0) as ExitActionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateBodyItem) { - return visitor.visitStateBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EntryActionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public ENTRY(): TerminalNode { - return this.getToken(SysMLv2Parser.ENTRY, 0); - } - public stateActionUsage(): StateActionUsageContext { - return this.getTypedRuleContext(StateActionUsageContext, 0) as StateActionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_entryActionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEntryActionMember) { - return visitor.visitEntryActionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DoActionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public DO(): TerminalNode { - return this.getToken(SysMLv2Parser.DO, 0); - } - public stateActionUsage(): StateActionUsageContext { - return this.getTypedRuleContext(StateActionUsageContext, 0) as StateActionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_doActionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitDoActionMember) { - return visitor.visitDoActionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExitActionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public EXIT(): TerminalNode { - return this.getToken(SysMLv2Parser.EXIT, 0); - } - public stateActionUsage(): StateActionUsageContext { - return this.getTypedRuleContext(StateActionUsageContext, 0) as StateActionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_exitActionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExitActionMember) { - return visitor.visitExitActionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EntryTransitionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public guardedTargetSuccession(): GuardedTargetSuccessionContext { - return this.getTypedRuleContext(GuardedTargetSuccessionContext, 0) as GuardedTargetSuccessionContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - return this.getTypedRuleContext(TransitionSuccessionMemberContext, 0) as TransitionSuccessionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_entryTransitionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEntryTransitionMember) { - return visitor.visitEntryTransitionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyActionUsage_(): EmptyActionUsage_Context { - return this.getTypedRuleContext(EmptyActionUsage_Context, 0) as EmptyActionUsage_Context; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public statePerformActionUsage(): StatePerformActionUsageContext { - return this.getTypedRuleContext(StatePerformActionUsageContext, 0) as StatePerformActionUsageContext; - } - public stateAcceptActionUsage(): StateAcceptActionUsageContext { - return this.getTypedRuleContext(StateAcceptActionUsageContext, 0) as StateAcceptActionUsageContext; - } - public stateSendActionUsage(): StateSendActionUsageContext { - return this.getTypedRuleContext(StateSendActionUsageContext, 0) as StateSendActionUsageContext; - } - public stateAssignmentActionUsage(): StateAssignmentActionUsageContext { - return this.getTypedRuleContext(StateAssignmentActionUsageContext, 0) as StateAssignmentActionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateActionUsage) { - return visitor.visitStateActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StatePerformActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public performActionUsageDeclaration(): PerformActionUsageDeclarationContext { - return this.getTypedRuleContext(PerformActionUsageDeclarationContext, 0) as PerformActionUsageDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_statePerformActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStatePerformActionUsage) { - return visitor.visitStatePerformActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateAcceptActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public acceptNodeDeclaration(): AcceptNodeDeclarationContext { - return this.getTypedRuleContext(AcceptNodeDeclarationContext, 0) as AcceptNodeDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateAcceptActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateAcceptActionUsage) { - return visitor.visitStateAcceptActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateSendActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public sendNodeDeclaration(): SendNodeDeclarationContext { - return this.getTypedRuleContext(SendNodeDeclarationContext, 0) as SendNodeDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateSendActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateSendActionUsage) { - return visitor.visitStateSendActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateAssignmentActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public assignmentNodeDeclaration(): AssignmentNodeDeclarationContext { - return this.getTypedRuleContext(AssignmentNodeDeclarationContext, 0) as AssignmentNodeDeclarationContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateAssignmentActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateAssignmentActionUsage) { - return visitor.visitStateAssignmentActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public transitionUsage(): TransitionUsageContext { - return this.getTypedRuleContext(TransitionUsageContext, 0) as TransitionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionUsageMember) { - return visitor.visitTransitionUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TargetTransitionUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public targetTransitionUsage(): TargetTransitionUsageContext { - return this.getTypedRuleContext(TargetTransitionUsageContext, 0) as TargetTransitionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_targetTransitionUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTargetTransitionUsageMember) { - return visitor.visitTargetTransitionUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public STATE(): TerminalNode { - return this.getToken(SysMLv2Parser.STATE, 0); - } - public actionUsageDeclaration(): ActionUsageDeclarationContext { - return this.getTypedRuleContext(ActionUsageDeclarationContext, 0) as ActionUsageDeclarationContext; - } - public stateUsageBody(): StateUsageBodyContext { - return this.getTypedRuleContext(StateUsageBodyContext, 0) as StateUsageBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateUsage) { - return visitor.visitStateUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StateUsageBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public PARALLEL(): TerminalNode { - return this.getToken(SysMLv2Parser.PARALLEL, 0); - } - public stateBodyItem_list(): StateBodyItemContext[] { - return this.getTypedRuleContexts(StateBodyItemContext) as StateBodyItemContext[]; - } - public stateBodyItem(i: number): StateBodyItemContext { - return this.getTypedRuleContext(StateBodyItemContext, i) as StateBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stateUsageBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStateUsageBody) { - return visitor.visitStateUsageBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExhibitStateUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public EXHIBIT(): TerminalNode { - return this.getToken(SysMLv2Parser.EXHIBIT, 0); - } - public stateUsageBody(): StateUsageBodyContext { - return this.getTypedRuleContext(StateUsageBodyContext, 0) as StateUsageBodyContext; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public STATE(): TerminalNode { - return this.getToken(SysMLv2Parser.STATE, 0); - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_exhibitStateUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExhibitStateUsage) { - return visitor.visitExhibitStateUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public TRANSITION(): TerminalNode { - return this.getToken(SysMLv2Parser.TRANSITION, 0); - } - public featureChainMember(): FeatureChainMemberContext { - return this.getTypedRuleContext(FeatureChainMemberContext, 0) as FeatureChainMemberContext; - } - public emptyParameterMember_list(): EmptyParameterMemberContext[] { - return this.getTypedRuleContexts(EmptyParameterMemberContext) as EmptyParameterMemberContext[]; - } - public emptyParameterMember(i: number): EmptyParameterMemberContext { - return this.getTypedRuleContext(EmptyParameterMemberContext, i) as EmptyParameterMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - return this.getTypedRuleContext(TransitionSuccessionMemberContext, 0) as TransitionSuccessionMemberContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public FIRST(): TerminalNode { - return this.getToken(SysMLv2Parser.FIRST, 0); - } - public triggerActionMember(): TriggerActionMemberContext { - return this.getTypedRuleContext(TriggerActionMemberContext, 0) as TriggerActionMemberContext; - } - public guardExpressionMember(): GuardExpressionMemberContext { - return this.getTypedRuleContext(GuardExpressionMemberContext, 0) as GuardExpressionMemberContext; - } - public effectBehaviorMember(): EffectBehaviorMemberContext { - return this.getTypedRuleContext(EffectBehaviorMemberContext, 0) as EffectBehaviorMemberContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionUsage) { - return visitor.visitTransitionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TargetTransitionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyParameterMember_list(): EmptyParameterMemberContext[] { - return this.getTypedRuleContexts(EmptyParameterMemberContext) as EmptyParameterMemberContext[]; - } - public emptyParameterMember(i: number): EmptyParameterMemberContext { - return this.getTypedRuleContext(EmptyParameterMemberContext, i) as EmptyParameterMemberContext; - } - public THEN(): TerminalNode { - return this.getToken(SysMLv2Parser.THEN, 0); - } - public transitionSuccessionMember(): TransitionSuccessionMemberContext { - return this.getTypedRuleContext(TransitionSuccessionMemberContext, 0) as TransitionSuccessionMemberContext; - } - public actionBody(): ActionBodyContext { - return this.getTypedRuleContext(ActionBodyContext, 0) as ActionBodyContext; - } - public TRANSITION(): TerminalNode { - return this.getToken(SysMLv2Parser.TRANSITION, 0); - } - public triggerActionMember(): TriggerActionMemberContext { - return this.getTypedRuleContext(TriggerActionMemberContext, 0) as TriggerActionMemberContext; - } - public guardExpressionMember(): GuardExpressionMemberContext { - return this.getTypedRuleContext(GuardExpressionMemberContext, 0) as GuardExpressionMemberContext; - } - public effectBehaviorMember(): EffectBehaviorMemberContext { - return this.getTypedRuleContext(EffectBehaviorMemberContext, 0) as EffectBehaviorMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_targetTransitionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTargetTransitionUsage) { - return visitor.visitTargetTransitionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerActionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ACCEPT(): TerminalNode { - return this.getToken(SysMLv2Parser.ACCEPT, 0); - } - public triggerAction(): TriggerActionContext { - return this.getTypedRuleContext(TriggerActionContext, 0) as TriggerActionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_triggerActionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTriggerActionMember) { - return visitor.visitTriggerActionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerActionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public acceptParameterPart(): AcceptParameterPartContext { - return this.getTypedRuleContext(AcceptParameterPartContext, 0) as AcceptParameterPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_triggerAction; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTriggerAction) { - return visitor.visitTriggerAction(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GuardExpressionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IF(): TerminalNode { - return this.getToken(SysMLv2Parser.IF, 0); - } - public ownedExpression(): OwnedExpressionContext { - return this.getTypedRuleContext(OwnedExpressionContext, 0) as OwnedExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_guardExpressionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitGuardExpressionMember) { - return visitor.visitGuardExpressionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EffectBehaviorMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DO(): TerminalNode { - return this.getToken(SysMLv2Parser.DO, 0); - } - public effectBehaviorUsage(): EffectBehaviorUsageContext { - return this.getTypedRuleContext(EffectBehaviorUsageContext, 0) as EffectBehaviorUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_effectBehaviorMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEffectBehaviorMember) { - return visitor.visitEffectBehaviorMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EffectBehaviorUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyActionUsage_(): EmptyActionUsage_Context { - return this.getTypedRuleContext(EmptyActionUsage_Context, 0) as EmptyActionUsage_Context; - } - public transitionPerformActionUsage(): TransitionPerformActionUsageContext { - return this.getTypedRuleContext(TransitionPerformActionUsageContext, 0) as TransitionPerformActionUsageContext; - } - public transitionAcceptActionUsage(): TransitionAcceptActionUsageContext { - return this.getTypedRuleContext(TransitionAcceptActionUsageContext, 0) as TransitionAcceptActionUsageContext; - } - public transitionSendActionUsage(): TransitionSendActionUsageContext { - return this.getTypedRuleContext(TransitionSendActionUsageContext, 0) as TransitionSendActionUsageContext; - } - public transitionAssignmentActionUsage(): TransitionAssignmentActionUsageContext { - return this.getTypedRuleContext(TransitionAssignmentActionUsageContext, 0) as TransitionAssignmentActionUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_effectBehaviorUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEffectBehaviorUsage) { - return visitor.visitEffectBehaviorUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionPerformActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public performActionUsageDeclaration(): PerformActionUsageDeclarationContext { - return this.getTypedRuleContext(PerformActionUsageDeclarationContext, 0) as PerformActionUsageDeclarationContext; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public actionBodyItem_list(): ActionBodyItemContext[] { - return this.getTypedRuleContexts(ActionBodyItemContext) as ActionBodyItemContext[]; - } - public actionBodyItem(i: number): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, i) as ActionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionPerformActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionPerformActionUsage) { - return visitor.visitTransitionPerformActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionAcceptActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public acceptNodeDeclaration(): AcceptNodeDeclarationContext { - return this.getTypedRuleContext(AcceptNodeDeclarationContext, 0) as AcceptNodeDeclarationContext; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public actionBodyItem_list(): ActionBodyItemContext[] { - return this.getTypedRuleContexts(ActionBodyItemContext) as ActionBodyItemContext[]; - } - public actionBodyItem(i: number): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, i) as ActionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionAcceptActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionAcceptActionUsage) { - return visitor.visitTransitionAcceptActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionSendActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public sendNodeDeclaration(): SendNodeDeclarationContext { - return this.getTypedRuleContext(SendNodeDeclarationContext, 0) as SendNodeDeclarationContext; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public actionBodyItem_list(): ActionBodyItemContext[] { - return this.getTypedRuleContexts(ActionBodyItemContext) as ActionBodyItemContext[]; - } - public actionBodyItem(i: number): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, i) as ActionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionSendActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionSendActionUsage) { - return visitor.visitTransitionSendActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionAssignmentActionUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public assignmentNodeDeclaration(): AssignmentNodeDeclarationContext { - return this.getTypedRuleContext(AssignmentNodeDeclarationContext, 0) as AssignmentNodeDeclarationContext; - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public actionBodyItem_list(): ActionBodyItemContext[] { - return this.getTypedRuleContexts(ActionBodyItemContext) as ActionBodyItemContext[]; - } - public actionBodyItem(i: number): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, i) as ActionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionAssignmentActionUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionAssignmentActionUsage) { - return visitor.visitTransitionAssignmentActionUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionSuccessionMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public transitionSuccession(): TransitionSuccessionContext { - return this.getTypedRuleContext(TransitionSuccessionContext, 0) as TransitionSuccessionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionSuccessionMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionSuccessionMember) { - return visitor.visitTransitionSuccessionMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TransitionSuccessionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyEndMember(): EmptyEndMemberContext { - return this.getTypedRuleContext(EmptyEndMemberContext, 0) as EmptyEndMemberContext; - } - public connectorEndMember(): ConnectorEndMemberContext { - return this.getTypedRuleContext(ConnectorEndMemberContext, 0) as ConnectorEndMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_transitionSuccession; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitTransitionSuccession) { - return visitor.visitTransitionSuccession(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyEndMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public emptyFeature_(): EmptyFeature_Context { - return this.getTypedRuleContext(EmptyFeature_Context, 0) as EmptyFeature_Context; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyEndMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyEndMember) { - return visitor.visitEmptyEndMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CalculationDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public CALC(): TerminalNode { - return this.getToken(SysMLv2Parser.CALC, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_calculationDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCalculationDefinition) { - return visitor.visitCalculationDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CalculationUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public CALC(): TerminalNode { - return this.getToken(SysMLv2Parser.CALC, 0); - } - public actionUsageDeclaration(): ActionUsageDeclarationContext { - return this.getTypedRuleContext(ActionUsageDeclarationContext, 0) as ActionUsageDeclarationContext; - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_calculationUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCalculationUsage) { - return visitor.visitCalculationUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CalculationBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public calculationBodyPart(): CalculationBodyPartContext { - return this.getTypedRuleContext(CalculationBodyPartContext, 0) as CalculationBodyPartContext; - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_calculationBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCalculationBody) { - return visitor.visitCalculationBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CalculationBodyPartContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public calculationBodyItem_list(): CalculationBodyItemContext[] { - return this.getTypedRuleContexts(CalculationBodyItemContext) as CalculationBodyItemContext[]; - } - public calculationBodyItem(i: number): CalculationBodyItemContext { - return this.getTypedRuleContext(CalculationBodyItemContext, i) as CalculationBodyItemContext; - } - public resultExpressionMember(): ResultExpressionMemberContext { - return this.getTypedRuleContext(ResultExpressionMemberContext, 0) as ResultExpressionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_calculationBodyPart; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCalculationBodyPart) { - return visitor.visitCalculationBodyPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CalculationBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionBodyItem(): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, 0) as ActionBodyItemContext; - } - public returnParameterMember(): ReturnParameterMemberContext { - return this.getTypedRuleContext(ReturnParameterMemberContext, 0) as ReturnParameterMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_calculationBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCalculationBodyItem) { - return visitor.visitCalculationBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReturnParameterMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public RETURN(): TerminalNode { - return this.getToken(SysMLv2Parser.RETURN, 0); - } - public usageElement(): UsageElementContext { - return this.getTypedRuleContext(UsageElementContext, 0) as UsageElementContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_returnParameterMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitReturnParameterMember) { - return visitor.visitReturnParameterMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstraintDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public CONSTRAINT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONSTRAINT, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_constraintDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConstraintDefinition) { - return visitor.visitConstraintDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstraintUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public CONSTRAINT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONSTRAINT, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_constraintUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConstraintUsage) { - return visitor.visitConstraintUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AssertConstraintUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public ASSERT(): TerminalNode { - return this.getToken(SysMLv2Parser.ASSERT, 0); - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public CONSTRAINT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONSTRAINT, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public NOT(): TerminalNode { - return this.getToken(SysMLv2Parser.NOT, 0); - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_assertConstraintUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAssertConstraintUsage) { - return visitor.visitAssertConstraintUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConstraintUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_constraintUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConstraintUsageDeclaration) { - return visitor.visitConstraintUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public REQUIREMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REQUIREMENT, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementDefinition) { - return visitor.visitRequirementDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public requirementBodyItem_list(): RequirementBodyItemContext[] { - return this.getTypedRuleContexts(RequirementBodyItemContext) as RequirementBodyItemContext[]; - } - public requirementBodyItem(i: number): RequirementBodyItemContext { - return this.getTypedRuleContext(RequirementBodyItemContext, i) as RequirementBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementBody) { - return visitor.visitRequirementBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionBodyItem(): DefinitionBodyItemContext { - return this.getTypedRuleContext(DefinitionBodyItemContext, 0) as DefinitionBodyItemContext; - } - public subjectMember(): SubjectMemberContext { - return this.getTypedRuleContext(SubjectMemberContext, 0) as SubjectMemberContext; - } - public requirementConstraintMember(): RequirementConstraintMemberContext { - return this.getTypedRuleContext(RequirementConstraintMemberContext, 0) as RequirementConstraintMemberContext; - } - public framedConcernMember(): FramedConcernMemberContext { - return this.getTypedRuleContext(FramedConcernMemberContext, 0) as FramedConcernMemberContext; - } - public requirementVerificationMember(): RequirementVerificationMemberContext { - return this.getTypedRuleContext(RequirementVerificationMemberContext, 0) as RequirementVerificationMemberContext; - } - public actorMember(): ActorMemberContext { - return this.getTypedRuleContext(ActorMemberContext, 0) as ActorMemberContext; - } - public stakeholderMember(): StakeholderMemberContext { - return this.getTypedRuleContext(StakeholderMemberContext, 0) as StakeholderMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementBodyItem) { - return visitor.visitRequirementBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubjectMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public subjectUsage(): SubjectUsageContext { - return this.getTypedRuleContext(SubjectUsageContext, 0) as SubjectUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subjectMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubjectMember) { - return visitor.visitSubjectMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SubjectUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SUBJECT(): TerminalNode { - return this.getToken(SysMLv2Parser.SUBJECT, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_subjectUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSubjectUsage) { - return visitor.visitSubjectUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementConstraintMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public requirementKind(): RequirementKindContext { - return this.getTypedRuleContext(RequirementKindContext, 0) as RequirementKindContext; - } - public requirementConstraintUsage(): RequirementConstraintUsageContext { - return this.getTypedRuleContext(RequirementConstraintUsageContext, 0) as RequirementConstraintUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementConstraintMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementConstraintMember) { - return visitor.visitRequirementConstraintMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementKindContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ASSUME(): TerminalNode { - return this.getToken(SysMLv2Parser.ASSUME, 0); - } - public REQUIRE(): TerminalNode { - return this.getToken(SysMLv2Parser.REQUIRE, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementKind; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementKind) { - return visitor.visitRequirementKind(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementConstraintUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public CONSTRAINT(): TerminalNode { - return this.getToken(SysMLv2Parser.CONSTRAINT, 0); - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementConstraintUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementConstraintUsage) { - return visitor.visitRequirementConstraintUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FramedConcernMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public FRAME(): TerminalNode { - return this.getToken(SysMLv2Parser.FRAME, 0); - } - public framedConcernUsage(): FramedConcernUsageContext { - return this.getTypedRuleContext(FramedConcernUsageContext, 0) as FramedConcernUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_framedConcernMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFramedConcernMember) { - return visitor.visitFramedConcernMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FramedConcernUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public calculationBody(): CalculationBodyContext { - return this.getTypedRuleContext(CalculationBodyContext, 0) as CalculationBodyContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public calculationUsageDeclaration(): CalculationUsageDeclarationContext { - return this.getTypedRuleContext(CalculationUsageDeclarationContext, 0) as CalculationUsageDeclarationContext; - } - public CONCERN(): TerminalNode { - return this.getToken(SysMLv2Parser.CONCERN, 0); - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_framedConcernUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFramedConcernUsage) { - return visitor.visitFramedConcernUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActorMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public actorUsage(): ActorUsageContext { - return this.getTypedRuleContext(ActorUsageContext, 0) as ActorUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actorMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActorMember) { - return visitor.visitActorMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ActorUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ACTOR(): TerminalNode { - return this.getToken(SysMLv2Parser.ACTOR, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_actorUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitActorUsage) { - return visitor.visitActorUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StakeholderMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public stakeholderUsage(): StakeholderUsageContext { - return this.getTypedRuleContext(StakeholderUsageContext, 0) as StakeholderUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stakeholderMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStakeholderMember) { - return visitor.visitStakeholderMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StakeholderUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public STAKEHOLDER(): TerminalNode { - return this.getToken(SysMLv2Parser.STAKEHOLDER, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_stakeholderUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitStakeholderUsage) { - return visitor.visitStakeholderUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public REQUIREMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REQUIREMENT, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementUsage) { - return visitor.visitRequirementUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SatisfyRequirementUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public SATISFY(): TerminalNode { - return this.getToken(SysMLv2Parser.SATISFY, 0); - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public REQUIREMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REQUIREMENT, 0); - } - public ASSERT(): TerminalNode { - return this.getToken(SysMLv2Parser.ASSERT, 0); - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public satisfactionSubjectMember(): SatisfactionSubjectMemberContext { - return this.getTypedRuleContext(SatisfactionSubjectMemberContext, 0) as SatisfactionSubjectMemberContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public NOT(): TerminalNode { - return this.getToken(SysMLv2Parser.NOT, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_satisfyRequirementUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSatisfyRequirementUsage) { - return visitor.visitSatisfyRequirementUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SatisfactionSubjectMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public satisfactionParameter(): SatisfactionParameterContext { - return this.getTypedRuleContext(SatisfactionParameterContext, 0) as SatisfactionParameterContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_satisfactionSubjectMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSatisfactionSubjectMember) { - return visitor.visitSatisfactionSubjectMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SatisfactionParameterContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public satisfactionFeatureValue(): SatisfactionFeatureValueContext { - return this.getTypedRuleContext(SatisfactionFeatureValueContext, 0) as SatisfactionFeatureValueContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_satisfactionParameter; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSatisfactionParameter) { - return visitor.visitSatisfactionParameter(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SatisfactionFeatureValueContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public satisfactionReferenceExpression(): SatisfactionReferenceExpressionContext { - return this.getTypedRuleContext(SatisfactionReferenceExpressionContext, 0) as SatisfactionReferenceExpressionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_satisfactionFeatureValue; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSatisfactionFeatureValue) { - return visitor.visitSatisfactionFeatureValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SatisfactionReferenceExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public featureChainMember(): FeatureChainMemberContext { - return this.getTypedRuleContext(FeatureChainMemberContext, 0) as FeatureChainMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_satisfactionReferenceExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitSatisfactionReferenceExpression) { - return visitor.visitSatisfactionReferenceExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConcernDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public CONCERN(): TerminalNode { - return this.getToken(SysMLv2Parser.CONCERN, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_concernDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConcernDefinition) { - return visitor.visitConcernDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ConcernUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public CONCERN(): TerminalNode { - return this.getToken(SysMLv2Parser.CONCERN, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_concernUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitConcernUsage) { - return visitor.visitConcernUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CaseDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public CASE(): TerminalNode { - return this.getToken(SysMLv2Parser.CASE, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_caseDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCaseDefinition) { - return visitor.visitCaseDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CaseUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public CASE(): TerminalNode { - return this.getToken(SysMLv2Parser.CASE, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_caseUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCaseUsage) { - return visitor.visitCaseUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CaseBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public caseBodyItem_list(): CaseBodyItemContext[] { - return this.getTypedRuleContexts(CaseBodyItemContext) as CaseBodyItemContext[]; - } - public caseBodyItem(i: number): CaseBodyItemContext { - return this.getTypedRuleContext(CaseBodyItemContext, i) as CaseBodyItemContext; - } - public resultExpressionMember(): ResultExpressionMemberContext { - return this.getTypedRuleContext(ResultExpressionMemberContext, 0) as ResultExpressionMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_caseBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCaseBody) { - return visitor.visitCaseBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CaseBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public actionBodyItem(): ActionBodyItemContext { - return this.getTypedRuleContext(ActionBodyItemContext, 0) as ActionBodyItemContext; - } - public returnParameterMember(): ReturnParameterMemberContext { - return this.getTypedRuleContext(ReturnParameterMemberContext, 0) as ReturnParameterMemberContext; - } - public subjectMember(): SubjectMemberContext { - return this.getTypedRuleContext(SubjectMemberContext, 0) as SubjectMemberContext; - } - public actorMember(): ActorMemberContext { - return this.getTypedRuleContext(ActorMemberContext, 0) as ActorMemberContext; - } - public objectiveMember(): ObjectiveMemberContext { - return this.getTypedRuleContext(ObjectiveMemberContext, 0) as ObjectiveMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_caseBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCaseBodyItem) { - return visitor.visitCaseBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ObjectiveMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public OBJECTIVE(): TerminalNode { - return this.getToken(SysMLv2Parser.OBJECTIVE, 0); - } - public objectiveRequirementUsage(): ObjectiveRequirementUsageContext { - return this.getTypedRuleContext(ObjectiveRequirementUsageContext, 0) as ObjectiveRequirementUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_objectiveMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitObjectiveMember) { - return visitor.visitObjectiveMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ObjectiveRequirementUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_objectiveRequirementUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitObjectiveRequirementUsage) { - return visitor.visitObjectiveRequirementUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AnalysisCaseDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public ANALYSIS(): TerminalNode { - return this.getToken(SysMLv2Parser.ANALYSIS, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_analysisCaseDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAnalysisCaseDefinition) { - return visitor.visitAnalysisCaseDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AnalysisCaseUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public ANALYSIS(): TerminalNode { - return this.getToken(SysMLv2Parser.ANALYSIS, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_analysisCaseUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitAnalysisCaseUsage) { - return visitor.visitAnalysisCaseUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VerificationCaseDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public VERIFICATION(): TerminalNode { - return this.getToken(SysMLv2Parser.VERIFICATION, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_verificationCaseDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitVerificationCaseDefinition) { - return visitor.visitVerificationCaseDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class VerificationCaseUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public VERIFICATION(): TerminalNode { - return this.getToken(SysMLv2Parser.VERIFICATION, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_verificationCaseUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitVerificationCaseUsage) { - return visitor.visitVerificationCaseUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementVerificationMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public VERIFY(): TerminalNode { - return this.getToken(SysMLv2Parser.VERIFY, 0); - } - public requirementVerificationUsage(): RequirementVerificationUsageContext { - return this.getTypedRuleContext(RequirementVerificationUsageContext, 0) as RequirementVerificationUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementVerificationMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementVerificationMember) { - return visitor.visitRequirementVerificationMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RequirementVerificationUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public featureSpecialization_list(): FeatureSpecializationContext[] { - return this.getTypedRuleContexts(FeatureSpecializationContext) as FeatureSpecializationContext[]; - } - public featureSpecialization(i: number): FeatureSpecializationContext { - return this.getTypedRuleContext(FeatureSpecializationContext, i) as FeatureSpecializationContext; - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public REQUIREMENT(): TerminalNode { - return this.getToken(SysMLv2Parser.REQUIREMENT, 0); - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_requirementVerificationUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRequirementVerificationUsage) { - return visitor.visitRequirementVerificationUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UseCaseDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public USE(): TerminalNode { - return this.getToken(SysMLv2Parser.USE, 0); - } - public CASE(): TerminalNode { - return this.getToken(SysMLv2Parser.CASE, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_useCaseDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUseCaseDefinition) { - return visitor.visitUseCaseDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UseCaseUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public USE(): TerminalNode { - return this.getToken(SysMLv2Parser.USE, 0); - } - public CASE(): TerminalNode { - return this.getToken(SysMLv2Parser.CASE, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_useCaseUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitUseCaseUsage) { - return visitor.visitUseCaseUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IncludeUseCaseUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public INCLUDE(): TerminalNode { - return this.getToken(SysMLv2Parser.INCLUDE, 0); - } - public caseBody(): CaseBodyContext { - return this.getTypedRuleContext(CaseBodyContext, 0) as CaseBodyContext; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public USE(): TerminalNode { - return this.getToken(SysMLv2Parser.USE, 0); - } - public CASE(): TerminalNode { - return this.getToken(SysMLv2Parser.CASE, 0); - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_includeUseCaseUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitIncludeUseCaseUsage) { - return visitor.visitIncludeUseCaseUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public VIEW(): TerminalNode { - return this.getToken(SysMLv2Parser.VIEW, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public viewDefinitionBody(): ViewDefinitionBodyContext { - return this.getTypedRuleContext(ViewDefinitionBodyContext, 0) as ViewDefinitionBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewDefinition) { - return visitor.visitViewDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewDefinitionBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public viewDefinitionBodyItem_list(): ViewDefinitionBodyItemContext[] { - return this.getTypedRuleContexts(ViewDefinitionBodyItemContext) as ViewDefinitionBodyItemContext[]; - } - public viewDefinitionBodyItem(i: number): ViewDefinitionBodyItemContext { - return this.getTypedRuleContext(ViewDefinitionBodyItemContext, i) as ViewDefinitionBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewDefinitionBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewDefinitionBody) { - return visitor.visitViewDefinitionBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewDefinitionBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionBodyItem(): DefinitionBodyItemContext { - return this.getTypedRuleContext(DefinitionBodyItemContext, 0) as DefinitionBodyItemContext; - } - public elementFilterMember(): ElementFilterMemberContext { - return this.getTypedRuleContext(ElementFilterMemberContext, 0) as ElementFilterMemberContext; - } - public viewRenderingMember(): ViewRenderingMemberContext { - return this.getTypedRuleContext(ViewRenderingMemberContext, 0) as ViewRenderingMemberContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewDefinitionBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewDefinitionBodyItem) { - return visitor.visitViewDefinitionBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewRenderingMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public memberPrefix(): MemberPrefixContext { - return this.getTypedRuleContext(MemberPrefixContext, 0) as MemberPrefixContext; - } - public RENDER(): TerminalNode { - return this.getToken(SysMLv2Parser.RENDER, 0); - } - public viewRenderingUsage(): ViewRenderingUsageContext { - return this.getTypedRuleContext(ViewRenderingUsageContext, 0) as ViewRenderingUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewRenderingMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewRenderingMember) { - return visitor.visitViewRenderingMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewRenderingUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedReferenceSubsetting(): OwnedReferenceSubsettingContext { - return this.getTypedRuleContext(OwnedReferenceSubsettingContext, 0) as OwnedReferenceSubsettingContext; - } - public usageBody(): UsageBodyContext { - return this.getTypedRuleContext(UsageBodyContext, 0) as UsageBodyContext; - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public RENDERING(): TerminalNode { - return this.getToken(SysMLv2Parser.RENDERING, 0); - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewRenderingUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewRenderingUsage) { - return visitor.visitViewRenderingUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public VIEW(): TerminalNode { - return this.getToken(SysMLv2Parser.VIEW, 0); - } - public viewBody(): ViewBodyContext { - return this.getTypedRuleContext(ViewBodyContext, 0) as ViewBodyContext; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewUsage) { - return visitor.visitViewUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewBodyContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public SEMI(): TerminalNode { - return this.getToken(SysMLv2Parser.SEMI, 0); - } - public LBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.LBRACE, 0); - } - public RBRACE(): TerminalNode { - return this.getToken(SysMLv2Parser.RBRACE, 0); - } - public viewBodyItem_list(): ViewBodyItemContext[] { - return this.getTypedRuleContexts(ViewBodyItemContext) as ViewBodyItemContext[]; - } - public viewBodyItem(i: number): ViewBodyItemContext { - return this.getTypedRuleContext(ViewBodyItemContext, i) as ViewBodyItemContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewBody; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewBody) { - return visitor.visitViewBody(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewBodyItemContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public definitionBodyItem(): DefinitionBodyItemContext { - return this.getTypedRuleContext(DefinitionBodyItemContext, 0) as DefinitionBodyItemContext; - } - public elementFilterMember(): ElementFilterMemberContext { - return this.getTypedRuleContext(ElementFilterMemberContext, 0) as ElementFilterMemberContext; - } - public viewRenderingMember(): ViewRenderingMemberContext { - return this.getTypedRuleContext(ViewRenderingMemberContext, 0) as ViewRenderingMemberContext; - } - public expose(): ExposeContext { - return this.getTypedRuleContext(ExposeContext, 0) as ExposeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewBodyItem; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewBodyItem) { - return visitor.visitViewBodyItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExposeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public EXPOSE(): TerminalNode { - return this.getToken(SysMLv2Parser.EXPOSE, 0); - } - public relationshipBody(): RelationshipBodyContext { - return this.getTypedRuleContext(RelationshipBodyContext, 0) as RelationshipBodyContext; - } - public membershipExpose(): MembershipExposeContext { - return this.getTypedRuleContext(MembershipExposeContext, 0) as MembershipExposeContext; - } - public namespaceExpose(): NamespaceExposeContext { - return this.getTypedRuleContext(NamespaceExposeContext, 0) as NamespaceExposeContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_expose; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExpose) { - return visitor.visitExpose(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MembershipExposeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public membershipImport(): MembershipImportContext { - return this.getTypedRuleContext(MembershipImportContext, 0) as MembershipImportContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_membershipExpose; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMembershipExpose) { - return visitor.visitMembershipExpose(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceExposeContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public namespaceImport(): NamespaceImportContext { - return this.getTypedRuleContext(NamespaceImportContext, 0) as NamespaceImportContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceExpose; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceExpose) { - return visitor.visitNamespaceExpose(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewpointDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public VIEWPOINT(): TerminalNode { - return this.getToken(SysMLv2Parser.VIEWPOINT, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definitionDeclaration(): DefinitionDeclarationContext { - return this.getTypedRuleContext(DefinitionDeclarationContext, 0) as DefinitionDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewpointDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewpointDefinition) { - return visitor.visitViewpointDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ViewpointUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public VIEWPOINT(): TerminalNode { - return this.getToken(SysMLv2Parser.VIEWPOINT, 0); - } - public constraintUsageDeclaration(): ConstraintUsageDeclarationContext { - return this.getTypedRuleContext(ConstraintUsageDeclarationContext, 0) as ConstraintUsageDeclarationContext; - } - public requirementBody(): RequirementBodyContext { - return this.getTypedRuleContext(RequirementBodyContext, 0) as RequirementBodyContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_viewpointUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitViewpointUsage) { - return visitor.visitViewpointUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RenderingDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceDefinitionPrefix(): OccurrenceDefinitionPrefixContext { - return this.getTypedRuleContext(OccurrenceDefinitionPrefixContext, 0) as OccurrenceDefinitionPrefixContext; - } - public RENDERING(): TerminalNode { - return this.getToken(SysMLv2Parser.RENDERING, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_renderingDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRenderingDefinition) { - return visitor.visitRenderingDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RenderingUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public occurrenceUsagePrefix(): OccurrenceUsagePrefixContext { - return this.getTypedRuleContext(OccurrenceUsagePrefixContext, 0) as OccurrenceUsagePrefixContext; - } - public RENDERING(): TerminalNode { - return this.getToken(SysMLv2Parser.RENDERING, 0); - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_renderingUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitRenderingUsage) { - return visitor.visitRenderingUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public METADATA(): TerminalNode { - return this.getToken(SysMLv2Parser.METADATA, 0); - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public ABSTRACT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABSTRACT, 0); - } - public definitionExtensionKeyword_list(): DefinitionExtensionKeywordContext[] { - return this.getTypedRuleContexts(DefinitionExtensionKeywordContext) as DefinitionExtensionKeywordContext[]; - } - public definitionExtensionKeyword(i: number): DefinitionExtensionKeywordContext { - return this.getTypedRuleContext(DefinitionExtensionKeywordContext, i) as DefinitionExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataDefinition) { - return visitor.visitMetadataDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrefixMetadataUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedFeatureTyping(): OwnedFeatureTypingContext { - return this.getTypedRuleContext(OwnedFeatureTypingContext, 0) as OwnedFeatureTypingContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_prefixMetadataUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPrefixMetadataUsage) { - return visitor.visitPrefixMetadataUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public metadataUsageDeclaration(): MetadataUsageDeclarationContext { - return this.getTypedRuleContext(MetadataUsageDeclarationContext, 0) as MetadataUsageDeclarationContext; - } - public metadataBody(): MetadataBodyContext { - return this.getTypedRuleContext(MetadataBodyContext, 0) as MetadataBodyContext; - } - public AT_SIGN(): TerminalNode { - return this.getToken(SysMLv2Parser.AT_SIGN, 0); - } - public METADATA(): TerminalNode { - return this.getToken(SysMLv2Parser.METADATA, 0); - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public ABOUT(): TerminalNode { - return this.getToken(SysMLv2Parser.ABOUT, 0); - } - public annotation_list(): AnnotationContext[] { - return this.getTypedRuleContexts(AnnotationContext) as AnnotationContext[]; - } - public annotation(i: number): AnnotationContext { - return this.getTypedRuleContext(AnnotationContext, i) as AnnotationContext; - } - public COMMA_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COMMA); - } - public COMMA(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COMMA, i); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataUsage) { - return visitor.visitMetadataUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedFeatureTyping(): OwnedFeatureTypingContext { - return this.getTypedRuleContext(OwnedFeatureTypingContext, 0) as OwnedFeatureTypingContext; - } - public COLON(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON, 0); - } - public TYPED(): TerminalNode { - return this.getToken(SysMLv2Parser.TYPED, 0); - } - public BY(): TerminalNode { - return this.getToken(SysMLv2Parser.BY, 0); - } - public identification(): IdentificationContext { - return this.getTypedRuleContext(IdentificationContext, 0) as IdentificationContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataUsageDeclaration) { - return visitor.visitMetadataUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataBodyUsageMemberContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public metadataBodyUsage(): MetadataBodyUsageContext { - return this.getTypedRuleContext(MetadataBodyUsageContext, 0) as MetadataBodyUsageContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataBodyUsageMember; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataBodyUsageMember) { - return visitor.visitMetadataBodyUsageMember(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MetadataBodyUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public ownedRedefinition(): OwnedRedefinitionContext { - return this.getTypedRuleContext(OwnedRedefinitionContext, 0) as OwnedRedefinitionContext; - } - public metadataBody(): MetadataBodyContext { - return this.getTypedRuleContext(MetadataBodyContext, 0) as MetadataBodyContext; - } - public REF(): TerminalNode { - return this.getToken(SysMLv2Parser.REF, 0); - } - public featureSpecializationPart(): FeatureSpecializationPartContext { - return this.getTypedRuleContext(FeatureSpecializationPartContext, 0) as FeatureSpecializationPartContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public COLON_GT_GT(): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_GT_GT, 0); - } - public REDEFINES(): TerminalNode { - return this.getToken(SysMLv2Parser.REDEFINES, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_metadataBodyUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitMetadataBodyUsage) { - return visitor.visitMetadataBodyUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExtendedDefinitionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public DEF(): TerminalNode { - return this.getToken(SysMLv2Parser.DEF, 0); - } - public definition(): DefinitionContext { - return this.getTypedRuleContext(DefinitionContext, 0) as DefinitionContext; - } - public basicDefinitionPrefix(): BasicDefinitionPrefixContext { - return this.getTypedRuleContext(BasicDefinitionPrefixContext, 0) as BasicDefinitionPrefixContext; - } - public definitionExtensionKeyword_list(): DefinitionExtensionKeywordContext[] { - return this.getTypedRuleContexts(DefinitionExtensionKeywordContext) as DefinitionExtensionKeywordContext[]; - } - public definitionExtensionKeyword(i: number): DefinitionExtensionKeywordContext { - return this.getTypedRuleContext(DefinitionExtensionKeywordContext, i) as DefinitionExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_extendedDefinition; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExtendedDefinition) { - return visitor.visitExtendedDefinition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExtendedUsageContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public unextendedUsagePrefix(): UnextendedUsagePrefixContext { - return this.getTypedRuleContext(UnextendedUsagePrefixContext, 0) as UnextendedUsagePrefixContext; - } - public usage(): UsageContext { - return this.getTypedRuleContext(UsageContext, 0) as UsageContext; - } - public usageExtensionKeyword_list(): UsageExtensionKeywordContext[] { - return this.getTypedRuleContexts(UsageExtensionKeywordContext) as UsageExtensionKeywordContext[]; - } - public usageExtensionKeyword(i: number): UsageExtensionKeywordContext { - return this.getTypedRuleContext(UsageExtensionKeywordContext, i) as UsageExtensionKeywordContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_extendedUsage; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitExtendedUsage) { - return visitor.visitExtendedUsage(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FilterPackageImportDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public membershipImport(): MembershipImportContext { - return this.getTypedRuleContext(MembershipImportContext, 0) as MembershipImportContext; - } - public namespaceImportDirect(): NamespaceImportDirectContext { - return this.getTypedRuleContext(NamespaceImportDirectContext, 0) as NamespaceImportDirectContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_filterPackageImportDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFilterPackageImportDeclaration) { - return visitor.visitFilterPackageImportDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NamespaceImportDirectContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public qualifiedName(): QualifiedNameContext { - return this.getTypedRuleContext(QualifiedNameContext, 0) as QualifiedNameContext; - } - public COLON_COLON_list(): TerminalNode[] { - return this.getTokens(SysMLv2Parser.COLON_COLON); - } - public COLON_COLON(i: number): TerminalNode { - return this.getToken(SysMLv2Parser.COLON_COLON, i); - } - public STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR, 0); - } - public STAR_STAR(): TerminalNode { - return this.getToken(SysMLv2Parser.STAR_STAR, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_namespaceImportDirect; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNamespaceImportDirect) { - return visitor.visitNamespaceImportDirect(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CalculationUsageDeclarationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public usageDeclaration(): UsageDeclarationContext { - return this.getTypedRuleContext(UsageDeclarationContext, 0) as UsageDeclarationContext; - } - public valuePart(): ValuePartContext { - return this.getTypedRuleContext(ValuePartContext, 0) as ValuePartContext; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_calculationUsageDeclaration; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitCalculationUsageDeclaration) { - return visitor.visitCalculationUsageDeclaration(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyActionUsage_Context extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyActionUsage_; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyActionUsage_) { - return visitor.visitEmptyActionUsage_(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyFeature_Context extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyFeature_; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyFeature_) { - return visitor.visitEmptyFeature_(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyMultiplicity_Context extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyMultiplicity_; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyMultiplicity_) { - return visitor.visitEmptyMultiplicity_(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class EmptyUsage_Context extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_emptyUsage_; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitEmptyUsage_) { - return visitor.visitEmptyUsage_(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FilterPackageImportContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IDENTIFIER(): TerminalNode { - return this.getToken(SysMLv2Parser.IDENTIFIER, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_filterPackageImport; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitFilterPackageImport) { - return visitor.visitFilterPackageImport(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class NonFeatureChainPrimaryExpressionContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public IDENTIFIER(): TerminalNode { - return this.getToken(SysMLv2Parser.IDENTIFIER, 0); - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_nonFeatureChainPrimaryExpression; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitNonFeatureChainPrimaryExpression) { - return visitor.visitNonFeatureChainPrimaryExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PortConjugationContext extends ParserRuleContext { - constructor(parser?: SysMLv2Parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public get ruleIndex(): number { - return SysMLv2Parser.RULE_portConjugation; - } - // @Override - public accept(visitor: SysMLv2ParserVisitor): Result { - if (visitor.visitPortConjugation) { - return visitor.visitPortConjugation(this); - } else { - return visitor.visitChildren(this); - } - } -} diff --git a/src/parser/generated/grammar/SysMLv2ParserVisitor.ts b/src/parser/generated/grammar/SysMLv2ParserVisitor.ts deleted file mode 100644 index dbba872..0000000 --- a/src/parser/generated/grammar/SysMLv2ParserVisitor.ts +++ /dev/null @@ -1,1006 +0,0 @@ -// Generated from SysMLv2Parser.g4 by ANTLR 4.13.2 - -import {ParseTreeVisitor} from 'antlr4'; - -import { OwnedExpressionContext } from "./SysMLv2Parser"; -import { TypeReferenceContext } from "./SysMLv2Parser"; -import { SequenceExpressionListContext } from "./SysMLv2Parser"; -import { BaseExpressionContext } from "./SysMLv2Parser"; -import { NullExpressionContext } from "./SysMLv2Parser"; -import { FeatureReferenceExpressionContext } from "./SysMLv2Parser"; -import { MetadataAccessExpressionContext } from "./SysMLv2Parser"; -import { InvocationExpressionContext } from "./SysMLv2Parser"; -import { ConstructorExpressionContext } from "./SysMLv2Parser"; -import { BodyExpressionContext } from "./SysMLv2Parser"; -import { ArgumentListContext } from "./SysMLv2Parser"; -import { PositionalArgumentListContext } from "./SysMLv2Parser"; -import { NamedArgumentListContext } from "./SysMLv2Parser"; -import { NamedArgumentContext } from "./SysMLv2Parser"; -import { LiteralExpressionContext } from "./SysMLv2Parser"; -import { LiteralBooleanContext } from "./SysMLv2Parser"; -import { LiteralStringContext } from "./SysMLv2Parser"; -import { LiteralIntegerContext } from "./SysMLv2Parser"; -import { LiteralRealContext } from "./SysMLv2Parser"; -import { LiteralInfinityContext } from "./SysMLv2Parser"; -import { ArgumentMemberContext } from "./SysMLv2Parser"; -import { ArgumentExpressionMemberContext } from "./SysMLv2Parser"; -import { NameContext } from "./SysMLv2Parser"; -import { IdentificationContext } from "./SysMLv2Parser"; -import { RelationshipBodyContext } from "./SysMLv2Parser"; -import { RelationshipOwnedElementContext } from "./SysMLv2Parser"; -import { OwnedRelatedElementContext } from "./SysMLv2Parser"; -import { DependencyContext } from "./SysMLv2Parser"; -import { AnnotationContext } from "./SysMLv2Parser"; -import { OwnedAnnotationContext } from "./SysMLv2Parser"; -import { AnnotatingElementContext } from "./SysMLv2Parser"; -import { CommentContext } from "./SysMLv2Parser"; -import { DocumentationContext } from "./SysMLv2Parser"; -import { TextualRepresentationContext } from "./SysMLv2Parser"; -import { RootNamespaceContext } from "./SysMLv2Parser"; -import { NamespaceContext } from "./SysMLv2Parser"; -import { NamespaceDeclarationContext } from "./SysMLv2Parser"; -import { NamespaceBodyContext } from "./SysMLv2Parser"; -import { NamespaceBodyElementContext } from "./SysMLv2Parser"; -import { MemberPrefixContext } from "./SysMLv2Parser"; -import { VisibilityIndicatorContext } from "./SysMLv2Parser"; -import { NamespaceMemberContext } from "./SysMLv2Parser"; -import { NonFeatureMemberContext } from "./SysMLv2Parser"; -import { NamespaceFeatureMemberContext } from "./SysMLv2Parser"; -import { AliasMemberContext } from "./SysMLv2Parser"; -import { QualifiedNameContext } from "./SysMLv2Parser"; -import { ImportRuleContext } from "./SysMLv2Parser"; -import { ImportDeclarationContext } from "./SysMLv2Parser"; -import { MembershipImportContext } from "./SysMLv2Parser"; -import { NamespaceImportContext } from "./SysMLv2Parser"; -import { FilterPackageContext } from "./SysMLv2Parser"; -import { FilterPackageMemberContext } from "./SysMLv2Parser"; -import { MemberElementContext } from "./SysMLv2Parser"; -import { NonFeatureElementContext } from "./SysMLv2Parser"; -import { FeatureElementContext } from "./SysMLv2Parser"; -import { TypeContext } from "./SysMLv2Parser"; -import { TypePrefixContext } from "./SysMLv2Parser"; -import { TypeDeclarationContext } from "./SysMLv2Parser"; -import { SpecializationPartContext } from "./SysMLv2Parser"; -import { ConjugationPartContext } from "./SysMLv2Parser"; -import { TypeRelationshipPartContext } from "./SysMLv2Parser"; -import { DisjoiningPartContext } from "./SysMLv2Parser"; -import { UnioningPartContext } from "./SysMLv2Parser"; -import { IntersectingPartContext } from "./SysMLv2Parser"; -import { DifferencingPartContext } from "./SysMLv2Parser"; -import { TypeBodyContext } from "./SysMLv2Parser"; -import { TypeBodyElementContext } from "./SysMLv2Parser"; -import { SpecializationContext } from "./SysMLv2Parser"; -import { OwnedSpecializationContext } from "./SysMLv2Parser"; -import { SpecificTypeContext } from "./SysMLv2Parser"; -import { GeneralTypeContext } from "./SysMLv2Parser"; -import { ConjugationContext } from "./SysMLv2Parser"; -import { OwnedConjugationContext } from "./SysMLv2Parser"; -import { DisjoiningContext } from "./SysMLv2Parser"; -import { OwnedDisjoiningContext } from "./SysMLv2Parser"; -import { UnioningContext } from "./SysMLv2Parser"; -import { IntersectingContext } from "./SysMLv2Parser"; -import { DifferencingContext } from "./SysMLv2Parser"; -import { FeatureMemberContext } from "./SysMLv2Parser"; -import { TypeFeatureMemberContext } from "./SysMLv2Parser"; -import { OwnedFeatureMemberContext } from "./SysMLv2Parser"; -import { ClassifierContext } from "./SysMLv2Parser"; -import { ClassifierDeclarationContext } from "./SysMLv2Parser"; -import { SuperclassingPartContext } from "./SysMLv2Parser"; -import { SubclassificationContext } from "./SysMLv2Parser"; -import { OwnedSubclassificationContext } from "./SysMLv2Parser"; -import { FeatureContext } from "./SysMLv2Parser"; -import { EndFeaturePrefixContext } from "./SysMLv2Parser"; -import { BasicFeaturePrefixContext } from "./SysMLv2Parser"; -import { FeaturePrefixContext } from "./SysMLv2Parser"; -import { OwnedCrossFeatureMemberContext } from "./SysMLv2Parser"; -import { OwnedCrossFeatureContext } from "./SysMLv2Parser"; -import { FeatureDirectionContext } from "./SysMLv2Parser"; -import { FeatureDeclarationContext } from "./SysMLv2Parser"; -import { FeatureIdentificationContext } from "./SysMLv2Parser"; -import { FeatureRelationshipPartContext } from "./SysMLv2Parser"; -import { ChainingPartContext } from "./SysMLv2Parser"; -import { InvertingPartContext } from "./SysMLv2Parser"; -import { TypeFeaturingPartContext } from "./SysMLv2Parser"; -import { FeatureSpecializationPartContext } from "./SysMLv2Parser"; -import { MultiplicityPartContext } from "./SysMLv2Parser"; -import { FeatureSpecializationContext } from "./SysMLv2Parser"; -import { TypingsContext } from "./SysMLv2Parser"; -import { TypedByContext } from "./SysMLv2Parser"; -import { SubsettingsContext } from "./SysMLv2Parser"; -import { SubsetsContext } from "./SysMLv2Parser"; -import { ReferencesContext } from "./SysMLv2Parser"; -import { CrossesContext } from "./SysMLv2Parser"; -import { RedefinitionsContext } from "./SysMLv2Parser"; -import { RedefinesContext } from "./SysMLv2Parser"; -import { FeatureTypingContext } from "./SysMLv2Parser"; -import { OwnedFeatureTypingContext } from "./SysMLv2Parser"; -import { SubsettingContext } from "./SysMLv2Parser"; -import { OwnedSubsettingContext } from "./SysMLv2Parser"; -import { OwnedReferenceSubsettingContext } from "./SysMLv2Parser"; -import { OwnedCrossSubsettingContext } from "./SysMLv2Parser"; -import { RedefinitionContext } from "./SysMLv2Parser"; -import { OwnedRedefinitionContext } from "./SysMLv2Parser"; -import { OwnedFeatureChainContext } from "./SysMLv2Parser"; -import { FeatureChainContext } from "./SysMLv2Parser"; -import { OwnedFeatureChainingContext } from "./SysMLv2Parser"; -import { FeatureInvertingContext } from "./SysMLv2Parser"; -import { OwnedFeatureInvertingContext } from "./SysMLv2Parser"; -import { TypeFeaturingContext } from "./SysMLv2Parser"; -import { OwnedTypeFeaturingContext } from "./SysMLv2Parser"; -import { DataTypeContext } from "./SysMLv2Parser"; -import { ClassContext } from "./SysMLv2Parser"; -import { StructureContext } from "./SysMLv2Parser"; -import { AssociationContext } from "./SysMLv2Parser"; -import { AssociationStructureContext } from "./SysMLv2Parser"; -import { ConnectorContext } from "./SysMLv2Parser"; -import { ConnectorDeclarationContext } from "./SysMLv2Parser"; -import { BinaryConnectorDeclarationContext } from "./SysMLv2Parser"; -import { NaryConnectorDeclarationContext } from "./SysMLv2Parser"; -import { ConnectorEndMemberContext } from "./SysMLv2Parser"; -import { ConnectorEndContext } from "./SysMLv2Parser"; -import { OwnedCrossMultiplicityMemberContext } from "./SysMLv2Parser"; -import { OwnedCrossMultiplicityContext } from "./SysMLv2Parser"; -import { BindingConnectorContext } from "./SysMLv2Parser"; -import { BindingConnectorDeclarationContext } from "./SysMLv2Parser"; -import { SuccessionContext } from "./SysMLv2Parser"; -import { SuccessionDeclarationContext } from "./SysMLv2Parser"; -import { BehaviorContext } from "./SysMLv2Parser"; -import { StepContext } from "./SysMLv2Parser"; -import { FunctionContext } from "./SysMLv2Parser"; -import { FunctionBodyContext } from "./SysMLv2Parser"; -import { FunctionBodyPartContext } from "./SysMLv2Parser"; -import { ReturnFeatureMemberContext } from "./SysMLv2Parser"; -import { ResultExpressionMemberContext } from "./SysMLv2Parser"; -import { ExpressionContext } from "./SysMLv2Parser"; -import { PredicateContext } from "./SysMLv2Parser"; -import { BooleanExpressionContext } from "./SysMLv2Parser"; -import { InvariantContext } from "./SysMLv2Parser"; -import { OwnedExpressionMemberContext } from "./SysMLv2Parser"; -import { MetadataReferenceContext } from "./SysMLv2Parser"; -import { TypeReferenceMemberContext } from "./SysMLv2Parser"; -import { TypeResultMemberContext } from "./SysMLv2Parser"; -import { ReferenceTypingContext } from "./SysMLv2Parser"; -import { EmptyResultMemberContext } from "./SysMLv2Parser"; -import { SequenceOperatorExpressionContext } from "./SysMLv2Parser"; -import { SequenceExpressionListMemberContext } from "./SysMLv2Parser"; -import { BodyArgumentMemberContext } from "./SysMLv2Parser"; -import { BodyArgumentContext } from "./SysMLv2Parser"; -import { BodyArgumentValueContext } from "./SysMLv2Parser"; -import { FunctionReferenceArgumentMemberContext } from "./SysMLv2Parser"; -import { FunctionReferenceArgumentContext } from "./SysMLv2Parser"; -import { FunctionReferenceArgumentValueContext } from "./SysMLv2Parser"; -import { FunctionReferenceExpressionContext } from "./SysMLv2Parser"; -import { FunctionReferenceMemberContext } from "./SysMLv2Parser"; -import { FunctionReferenceContext } from "./SysMLv2Parser"; -import { FeatureChainMemberContext } from "./SysMLv2Parser"; -import { OwnedFeatureChainMemberContext } from "./SysMLv2Parser"; -import { FeatureReferenceMemberContext } from "./SysMLv2Parser"; -import { FeatureReferenceContext } from "./SysMLv2Parser"; -import { ElementReferenceMemberContext } from "./SysMLv2Parser"; -import { ConstructorResultMemberContext } from "./SysMLv2Parser"; -import { ConstructorResultContext } from "./SysMLv2Parser"; -import { InstantiatedTypeMemberContext } from "./SysMLv2Parser"; -import { InstantiatedTypeReferenceContext } from "./SysMLv2Parser"; -import { NamedArgumentMemberContext } from "./SysMLv2Parser"; -import { ParameterRedefinitionContext } from "./SysMLv2Parser"; -import { ExpressionBodyMemberContext } from "./SysMLv2Parser"; -import { ExpressionBodyContext } from "./SysMLv2Parser"; -import { BooleanValueContext } from "./SysMLv2Parser"; -import { RealValueContext } from "./SysMLv2Parser"; -import { InteractionContext } from "./SysMLv2Parser"; -import { FlowContext } from "./SysMLv2Parser"; -import { SuccessionFlowContext } from "./SysMLv2Parser"; -import { FlowDeclarationContext } from "./SysMLv2Parser"; -import { PayloadFeatureMemberContext } from "./SysMLv2Parser"; -import { PayloadFeatureContext } from "./SysMLv2Parser"; -import { PayloadFeatureSpecializationPartContext } from "./SysMLv2Parser"; -import { FlowEndMemberContext } from "./SysMLv2Parser"; -import { FlowEndContext } from "./SysMLv2Parser"; -import { FlowFeatureMemberContext } from "./SysMLv2Parser"; -import { FlowFeatureContext } from "./SysMLv2Parser"; -import { FlowFeatureRedefinitionContext } from "./SysMLv2Parser"; -import { ValuePartContext } from "./SysMLv2Parser"; -import { FeatureValueContext } from "./SysMLv2Parser"; -import { MultiplicityContext } from "./SysMLv2Parser"; -import { MultiplicitySubsetContext } from "./SysMLv2Parser"; -import { MultiplicityRangeContext } from "./SysMLv2Parser"; -import { OwnedMultiplicityContext } from "./SysMLv2Parser"; -import { OwnedMultiplicityRangeContext } from "./SysMLv2Parser"; -import { MultiplicityBoundsContext } from "./SysMLv2Parser"; -import { MultiplicityExpressionMemberContext } from "./SysMLv2Parser"; -import { MetaclassContext } from "./SysMLv2Parser"; -import { PrefixMetadataAnnotationContext } from "./SysMLv2Parser"; -import { PrefixMetadataMemberContext } from "./SysMLv2Parser"; -import { PrefixMetadataFeatureContext } from "./SysMLv2Parser"; -import { MetadataFeatureContext } from "./SysMLv2Parser"; -import { MetadataFeatureDeclarationContext } from "./SysMLv2Parser"; -import { MetadataBodyContext } from "./SysMLv2Parser"; -import { MetadataBodyElementContext } from "./SysMLv2Parser"; -import { MetadataBodyFeatureMemberContext } from "./SysMLv2Parser"; -import { MetadataBodyFeatureContext } from "./SysMLv2Parser"; -import { PackageContext } from "./SysMLv2Parser"; -import { LibraryPackageContext } from "./SysMLv2Parser"; -import { PackageDeclarationContext } from "./SysMLv2Parser"; -import { PackageBodyContext } from "./SysMLv2Parser"; -import { ElementFilterMemberContext } from "./SysMLv2Parser"; -import { DependencyDeclarationContext } from "./SysMLv2Parser"; -import { AnnotatingMemberContext } from "./SysMLv2Parser"; -import { PackageBodyElementContext } from "./SysMLv2Parser"; -import { PackageMemberContext } from "./SysMLv2Parser"; -import { DefinitionElementContext } from "./SysMLv2Parser"; -import { UsageElementContext } from "./SysMLv2Parser"; -import { BasicDefinitionPrefixContext } from "./SysMLv2Parser"; -import { DefinitionExtensionKeywordContext } from "./SysMLv2Parser"; -import { DefinitionPrefixContext } from "./SysMLv2Parser"; -import { DefinitionContext } from "./SysMLv2Parser"; -import { DefinitionDeclarationContext } from "./SysMLv2Parser"; -import { DefinitionBodyContext } from "./SysMLv2Parser"; -import { DefinitionBodyItemContext } from "./SysMLv2Parser"; -import { DefinitionBodyItemContentContext } from "./SysMLv2Parser"; -import { DefinitionMemberContext } from "./SysMLv2Parser"; -import { VariantUsageMemberContext } from "./SysMLv2Parser"; -import { NonOccurrenceUsageMemberContext } from "./SysMLv2Parser"; -import { OccurrenceUsageMemberContext } from "./SysMLv2Parser"; -import { StructureUsageMemberContext } from "./SysMLv2Parser"; -import { BehaviorUsageMemberContext } from "./SysMLv2Parser"; -import { RefPrefixContext } from "./SysMLv2Parser"; -import { BasicUsagePrefixContext } from "./SysMLv2Parser"; -import { EndUsagePrefixContext } from "./SysMLv2Parser"; -import { UsageExtensionKeywordContext } from "./SysMLv2Parser"; -import { UnextendedUsagePrefixContext } from "./SysMLv2Parser"; -import { UsagePrefixContext } from "./SysMLv2Parser"; -import { UsageContext } from "./SysMLv2Parser"; -import { UsageDeclarationContext } from "./SysMLv2Parser"; -import { UsageCompletionContext } from "./SysMLv2Parser"; -import { UsageBodyContext } from "./SysMLv2Parser"; -import { DefaultReferenceUsageContext } from "./SysMLv2Parser"; -import { ReferenceUsageContext } from "./SysMLv2Parser"; -import { EndFeatureUsageContext } from "./SysMLv2Parser"; -import { VariantReferenceContext } from "./SysMLv2Parser"; -import { NonOccurrenceUsageElementContext } from "./SysMLv2Parser"; -import { OccurrenceUsageElementContext } from "./SysMLv2Parser"; -import { StructureUsageElementContext } from "./SysMLv2Parser"; -import { BehaviorUsageElementContext } from "./SysMLv2Parser"; -import { VariantUsageElementContext } from "./SysMLv2Parser"; -import { SubclassificationPartContext } from "./SysMLv2Parser"; -import { AttributeDefinitionContext } from "./SysMLv2Parser"; -import { AttributeUsageContext } from "./SysMLv2Parser"; -import { EnumerationDefinitionContext } from "./SysMLv2Parser"; -import { EnumerationBodyContext } from "./SysMLv2Parser"; -import { EnumerationUsageMemberContext } from "./SysMLv2Parser"; -import { EnumeratedValueContext } from "./SysMLv2Parser"; -import { EnumerationUsageContext } from "./SysMLv2Parser"; -import { OccurrenceDefinitionPrefixContext } from "./SysMLv2Parser"; -import { OccurrenceDefinitionContext } from "./SysMLv2Parser"; -import { IndividualDefinitionContext } from "./SysMLv2Parser"; -import { EmptyMultiplicityMemberContext } from "./SysMLv2Parser"; -import { OccurrenceUsagePrefixContext } from "./SysMLv2Parser"; -import { OccurrenceUsageContext } from "./SysMLv2Parser"; -import { IndividualUsageContext } from "./SysMLv2Parser"; -import { PortionUsageContext } from "./SysMLv2Parser"; -import { PortionKindContext } from "./SysMLv2Parser"; -import { EventOccurrenceUsageContext } from "./SysMLv2Parser"; -import { SourceSuccessionMemberContext } from "./SysMLv2Parser"; -import { SourceSuccessionContext } from "./SysMLv2Parser"; -import { SourceEndMemberContext } from "./SysMLv2Parser"; -import { SourceEndContext } from "./SysMLv2Parser"; -import { ItemDefinitionContext } from "./SysMLv2Parser"; -import { ItemUsageContext } from "./SysMLv2Parser"; -import { PartDefinitionContext } from "./SysMLv2Parser"; -import { PartUsageContext } from "./SysMLv2Parser"; -import { PortDefinitionContext } from "./SysMLv2Parser"; -import { ConjugatedPortDefinitionMemberContext } from "./SysMLv2Parser"; -import { ConjugatedPortDefinitionContext } from "./SysMLv2Parser"; -import { PortUsageContext } from "./SysMLv2Parser"; -import { ConjugatedPortTypingContext } from "./SysMLv2Parser"; -import { ConnectionDefinitionContext } from "./SysMLv2Parser"; -import { ConnectionUsageContext } from "./SysMLv2Parser"; -import { ConnectorPartContext } from "./SysMLv2Parser"; -import { BinaryConnectorPartContext } from "./SysMLv2Parser"; -import { NaryConnectorPartContext } from "./SysMLv2Parser"; -import { BindingConnectorAsUsageContext } from "./SysMLv2Parser"; -import { SuccessionAsUsageContext } from "./SysMLv2Parser"; -import { InterfaceDefinitionContext } from "./SysMLv2Parser"; -import { InterfaceBodyContext } from "./SysMLv2Parser"; -import { InterfaceBodyItemContext } from "./SysMLv2Parser"; -import { InterfaceNonOccurrenceUsageMemberContext } from "./SysMLv2Parser"; -import { InterfaceNonOccurrenceUsageElementContext } from "./SysMLv2Parser"; -import { InterfaceOccurrenceUsageMemberContext } from "./SysMLv2Parser"; -import { InterfaceOccurrenceUsageElementContext } from "./SysMLv2Parser"; -import { DefaultInterfaceEndContext } from "./SysMLv2Parser"; -import { InterfaceUsageContext } from "./SysMLv2Parser"; -import { InterfaceUsageDeclarationContext } from "./SysMLv2Parser"; -import { InterfacePartContext } from "./SysMLv2Parser"; -import { BinaryInterfacePartContext } from "./SysMLv2Parser"; -import { NaryInterfacePartContext } from "./SysMLv2Parser"; -import { InterfaceEndMemberContext } from "./SysMLv2Parser"; -import { InterfaceEndContext } from "./SysMLv2Parser"; -import { AllocationDefinitionContext } from "./SysMLv2Parser"; -import { AllocationUsageContext } from "./SysMLv2Parser"; -import { AllocationUsageDeclarationContext } from "./SysMLv2Parser"; -import { FlowDefinitionContext } from "./SysMLv2Parser"; -import { MessageContext } from "./SysMLv2Parser"; -import { MessageDeclarationContext } from "./SysMLv2Parser"; -import { MessageEventMemberContext } from "./SysMLv2Parser"; -import { MessageEventContext } from "./SysMLv2Parser"; -import { FlowUsageContext } from "./SysMLv2Parser"; -import { SuccessionFlowUsageContext } from "./SysMLv2Parser"; -import { FlowPayloadFeatureMemberContext } from "./SysMLv2Parser"; -import { FlowPayloadFeatureContext } from "./SysMLv2Parser"; -import { FlowEndSubsettingContext } from "./SysMLv2Parser"; -import { FeatureChainPrefixContext } from "./SysMLv2Parser"; -import { ActionDefinitionContext } from "./SysMLv2Parser"; -import { ActionBodyContext } from "./SysMLv2Parser"; -import { ActionBodyItemContext } from "./SysMLv2Parser"; -import { NonBehaviorBodyItemContext } from "./SysMLv2Parser"; -import { ActionBehaviorMemberContext } from "./SysMLv2Parser"; -import { InitialNodeMemberContext } from "./SysMLv2Parser"; -import { ActionNodeMemberContext } from "./SysMLv2Parser"; -import { ActionTargetSuccessionMemberContext } from "./SysMLv2Parser"; -import { GuardedSuccessionMemberContext } from "./SysMLv2Parser"; -import { ActionUsageContext } from "./SysMLv2Parser"; -import { ActionUsageDeclarationContext } from "./SysMLv2Parser"; -import { PerformActionUsageContext } from "./SysMLv2Parser"; -import { PerformActionUsageDeclarationContext } from "./SysMLv2Parser"; -import { ActionNodeContext } from "./SysMLv2Parser"; -import { ActionNodeUsageDeclarationContext } from "./SysMLv2Parser"; -import { ActionNodePrefixContext } from "./SysMLv2Parser"; -import { ControlNodeContext } from "./SysMLv2Parser"; -import { ControlNodePrefixContext } from "./SysMLv2Parser"; -import { MergeNodeContext } from "./SysMLv2Parser"; -import { DecisionNodeContext } from "./SysMLv2Parser"; -import { JoinNodeContext } from "./SysMLv2Parser"; -import { ForkNodeContext } from "./SysMLv2Parser"; -import { AcceptNodeContext } from "./SysMLv2Parser"; -import { AcceptNodeDeclarationContext } from "./SysMLv2Parser"; -import { AcceptParameterPartContext } from "./SysMLv2Parser"; -import { PayloadParameterMemberContext } from "./SysMLv2Parser"; -import { PayloadParameterContext } from "./SysMLv2Parser"; -import { TriggerValuePartContext } from "./SysMLv2Parser"; -import { TriggerFeatureValueContext } from "./SysMLv2Parser"; -import { TriggerExpressionContext } from "./SysMLv2Parser"; -import { SendNodeContext } from "./SysMLv2Parser"; -import { SendNodeDeclarationContext } from "./SysMLv2Parser"; -import { SenderReceiverPartContext } from "./SysMLv2Parser"; -import { NodeParameterMemberContext } from "./SysMLv2Parser"; -import { NodeParameterContext } from "./SysMLv2Parser"; -import { FeatureBindingContext } from "./SysMLv2Parser"; -import { EmptyParameterMemberContext } from "./SysMLv2Parser"; -import { AssignmentNodeContext } from "./SysMLv2Parser"; -import { AssignmentNodeDeclarationContext } from "./SysMLv2Parser"; -import { AssignmentTargetMemberContext } from "./SysMLv2Parser"; -import { AssignmentTargetParameterContext } from "./SysMLv2Parser"; -import { AssignmentTargetBindingContext } from "./SysMLv2Parser"; -import { TerminateNodeContext } from "./SysMLv2Parser"; -import { IfNodeContext } from "./SysMLv2Parser"; -import { ExpressionParameterMemberContext } from "./SysMLv2Parser"; -import { ActionBodyParameterMemberContext } from "./SysMLv2Parser"; -import { ActionBodyParameterContext } from "./SysMLv2Parser"; -import { IfNodeParameterMemberContext } from "./SysMLv2Parser"; -import { WhileLoopNodeContext } from "./SysMLv2Parser"; -import { ForLoopNodeContext } from "./SysMLv2Parser"; -import { ForVariableDeclarationMemberContext } from "./SysMLv2Parser"; -import { ForVariableDeclarationContext } from "./SysMLv2Parser"; -import { ActionTargetSuccessionContext } from "./SysMLv2Parser"; -import { TargetSuccessionContext } from "./SysMLv2Parser"; -import { GuardedTargetSuccessionContext } from "./SysMLv2Parser"; -import { DefaultTargetSuccessionContext } from "./SysMLv2Parser"; -import { GuardedSuccessionContext } from "./SysMLv2Parser"; -import { StateDefinitionContext } from "./SysMLv2Parser"; -import { StateDefBodyContext } from "./SysMLv2Parser"; -import { StateBodyItemContext } from "./SysMLv2Parser"; -import { EntryActionMemberContext } from "./SysMLv2Parser"; -import { DoActionMemberContext } from "./SysMLv2Parser"; -import { ExitActionMemberContext } from "./SysMLv2Parser"; -import { EntryTransitionMemberContext } from "./SysMLv2Parser"; -import { StateActionUsageContext } from "./SysMLv2Parser"; -import { StatePerformActionUsageContext } from "./SysMLv2Parser"; -import { StateAcceptActionUsageContext } from "./SysMLv2Parser"; -import { StateSendActionUsageContext } from "./SysMLv2Parser"; -import { StateAssignmentActionUsageContext } from "./SysMLv2Parser"; -import { TransitionUsageMemberContext } from "./SysMLv2Parser"; -import { TargetTransitionUsageMemberContext } from "./SysMLv2Parser"; -import { StateUsageContext } from "./SysMLv2Parser"; -import { StateUsageBodyContext } from "./SysMLv2Parser"; -import { ExhibitStateUsageContext } from "./SysMLv2Parser"; -import { TransitionUsageContext } from "./SysMLv2Parser"; -import { TargetTransitionUsageContext } from "./SysMLv2Parser"; -import { TriggerActionMemberContext } from "./SysMLv2Parser"; -import { TriggerActionContext } from "./SysMLv2Parser"; -import { GuardExpressionMemberContext } from "./SysMLv2Parser"; -import { EffectBehaviorMemberContext } from "./SysMLv2Parser"; -import { EffectBehaviorUsageContext } from "./SysMLv2Parser"; -import { TransitionPerformActionUsageContext } from "./SysMLv2Parser"; -import { TransitionAcceptActionUsageContext } from "./SysMLv2Parser"; -import { TransitionSendActionUsageContext } from "./SysMLv2Parser"; -import { TransitionAssignmentActionUsageContext } from "./SysMLv2Parser"; -import { TransitionSuccessionMemberContext } from "./SysMLv2Parser"; -import { TransitionSuccessionContext } from "./SysMLv2Parser"; -import { EmptyEndMemberContext } from "./SysMLv2Parser"; -import { CalculationDefinitionContext } from "./SysMLv2Parser"; -import { CalculationUsageContext } from "./SysMLv2Parser"; -import { CalculationBodyContext } from "./SysMLv2Parser"; -import { CalculationBodyPartContext } from "./SysMLv2Parser"; -import { CalculationBodyItemContext } from "./SysMLv2Parser"; -import { ReturnParameterMemberContext } from "./SysMLv2Parser"; -import { ConstraintDefinitionContext } from "./SysMLv2Parser"; -import { ConstraintUsageContext } from "./SysMLv2Parser"; -import { AssertConstraintUsageContext } from "./SysMLv2Parser"; -import { ConstraintUsageDeclarationContext } from "./SysMLv2Parser"; -import { RequirementDefinitionContext } from "./SysMLv2Parser"; -import { RequirementBodyContext } from "./SysMLv2Parser"; -import { RequirementBodyItemContext } from "./SysMLv2Parser"; -import { SubjectMemberContext } from "./SysMLv2Parser"; -import { SubjectUsageContext } from "./SysMLv2Parser"; -import { RequirementConstraintMemberContext } from "./SysMLv2Parser"; -import { RequirementKindContext } from "./SysMLv2Parser"; -import { RequirementConstraintUsageContext } from "./SysMLv2Parser"; -import { FramedConcernMemberContext } from "./SysMLv2Parser"; -import { FramedConcernUsageContext } from "./SysMLv2Parser"; -import { ActorMemberContext } from "./SysMLv2Parser"; -import { ActorUsageContext } from "./SysMLv2Parser"; -import { StakeholderMemberContext } from "./SysMLv2Parser"; -import { StakeholderUsageContext } from "./SysMLv2Parser"; -import { RequirementUsageContext } from "./SysMLv2Parser"; -import { SatisfyRequirementUsageContext } from "./SysMLv2Parser"; -import { SatisfactionSubjectMemberContext } from "./SysMLv2Parser"; -import { SatisfactionParameterContext } from "./SysMLv2Parser"; -import { SatisfactionFeatureValueContext } from "./SysMLv2Parser"; -import { SatisfactionReferenceExpressionContext } from "./SysMLv2Parser"; -import { ConcernDefinitionContext } from "./SysMLv2Parser"; -import { ConcernUsageContext } from "./SysMLv2Parser"; -import { CaseDefinitionContext } from "./SysMLv2Parser"; -import { CaseUsageContext } from "./SysMLv2Parser"; -import { CaseBodyContext } from "./SysMLv2Parser"; -import { CaseBodyItemContext } from "./SysMLv2Parser"; -import { ObjectiveMemberContext } from "./SysMLv2Parser"; -import { ObjectiveRequirementUsageContext } from "./SysMLv2Parser"; -import { AnalysisCaseDefinitionContext } from "./SysMLv2Parser"; -import { AnalysisCaseUsageContext } from "./SysMLv2Parser"; -import { VerificationCaseDefinitionContext } from "./SysMLv2Parser"; -import { VerificationCaseUsageContext } from "./SysMLv2Parser"; -import { RequirementVerificationMemberContext } from "./SysMLv2Parser"; -import { RequirementVerificationUsageContext } from "./SysMLv2Parser"; -import { UseCaseDefinitionContext } from "./SysMLv2Parser"; -import { UseCaseUsageContext } from "./SysMLv2Parser"; -import { IncludeUseCaseUsageContext } from "./SysMLv2Parser"; -import { ViewDefinitionContext } from "./SysMLv2Parser"; -import { ViewDefinitionBodyContext } from "./SysMLv2Parser"; -import { ViewDefinitionBodyItemContext } from "./SysMLv2Parser"; -import { ViewRenderingMemberContext } from "./SysMLv2Parser"; -import { ViewRenderingUsageContext } from "./SysMLv2Parser"; -import { ViewUsageContext } from "./SysMLv2Parser"; -import { ViewBodyContext } from "./SysMLv2Parser"; -import { ViewBodyItemContext } from "./SysMLv2Parser"; -import { ExposeContext } from "./SysMLv2Parser"; -import { MembershipExposeContext } from "./SysMLv2Parser"; -import { NamespaceExposeContext } from "./SysMLv2Parser"; -import { ViewpointDefinitionContext } from "./SysMLv2Parser"; -import { ViewpointUsageContext } from "./SysMLv2Parser"; -import { RenderingDefinitionContext } from "./SysMLv2Parser"; -import { RenderingUsageContext } from "./SysMLv2Parser"; -import { MetadataDefinitionContext } from "./SysMLv2Parser"; -import { PrefixMetadataUsageContext } from "./SysMLv2Parser"; -import { MetadataUsageContext } from "./SysMLv2Parser"; -import { MetadataUsageDeclarationContext } from "./SysMLv2Parser"; -import { MetadataBodyUsageMemberContext } from "./SysMLv2Parser"; -import { MetadataBodyUsageContext } from "./SysMLv2Parser"; -import { ExtendedDefinitionContext } from "./SysMLv2Parser"; -import { ExtendedUsageContext } from "./SysMLv2Parser"; -import { FilterPackageImportDeclarationContext } from "./SysMLv2Parser"; -import { NamespaceImportDirectContext } from "./SysMLv2Parser"; -import { CalculationUsageDeclarationContext } from "./SysMLv2Parser"; -import { EmptyActionUsage_Context } from "./SysMLv2Parser"; -import { EmptyFeature_Context } from "./SysMLv2Parser"; -import { EmptyMultiplicity_Context } from "./SysMLv2Parser"; -import { EmptyUsage_Context } from "./SysMLv2Parser"; -import { FilterPackageImportContext } from "./SysMLv2Parser"; -import { NonFeatureChainPrimaryExpressionContext } from "./SysMLv2Parser"; -import { PortConjugationContext } from "./SysMLv2Parser"; - -/** - * This interface defines a complete generic visitor for a parse tree produced - * by `SysMLv2Parser`. - * - * @param The return type of the visit operation. Use `void` for - * operations with no return type. - */ -export class SysMLv2ParserVisitor extends ParseTreeVisitor { - [key: string]: any; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} - diff --git a/src/parser/libraryIndexer.ts b/src/parser/libraryIndexer.ts deleted file mode 100644 index 5c02c7e..0000000 --- a/src/parser/libraryIndexer.ts +++ /dev/null @@ -1,275 +0,0 @@ -/** - * SysML v2 Standard Library Indexer - * - * Indexes the official SysML v2 standard library to provide: - * - Type definitions and hierarchy - * - Standard library element lookup - * - Validation against standard types - * - IntelliSense support - */ - -import * as fs from 'fs'; -import * as path from 'path'; - -export interface LibraryElement { - name: string; - kind: string; // 'part', 'action', 'requirement', 'attribute', etc. - filePath: string; - qualifiedName: string; - documentation?: string; - specializes?: string[]; - features?: string[]; -} - -export class LibraryIndexer { - private static instance: LibraryIndexer; - private elements: Map = new Map(); - private indexed: boolean = false; - private libraryPath: string; - - private constructor() { - // Library is at project root - this.libraryPath = path.join(__dirname, '../../sysml.library'); - } - - public static getInstance(): LibraryIndexer { - if (!LibraryIndexer.instance) { - LibraryIndexer.instance = new LibraryIndexer(); - } - return LibraryIndexer.instance; - } - - /** - * Index the standard library (async, called at extension startup) - */ - public async indexLibrary(): Promise { - if (this.indexed) { - return; - } - - try { - if (!fs.existsSync(this.libraryPath)) { - return; - } - - await this.indexDirectory(this.libraryPath); - this.indexed = true; - } catch { - // Silently ignore indexing errors - } - } - - /** - * Recursively index all .sysml and .kerml files - */ - private async indexDirectory(dirPath: string): Promise { - const entries = fs.readdirSync(dirPath, { withFileTypes: true }); - - for (const entry of entries) { - const fullPath = path.join(dirPath, entry.name); - - if (entry.isDirectory()) { - await this.indexDirectory(fullPath); - } else if (entry.isFile() && (entry.name.endsWith('.sysml') || entry.name.endsWith('.kerml'))) { - await this.indexFile(fullPath); - } - } - } - - /** - * Index a single library file - */ - private async indexFile(filePath: string): Promise { - try { - const content = fs.readFileSync(filePath, 'utf-8'); - const elements = this.extractElements(content, filePath); - - for (const element of elements) { - this.elements.set(element.qualifiedName, element); - // Also index by simple name for quick lookup - if (!element.qualifiedName.includes('::')) { - this.elements.set(element.name, element); - } - } - } catch (error) { - // eslint-disable-next-line no-console - console.error(`Failed to index file ${filePath}:`, error); - } - } - - /** - * Extract element definitions from library file content - * Uses simple regex patterns optimized for standard library format - */ - private extractElements(content: string, filePath: string): LibraryElement[] { - const elements: LibraryElement[] = []; - - // Pattern for element definitions - // Matches: part def PartDefinition :> ... - // attribute def AttributeDefinition :> ... - // action def ActionDefinition :> ... - // abstract metadata def MetadataItem :> ... - const elementPattern = /(?:^|\n)\s*(abstract\s+)?(\w+)\s+(def|definition)\s+(\w+)(?:\s+:>\s+([\w:,\s]+))?/g; - - let match; - while ((match = elementPattern.exec(content)) !== null) { - const _isAbstract = match[1] !== undefined; - const kind = match[2]; // 'part', 'action', 'attribute', 'metadata', etc. - const name = match[4]; - const specializes = match[5] ? match[5].split(',').map(s => s.trim()) : []; - - elements.push({ - name, - kind, - filePath, - qualifiedName: name, // Could be enhanced to extract package qualification - specializes, - features: [] - }); - } - - // Pattern for function definitions (standard library specific) - // Matches: function 'if' { ... } - // abstract function '.' { ... } - const functionPattern = /(?:^|\n)\s*(abstract\s+)?function\s+(['"]\w+['"]|\w+)/g; - - while ((match = functionPattern.exec(content)) !== null) { - const _isAbstract = match[1] !== undefined; - const name = match[2].replace(/['"]/g, ''); // Remove quotes from operator names - - elements.push({ - name, - kind: 'function', - filePath, - qualifiedName: name, - specializes: [], - features: [] - }); - } - - // Pattern for feature definitions - // Matches: ref feature target : Anything[0..*] nonunique; - // feature chain chains source.target; - const featurePattern = /(?:^|\n)\s*(abstract\s+)?(?:(ref|private)\s+)?feature\s+(\w+)(?:\s*:\s*([\w:.[\]*]+))?/g; - - while ((match = featurePattern.exec(content)) !== null) { - const modifier = match[2]; - const name = match[3]; - const type = match[4]; - - elements.push({ - name, - kind: modifier ? `${modifier}_feature` : 'feature', - filePath, - qualifiedName: name, - specializes: type ? [type] : [], - features: [] - }); - } - - // Pattern for simple declarations (items, metadata items, etc.) - // Matches: part partInstance : PartDefinition; - // item metadataItems : MetadataItem[0..*] :> ... - const usagePattern = /(?:^|\n)\s*(?:(abstract|private|ref)\s+)?(\w+)\s+(\w+)\s*:\s*([\w:[\]*]+)/g; - - while ((match = usagePattern.exec(content)) !== null) { - const modifier = match[1]; - const kind = match[2]; - const name = match[3]; - const type = match[4]; - - // Only index well-known usage kinds - if (['part', 'action', 'requirement', 'attribute', 'port', 'connection', 'item', 'metadata'].includes(kind)) { - elements.push({ - name, - kind: modifier ? `${modifier}_${kind}` : kind, - filePath, - qualifiedName: name, - specializes: [type], - features: [] - }); - } - } - - return elements; - } - - /** - * Look up an element by name - */ - public lookup(name: string): LibraryElement | undefined { - return this.elements.get(name); - } - - /** - * Check if a name is a standard library element - */ - public isStandardElement(name: string): boolean { - return this.elements.has(name); - } - - /** - * Get all elements of a specific kind - */ - public getElementsByKind(kind: string): LibraryElement[] { - return Array.from(this.elements.values()).filter(e => e.kind === kind); - } - - /** - * Get all element names (for autocomplete) - */ - public getAllElementNames(): string[] { - return Array.from(this.elements.keys()); - } - - /** - * Get specialization hierarchy for an element - */ - public getSpecializationChain(name: string): string[] { - const chain: string[] = []; - let current = this.lookup(name); - - while (current) { - chain.push(current.name); - if (current.specializes && current.specializes.length > 0) { - current = this.lookup(current.specializes[0]); - } else { - break; - } - } - - return chain; - } - - /** - * Get statistics about indexed library - */ - public getStatistics(): { total: number; byKind: Map } { - const byKind = new Map(); - - for (const element of this.elements.values()) { - const count = byKind.get(element.kind) || 0; - byKind.set(element.kind, count + 1); - } - - return { - total: this.elements.size, - byKind - }; - } - - /** - * Check if library is indexed - */ - public isIndexed(): boolean { - return this.indexed; - } - - /** - * Clear the index (for testing) - */ - public clear(): void { - this.elements.clear(); - this.indexed = false; - } -} diff --git a/src/parser/parserWorker.ts b/src/parser/parserWorker.ts deleted file mode 100644 index 97fd338..0000000 --- a/src/parser/parserWorker.ts +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Worker thread for ANTLR SysML parsing. - * - * Runs the heavyweight ANTLR lexer/parser/visitor off the extension host - * thread to prevent ~4 s UI blocks on large files. - * - * IMPORTANT: This file uses only `require()` calls — no `import` statements — - * so that the vscode module mock is installed *before* any dependent module - * (antlrSysMLParser) is loaded. TypeScript hoists `import` to the top of the - * compiled output, which would cause `require('vscode')` to run before the - * mock is ready. - */ - -/* eslint-disable @typescript-eslint/no-explicit-any */ - -// ── Step 1: Intercept `require('vscode')` ──────────────────────────── -// Must happen before ANY module that `import * as vscode from 'vscode'`. -const nodeModule = require('module'); -const nodePath = require('path'); - -const _origResolve = (nodeModule as any)._resolveFilename; -(nodeModule as any)._resolveFilename = function (request: string, ...args: unknown[]) { - if (request === 'vscode') { - return nodePath.join(__dirname, 'vscodeMock.js'); - } - return _origResolve.call(this, request, ...args); -}; - -// ── Step 2: Load the ANTLR parser (now uses vscodeMock for 'vscode') ─ -const { parentPort } = require('worker_threads'); -const { ANTLRSysMLParser } = require('./antlrSysMLParser'); - -// ── Minimal TextDocument mock ───────────────────────────────────────── -// ANTLRSysMLParser.parseDocument() reads: -// • getText() – full text -// • getText(range) – text within a Range -// • lineCount – number of lines -// • uri / fileName – for error reporting - -interface RangeLike { - start: { line: number; character: number }; - end: { line: number; character: number }; -} - -function createMockDocument(text: string, uri: string) { - const lines = text.split('\n'); - return { - getText(range?: RangeLike): string { - if (!range) { return text; } - const sl = range.start.line; - const sc = range.start.character; - const el = range.end.line; - const ec = range.end.character; - if (sl === el) { - return (lines[sl] || '').substring(sc, ec); - } - const parts: string[] = []; - parts.push((lines[sl] || '').substring(sc)); - for (let i = sl + 1; i < el; i++) { - parts.push(lines[i] || ''); - } - parts.push((lines[el] || '').substring(0, ec)); - return parts.join('\n'); - }, - get lineCount() { return lines.length; }, - get uri() { return { toString: () => uri, fsPath: uri }; }, - get languageId() { return 'sysml'; }, - get fileName() { return uri; }, - get isClosed() { return false; }, - }; -} - -// ── Worker message handling ─────────────────────────────────────────── -// One parser instance lives for the worker's lifetime so the ANTLR DFA -// prediction cache is reused across parse requests. -const antlrParser = new ANTLRSysMLParser(); - -parentPort?.on('message', (msg: any) => { - if (msg.type === 'parse') { - try { - const doc = createMockDocument(msg.text, msg.uri); - const elements = antlrParser.parseDocument(doc, msg.includeErrors ?? false); - const relationships = antlrParser.getRelationships(); - parentPort?.postMessage({ id: msg.id, type: 'result', elements, relationships }); - } catch (err: unknown) { - parentPort?.postMessage({ - id: msg.id, - type: 'error', - error: err instanceof Error ? err.message : String(err), - }); - } - } -}); diff --git a/src/parser/parserWorkerHost.ts b/src/parser/parserWorkerHost.ts deleted file mode 100644 index 2ec2875..0000000 --- a/src/parser/parserWorkerHost.ts +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Manages a Worker thread for ANTLR SysML parsing. - * - * Provides an async parse API that runs the heavyweight ANTLR - * lexer / parser / visitor off the extension host thread, preventing - * the ~4 s UI block that occurs on large files. - */ - -import * as path from 'path'; -import * as vscode from 'vscode'; -import { Worker } from 'worker_threads'; -import type { Relationship, SysMLElement } from './sysmlParser'; - -interface PendingRequest { - resolve: (result: ParseWorkerResult) => void; - reject: (error: Error) => void; -} - -export interface ParseWorkerResult { - elements: SysMLElement[]; - relationships: Relationship[]; -} - -export class ParserWorkerHost { - private worker: Worker | null = null; - private nextId = 0; - private pending = new Map(); - - // ── Worker lifecycle ────────────────────────────────────────────── - - private ensureWorker(): Worker { - if (this.worker) { return this.worker; } - - const workerPath = path.join(__dirname, 'parserWorker.js'); - this.worker = new Worker(workerPath); - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.worker.on('message', (msg: any) => { - const req = this.pending.get(msg.id); - if (!req) { return; } // stale / cancelled - this.pending.delete(msg.id); - - if (msg.type === 'error') { - req.reject(new Error(msg.error)); - } else { - const elements = this.reconstructRanges(msg.elements); - req.resolve({ elements, relationships: msg.relationships }); - } - }); - - this.worker.on('error', (err) => { - for (const req of this.pending.values()) { req.reject(err); } - this.pending.clear(); - this.worker = null; // respawn on next request - }); - - this.worker.on('exit', (code) => { - if (code !== 0) { - const err = new Error(`Parser worker exited with code ${code}`); - for (const req of this.pending.values()) { req.reject(err); } - this.pending.clear(); - } - this.worker = null; - }); - - return this.worker; - } - - // ── Public API ──────────────────────────────────────────────────── - - /** - * Parse a SysML document in a Worker thread. - * Returns the parsed elements and relationships with proper - * `vscode.Range` objects reconstructed from the worker's output. - */ - async parseDocument( - text: string, - uri: string, - includeErrors: boolean, - timeoutMs = 30_000 - ): Promise { - const worker = this.ensureWorker(); - const id = ++this.nextId; - - return new Promise((resolve, reject) => { - let timer: ReturnType | undefined; - - const cleanup = () => { - if (timer) { globalThis.clearTimeout(timer); timer = undefined; } - this.pending.delete(id); - }; - - this.pending.set(id, { - resolve: (result) => { cleanup(); resolve(result); }, - reject: (err) => { cleanup(); reject(err); } - }); - - if (timeoutMs > 0) { - timer = setTimeout(() => { - const req = this.pending.get(id); - if (req) { - this.pending.delete(id); - reject(new Error(`Parse timed out after ${timeoutMs} ms`)); - } - }, timeoutMs); - } - - worker.postMessage({ type: 'parse', id, text, uri, includeErrors }); - }); - } - - /** - * Cancel all in-flight parse requests (e.g. when the user switches files). - */ - cancelAll(): void { - for (const req of this.pending.values()) { - req.reject(new Error('Parse cancelled')); - } - this.pending.clear(); - } - - /** - * Terminate the worker thread and release resources. - */ - dispose(): void { - this.cancelAll(); - if (this.worker) { - this.worker.terminate(); - this.worker = null; - } - } - - // ── Deserialization ─────────────────────────────────────────────── - - /** - * Recursively converts plain `{start, end}` range objects that came - * through `structuredClone` into proper `vscode.Range` instances. - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private reconstructRanges(elements: any[]): SysMLElement[] { - for (const el of elements) { - if (el.range?.start != null && el.range?.end != null) { - el.range = new vscode.Range( - el.range.start.line, el.range.start.character, - el.range.end.line, el.range.end.character - ); - } - if (el.children?.length) { - this.reconstructRanges(el.children); - } - } - return elements; - } -} diff --git a/src/parser/sysmlParser.ts b/src/parser/sysmlParser.ts deleted file mode 100644 index 64db33e..0000000 --- a/src/parser/sysmlParser.ts +++ /dev/null @@ -1,3225 +0,0 @@ -/* eslint-disable no-console */ -import * as vscode from 'vscode'; -import { LibraryService } from '../library/service'; -import { EnrichedElement, ResolutionResult, SemanticResolver } from '../resolver'; -import type { ANTLRSysMLParser } from './antlrSysMLParser'; -import { ParserWorkerHost } from './parserWorkerHost'; - -// Debug flag - set to true for verbose logging -const DEBUG_ACTIVITY_PARSING = false; - -export interface SysMLElement { - type: string; - name: string; - range: vscode.Range; - children: SysMLElement[]; - attributes: Map; - relationships: Relationship[]; - errors?: string[]; -} - -export interface Relationship { - type: string; - target: string; - source: string; - name?: string; -} - -export interface SequenceDiagram { - name: string; - participants: Participant[]; - messages: Message[]; - range: vscode.Range; -} - -export interface Participant { - name: string; - type: string; - range: vscode.Range; -} - -export interface Message { - name: string; - from: string; - to: string; - payload: string; - occurrence: number; - range: vscode.Range; -} - -export interface ActivityDiagram { - name: string; - actions: ActivityAction[]; - decisions: DecisionNode[]; - flows: ControlFlow[]; - states: ActivityState[]; - range: vscode.Range; -} - -export interface StructuralDiagram { - name: string; - title?: string; - packages: StructuralPackage[]; - parts: StructuralPart[]; - connections: StructuralConnection[]; - requirements: StructuralRequirement[]; - attributes: StructuralAttribute[]; - interfaces: StructuralInterface[]; - relationships: StructuralRelationship[]; - actions: StructuralAction[]; - states: StructuralState[]; - constraints: StructuralConstraint[]; - actors: StructuralActor[]; - useCases: StructuralUseCase[]; - occurrences: StructuralOccurrence[]; - enumerations: StructuralEnumeration[]; - range: vscode.Range; -} - -export interface StructuralPackage { - name: string; - type: 'package'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - children: (StructuralPart | StructuralRequirement | StructuralPackage)[]; - range: vscode.Range; -} - -export interface StructuralPart { - name: string; - type: 'part' | 'part def' | 'item' | 'item def'; - partType?: string; - multiplicity?: string; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - attributes: StructuralAttribute[]; - ports: StructuralPort[]; - children: StructuralPart[]; - redefinitions: StructuralRedefinition[]; - range: vscode.Range; -} - -export interface StructuralConnection { - name: string; - type: 'connection' | 'binding' | 'succession' | 'allocation'; - from: string; - to: string; - visibility: 'public' | 'private' | 'protected'; - range: vscode.Range; -} - -export interface StructuralRequirement { - name: string; - type: 'requirement' | 'requirement def'; - requirementType?: string; - text?: string; - visibility: 'public' | 'private' | 'protected'; - satisfiedBy?: string[]; - range: vscode.Range; -} - -export interface StructuralAttribute { - name: string; - type: 'attribute'; - dataType: string; - defaultValue?: string; - visibility: 'public' | 'private' | 'protected'; - range: vscode.Range; -} - -export interface StructuralInterface { - name: string; - type: 'interface' | 'interface def'; - ports: StructuralPort[]; - visibility: 'public' | 'private' | 'protected'; - range: vscode.Range; -} - -export interface StructuralPort { - name: string; - type: 'port'; - direction: 'in' | 'out' | 'inout'; - portType?: string; - visibility: 'public' | 'private' | 'protected'; - range: vscode.Range; -} - -export interface StructuralRelationship { - type: 'specialization' | 'composition' | 'aggregation' | 'dependency' | 'satisfy' | 'verify'; - from: string; - to: string; - label?: string; - range: vscode.Range; -} - -export interface StructuralAction { - name: string; - type: 'action' | 'action def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - inputs?: StructuralParameter[]; - outputs?: StructuralParameter[]; - subActions?: StructuralAction[]; - controlFlow?: StructuralControlFlow[]; - range: vscode.Range; -} - -export interface StructuralState { - name: string; - type: 'state' | 'state def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - substates?: StructuralState[]; - transitions?: StructuralTransition[]; - entryAction?: string; - exitAction?: string; - doActivity?: string; - range: vscode.Range; -} - -export interface StructuralConstraint { - name: string; - type: 'constraint' | 'constraint def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - expression: string; - appliesTo?: string[]; - range: vscode.Range; -} - -export interface StructuralActor { - name: string; - type: 'actor' | 'actor def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - attributes: StructuralAttribute[]; - actions: StructuralAction[]; - range: vscode.Range; -} - -export interface StructuralUseCase { - name: string; - type: 'use case' | 'use case def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - actors: string[]; - subject: string; - objective?: string; - includes?: string[]; - extends?: string[]; - range: vscode.Range; -} - -export interface StructuralOccurrence { - name: string; - type: 'occurrence' | 'occurrence def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - occurrenceType?: string; - range: vscode.Range; -} - -export interface StructuralEnumeration { - name: string; - type: 'enumeration' | 'enumeration def'; - visibility: 'public' | 'private' | 'protected'; - documentation?: string; - literals: StructuralEnumerationLiteral[]; - range: vscode.Range; -} - -export interface StructuralRedefinition { - name: string; - redefinedElement: string; - newValue?: string; - range: vscode.Range; -} - -export interface StructuralParameter { - name: string; - direction: 'in' | 'out' | 'inout'; - parameterType: string; - defaultValue?: string; - range: vscode.Range; -} - -export interface StructuralControlFlow { - type: 'sequence' | 'parallel' | 'decision' | 'merge' | 'loop'; - from: string; - to: string; - condition?: string; - range: vscode.Range; -} - -export interface StructuralTransition { - name?: string; - from: string; - to: string; - trigger?: string; - guard?: string; - effect?: string; - range: vscode.Range; -} - -export interface StructuralEnumerationLiteral { - name: string; - value?: string; - range: vscode.Range; -} - -export interface ActivityAction { - name: string; - type: 'action' | 'start' | 'end' | 'fork' | 'join' | 'composite' | 'initial' | 'final' | 'merge' | 'decision'; - kind?: string; // Additional kind descriptor (e.g., 'initial', 'final', 'merge', 'decision') - inputs?: string[]; - outputs?: string[]; - condition?: string; - subActions?: ActivityAction[]; // For composite actions - isDefinition?: boolean; // action def vs action usage - range?: vscode.Range; - parent?: string; // Parent container action name (for nested actions) - children?: string[]; // Child action names (for container actions) -} - -export interface DecisionNode { - name: string; - condition: string; - branches: { - condition: string; - target: string; - }[]; - range: vscode.Range; -} - -export interface ControlFlow { - from: string; - to: string; - condition?: string; - guard?: string; - range: vscode.Range; -} - -export interface ActivityState { - name: string; - type: 'initial' | 'final' | 'intermediate'; - entryActions?: string[]; - exitActions?: string[]; - doActivity?: string; - range: vscode.Range; -} - -/** - * Parser for SysML v2.0 documents that extracts elements and their relationships. - * Powered by pure ANTLR4 parsing with semantic resolution. - */ -export class SysMLParser { - private elements: Map = new Map(); - private relationships: Relationship[] = []; - private antlrParser: ANTLRSysMLParser | false | null = null; // Lazy loaded to avoid circular imports - private semanticResolver: SemanticResolver | null = null; // Semantic resolver for type checking - private workerHost: ParserWorkerHost | null = null; // Worker thread for async parsing - - // Parse cache to avoid reparsing unchanged documents - private parseCache: Map = new Map(); - private resolutionCache: Map = new Map(); - - /** - * Gate that language providers can await so they don't trigger their own - * heavy parse while a centralized parse is already in progress. - * Resolves once the current centralized parse completes. - */ - private _parseGate: Promise = Promise.resolve(); - private _resolveParseGate: (() => void) | null = null; - - /** Signal that a centralized parse is about to begin. */ - public beginParseGate(): void { - if (!this._resolveParseGate) { - this._parseGate = new Promise(resolve => { - this._resolveParseGate = resolve; - }); - } - } - - /** Signal that the centralized parse has finished. */ - public endParseGate(): void { - if (this._resolveParseGate) { - this._resolveParseGate(); - this._resolveParseGate = null; - } - } - - /** Wait for any in-progress centralized parse to finish. Resolves immediately if idle. */ - public waitForParse(): Promise { - return this._parseGate; - } - - /** - * Clear all parse and resolution caches. - * Returns the number of entries that were cleared. - */ - public clearCache(): { parseEntries: number; resolutionEntries: number } { - const parseEntries = this.parseCache.size; - const resolutionEntries = this.resolutionCache.size; - this.parseCache.clear(); - this.resolutionCache.clear(); - return { parseEntries, resolutionEntries }; - } - - /** - * Simple string hash function for content comparison - */ - private hashContent(content: string): number { - let hash = 0; - for (let i = 0; i < content.length; i++) { - const char = content.charCodeAt(i); - hash = ((hash << 5) - hash) + char; - hash = hash & hash; // Convert to 32bit integer - } - return hash; - } - - /** - * Gets the ANTLR parser instance, creating it on first use. - */ - private getANTLRParser() { - if (!this.antlrParser) { - try { - // console.log('Loading ANTLR SysML parser...'); - const { ANTLRSysMLParser } = require('./antlrSysMLParser'); - this.antlrParser = new ANTLRSysMLParser(); - // console.log('ANTLR SysML parser loaded successfully'); - } catch (error) { - console.error('ANTLR parser not available:', error); - this.antlrParser = false; // Mark as unavailable - } - } - return this.antlrParser; - } - - /** - * Gets the semantic resolver instance, creating it on first use. - */ - private getSemanticResolver(): SemanticResolver { - if (!this.semanticResolver) { - const libraryService = LibraryService.getInstance(); - this.semanticResolver = new SemanticResolver(libraryService); - } - return this.semanticResolver; - } - - /** - * Parses a SysML document and extracts all elements in a hierarchical structure. - * Primary method for language features (navigation, validation, model explorer). - * Phase 2: Pure ANTLR parsing - no regex fallback. Errors surface as diagnostics. - * Uses content-based caching to avoid expensive reparsing of unchanged documents. - * @param document The VS Code text document to parse - * @returns Array of root-level SysML elements - */ - parse(document: vscode.TextDocument): SysMLElement[] { - try { - const uri = document.uri.toString(); - const content = document.getText(); - const contentHash = this.hashContent(content); - - // Check cache first - avoid expensive ANTLR parsing if content unchanged - const cached = this.parseCache.get(uri); - if (cached && cached.hash === contentHash) { - // Restore cached state - this.elements.clear(); - this.updateElementCache(cached.elements); - this.relationships = cached.relationships; - return cached.elements; - } - - this.elements.clear(); - this.relationships = []; - - // Phase 2: Pure ANTLR parsing only - const antlr = this.getANTLRParser(); - if (!antlr) { - const message = 'ANTLR parser unavailable - cannot parse document'; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail if output channel not available - } - return []; // Return empty array if ANTLR unavailable - } - - // Parse with ANTLR - include errors for diagnostics - const elements = antlr.parseDocument(document, false); // Exclude error elements for cleaner output - - // Debug: trace unnamed connections after ANTLR parse - const findUnnamedConnections = (els: SysMLElement[], depth = 0): void => { - for (const el of els) { - if (el.name === 'unnamed' && el.type === 'connection') { - console.log(`[parse] Connection at line ${el.range?.start?.line} is unnamed after ANTLR parse`); - } - if (el.children) { - findUnnamedConnections(el.children, depth + 1); - } - } - }; - findUnnamedConnections(elements); - - // Update internal state - this.updateElementCache(elements); - this.relationships = antlr.getRelationships(); - - // Cache the result - this.parseCache.set(uri, { - hash: contentHash, - elements: elements, - relationships: [...this.relationships] - }); - - // Log parse errors for diagnostics if any - const errorElements = elements.filter(el => el.type === 'error'); - if (errorElements.length > 0) { - const message = `ANTLR parsing produced ${errorElements.length} error elements`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail - } - } - - return elements; - } catch (error) { - // Use proper logging instead of console.error - const message = `Error parsing SysML document: ${error instanceof Error ? error.message : 'Unknown error'}`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail if output channel not available - } - // Return empty array to prevent crashes - return []; - } - } - - /** - * Parses a SysML document specifically for visualization purposes. - * Uses ANTLR parsing only. - * @param document The VS Code text document to parse - * @returns Array of root-level SysML elements optimized for visualization - */ - parseForVisualization(document: vscode.TextDocument): SysMLElement[] { - try { - this.elements.clear(); - this.relationships = []; - - // Always use ANTLR parser - const antlr = this.getANTLRParser(); - if (!antlr) { - return []; - } - - const elements = antlr.parseDocument(document, false); - this.relationships = antlr.getRelationships(); - - // Enhance all elements with library information - const enhancedElements = this.enhanceWithLibraryInfo(elements); - this.updateElementCache(enhancedElements); - return enhancedElements; - } catch { - return []; - } - } - - /** - * Update element cache helper method - */ - private updateElementCache(elements: SysMLElement[]): void { - this.addElementsToMap(elements, this.elements); - } - - /** - * Parse document including error elements for validation - * Phase 2: Pure ANTLR only - */ - parseWithErrors(document: vscode.TextDocument): SysMLElement[] { - try { - this.elements.clear(); - this.relationships = []; - - const antlr = this.getANTLRParser(); - if (!antlr) { - const message = 'ANTLR parser unavailable for error parsing'; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail - } - return []; - } - - // For validation, include all elements including errors - const allElements = antlr.parseDocument(document, true); - - // Update internal state - this.addElementsToMap(allElements, this.elements); - this.relationships = antlr.getRelationships(); - - return allElements; - } catch (error) { - const message = `Error parsing SysML document for validation: ${error instanceof Error ? error.message : 'Unknown error'}`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail if output channel not available - } - return []; - } - } - - /** - * Phase 3: Parse and resolve document with semantic validation - * Returns enriched elements with type information from standard library - * Uses caching to avoid expensive re-resolution of unchanged documents. - * @param document The VS Code text document to parse - * @returns Resolution result with enriched elements and diagnostics - */ - async parseWithSemanticResolution(document: vscode.TextDocument): Promise { - try { - const uri = document.uri.toString(); - const content = document.getText(); - const contentHash = this.hashContent(content); - - // Check resolution cache first - const cached = this.resolutionCache.get(uri); - if (cached && cached.hash === contentHash) { - return cached.result; - } - - // First parse with ANTLR via Worker thread (this also uses caching) - const elements = await this.parseAsync(document); - - // Then resolve types and validate against library - // Pass document text to enable enum-keyword and import validation - const resolver = this.getSemanticResolver(); - const result = await resolver.resolve(elements, document.uri, document.getText()); - - // Cache the resolution result - this.resolutionCache.set(uri, { - hash: contentHash, - result: result - }); - - // Log resolution statistics - const message = `Semantic resolution: ${result.stats.totalElements} elements, ` + - `${result.stats.resolvedElements} resolved, ` + - `${result.stats.errorCount} errors, ` + - `${result.stats.warningCount} warnings`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail if output channel not available - } - - return result; - } catch (error) { - const message = `Error during semantic resolution: ${error instanceof Error ? error.message : 'Unknown error'}`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail - } - - // Return empty result on error - return { - elements: [], - diagnostics: [], - stats: { - totalElements: 0, - resolvedElements: 0, - unresolvedElements: 0, - errorCount: 0, - warningCount: 0 - } - }; - } - } - - /** - * Parse document asynchronously using a Worker thread. - * Falls back to synchronous parsing if the worker is unavailable. - */ - async parseAsync(document: vscode.TextDocument): Promise { - const uri = document.uri.toString(); - const content = document.getText(); - const contentHash = this.hashContent(content); - - // Check cache first — avoid expensive ANTLR parsing if content unchanged - const cached = this.parseCache.get(uri); - if (cached && cached.hash === contentHash) { - this.elements.clear(); - this.updateElementCache(cached.elements); - this.relationships = cached.relationships; - return cached.elements; - } - - try { - if (!this.workerHost) { - this.workerHost = new ParserWorkerHost(); - } - - const result = await this.workerHost.parseDocument(content, uri, false); - - // Update internal state - this.elements.clear(); - this.updateElementCache(result.elements); - this.relationships = result.relationships; - - // Cache the result - this.parseCache.set(uri, { - hash: contentHash, - elements: result.elements, - relationships: [...this.relationships] - }); - - // Log parse errors for diagnostics if any - const errorElements = result.elements.filter(el => el.type === 'error'); - if (errorElements.length > 0) { - const message = `ANTLR parsing (worker) produced ${errorElements.length} error elements`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail - } - } - - return result.elements; - } catch (error) { - // Fall back to synchronous parsing on the main thread - const message = `Worker parse failed, falling back to sync: ${error instanceof Error ? error.message : 'Unknown error'}`; - try { - const { getOutputChannel } = require('../extension'); - getOutputChannel()?.appendLine(message); - } catch { - // Silently fail - } - return this.parse(document); - } - } - - /** - * Cancel all in-flight worker parse requests without terminating the worker. - */ - cancelPendingParses(): void { - this.workerHost?.cancelAll(); - } - - /** - * Terminate the parser Worker thread and release resources. - */ - dispose(): void { - this.workerHost?.dispose(); - this.workerHost = null; - } - - /** - * Convert enriched elements back to SysML elements for compatibility - * This bridges Phase 3 resolver output to existing visualization consumers - */ - convertEnrichedToSysMLElements(enriched: EnrichedElement[]): SysMLElement[] { - return enriched.map(element => { - // Debug: trace unnamed connections - if (element.name === 'unnamed' && element.type === 'connection') { - console.log(`[convert] Connection at line ${element.range?.start?.line} is unnamed in enriched`); - } - - // Debug: Check if enriched element has doc - if (element.attributes && element.attributes.has('doc')) { - // console.log(`[CONVERT] ${element.name} (${element.type}) has doc in enriched: ${element.attributes.get('doc')?.toString().substring(0, 50)}...`); - } - - // Convert relationships to include source - const relationships: Relationship[] = element.relationships.map(rel => ({ - type: rel.type, - target: rel.target, - source: element.name - })); - - // Build attributes map with resolved type info - const attributes = new Map(element.attributes); - if (element.resolvedType) { - attributes.set('resolvedType', element.resolvedType.qualifiedName); - attributes.set('typeKind', element.resolvedType.kind); - attributes.set('isLibraryType', element.resolvedType.isLibraryType); - } - - // Debug: Verify doc was copied to new map - if (attributes.has('doc')) { - // console.log(`[CONVERT] ${element.name}: doc preserved in output attributes`); - } - - return { - type: element.type, - name: element.name, - range: element.range, - children: this.convertEnrichedToSysMLElements(element.children), - attributes, - relationships - }; - }); - } - - private parseLine(line: string, lineNumber: number, document: vscode.TextDocument): SysMLElement | null { - // Special handling for participants with type annotations - const participantMatch = line.match(/^\s*participant\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_]+)/i); - if (participantMatch) { - const name = participantMatch[1]; - const type = participantMatch[2]; - - const range = new vscode.Range(lineNumber, 0, lineNumber, line.length); - const element: SysMLElement = { - type: 'participant', - name: name, - range: range, - children: [], - attributes: new Map([['participantType', type]]), - relationships: [] - }; - - this.elements.set(name, element); - return element; - } - - // Special handling for messages with SendMessage pattern - const messageMatch = line.match(/^\s*message\s+([a-zA-Z0-9_]+)\s*:\s*SendMessage\s+from\s+([a-zA-Z0-9_]+)\s+to\s+([a-zA-Z0-9_]+)/i); - if (messageMatch) { - const name = messageMatch[1]; - const from = messageMatch[2]; - const to = messageMatch[3]; - - const range = new vscode.Range(lineNumber, 0, lineNumber, line.length); - const element: SysMLElement = { - type: 'message', - name: name, - range: range, - children: [], - attributes: new Map([['from', from], ['to', to], ['fullLine', line]]), - relationships: [] - }; - - this.elements.set(name, element); - return element; - } - - const elementTypes = [ - 'package', 'part', 'port', 'action', 'state', 'requirement', - 'use case', 'constraint', 'attribute', 'reference', 'connection', - 'interface', 'allocation', 'item', 'actor', 'concern', 'analysis', - 'verification', 'view', 'viewpoint', 'enum', 'datatype', 'assoc', - 'metadata', 'comment', 'doc', 'calc', 'interaction', 'participant', - 'message', 'payload', 'occurrence', 'alt', 'else' - ]; - - for (const type of elementTypes) { - const regex = new RegExp(`^\\s*(abstract\\s+|private\\s+|public\\s+|protected\\s+)?(${type})\\s+(def\\s+)?([a-zA-Z0-9_]+)`, 'i'); - const match = line.match(regex); - - - - if (match) { - const name = match[4]; - const errors: string[] = []; - - // Validate element name - if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) { - errors.push(`Invalid element name: ${name}`); - } - - // Validate line number within document bounds - const maxLine = document.lineCount - 1; - const validLineNumber = Math.min(lineNumber, maxLine); - const range = new vscode.Range( - validLineNumber, 0, - validLineNumber, line.length - ); - - const element: SysMLElement = { - type: type, - name: name, - range: range, - children: [], - attributes: new Map(), - relationships: [], - errors: errors - }; - - this.parseRelationships(line, element); - - return element; - } - } - - return null; - } - - private parseRelationships(line: string, element: SysMLElement): void { - const relationshipPatterns = [ - { type: 'specializes', pattern: /:>\s*([a-zA-Z_][a-zA-Z0-9_]*)/ }, - { type: 'subsets', pattern: /subsets\s+([a-zA-Z_][a-zA-Z0-9_]*)/ }, - { type: 'redefines', pattern: /redefines\s+([a-zA-Z_][a-zA-Z0-9_]*)/ }, - { type: 'references', pattern: /references\s+([a-zA-Z_][a-zA-Z0-9_]*)/ }, - { type: 'binds', pattern: /binds\s+([a-zA-Z_][a-zA-Z0-9_]*)/ } - ]; - - for (const pattern of relationshipPatterns) { - const match = line.match(pattern.pattern); - if (match) { - const relationship: Relationship = { - type: pattern.type, - source: element.name, - target: match[1] - }; - element.relationships.push(relationship); - this.relationships.push(relationship); - } - } - } - - /** - * Gets all parsed elements as a map keyed by element name. - * @returns Map of element names to SysML elements - */ - getElements(): Map { - return this.elements; - } - - /** - * Gets all discovered relationships between elements. - * @returns Array of relationships found in the parsed document - */ - getRelationships(): Relationship[] { - return this.relationships; - } - - /** - * Extracts sequence diagram data from parsed elements. - * Uses ANTLR parser for accurate sequence diagram extraction. - * Falls back to legacy regex-based extraction if ANTLR is unavailable. - * @param document The document to extract sequence diagrams from (optional, uses internal elements if not provided) - * @returns Array of interaction elements with their participants and messages - */ - getSequenceDiagrams(): SequenceDiagram[] { - // Use legacy regex-based extraction for sequence diagrams - return this.extractSequenceDiagramsLegacy(); - } - - /** - * Legacy sequence diagram extraction using regex-based heuristics. - * Used as fallback when ANTLR parsing is unavailable. - */ - private extractSequenceDiagramsLegacy(): SequenceDiagram[] { - const interactions = Array.from(this.elements.values()).filter( - element => element.type === 'interaction' - ); - - // Also extract action/behavior sequences as sequence diagrams - const sequentialSources = Array.from(this.elements.values()).filter( - element => this.isSequentialBehaviorElement(element) - ); - - const allDiagrams = [...interactions, ...sequentialSources]; - - return allDiagrams.map(diagram => { - const participants: Participant[] = []; - const messages: Message[] = []; - - if (this.isSequentialBehaviorElement(diagram)) { - // Extract sequential flow from action/behavior elements - this.extractActionSequence(diagram, participants, messages); - } else { - // Extract participants and messages from interaction children - this.extractSequenceElements(diagram, participants, messages); - } - - return { - name: diagram.name, - participants: participants, - messages: messages.sort((a, b) => a.occurrence - b.occurrence), // Sort by timing - range: diagram.range - }; - }); - } - - private extractSequenceElements(element: SysMLElement, participants: Participant[], messages: Message[]): void { - // Process direct children - for (const child of element.children) { - if (child.type === 'participant') { - participants.push({ - name: child.name, - type: this.extractParticipantType(child), - range: child.range - }); - } else if (child.type === 'message') { - const messageData = this.parseMessageElement(child); - if (messageData) { - messages.push(messageData); - } - } - - // Recursively process nested elements - this.extractSequenceElements(child, participants, messages); - } - } - - private extractParticipantType(participant: SysMLElement): string { - // Look for participantType attribute (set by enhanced parsing) - for (const [key, value] of participant.attributes) { - if (key === 'participantType' && typeof value === 'string') { - return value; - } - if (key === 'type' && typeof value === 'string') { - return value; - } - } - - // Look for type in participant name pattern like "participant user : User" - const participantName = participant.name || ''; - const typeMatch = participantName.match(/:\s*(\w+)/); - if (typeMatch) { - return typeMatch[1]; - } - - // Look for type in children - for (const child of participant.children) { - if (child.type && child.type !== 'participant') { - return child.type; - } - } - - return 'Actor'; // Default type - } - - private parseMessageElement(message: SysMLElement): Message | null { - // Extract message details from the element's attributes and children - let from = ''; - let to = ''; - let payload = ''; - let occurrence = 0; - - // First, try to get from/to from attributes (set by enhanced parsing) - for (const [key, value] of message.attributes) { - if (key === 'from' && typeof value === 'string') { - from = value; - } - if (key === 'to' && typeof value === 'string') { - to = value; - } - } - - // If not in attributes, try to parse from the message name or children - if (!from || !to) { - const messageName = message.name || ''; - const sendMessageMatch = messageName.match(/SendMessage\s+from\s+(\w+)\s+to\s+(\w+)/); - if (sendMessageMatch) { - from = sendMessageMatch[1]; - to = sendMessageMatch[2]; - } - } - - // Look for payload and timing in children - for (const child of message.children) { - const childText = child.name || ''; - - // Parse "SendMessage from X to Y" pattern from children if not found yet - if (!from || !to) { - const childSendMessageMatch = childText.match(/SendMessage\s+from\s+(\w+)\s+to\s+(\w+)/); - if (childSendMessageMatch) { - from = childSendMessageMatch[1]; - to = childSendMessageMatch[2]; - } - } - - // Look for payload - extract quoted content - if (child.type === 'payload' || childText.includes('payload')) { - const payloadMatch = childText.match(/payload\s*["']([^"']+)["']/); - if (payloadMatch) { - payload = payloadMatch[1]; - } else { - // Fallback: extract text after payload keyword - const cleanText = childText.replace(/.*payload\s*/, '').replace(/[;"'\s]*$/, '').replace(/^[;"'\s]*/, ''); - if (cleanText) { - payload = cleanText; - } - } - } - - // Look for occurrence timing - handle [s] notation - if (child.type === 'occurrence' || childText.includes('occurrence')) { - const timeMatch = childText.match(/(\d+(?:\.\d+)?)\s*\[s\]/); - if (timeMatch) { - occurrence = parseFloat(timeMatch[1]); - } - } - } - - if (from && to) { - return { - name: message.name, - from: from, - to: to, - payload: payload || message.name, - occurrence: occurrence, - range: message.range - }; - } - - return null; - } - - /** - * Extracts activity diagrams from the SysML model. - * @param document The VS Code text document to extract from - * @returns Array of activity diagrams found in the model - */ - getActivityDiagrams(document: vscode.TextDocument): ActivityDiagram[] { - // Use parseForVisualization method for consistent and flexible parsing - const elements = this.parseForVisualization(document); - - // Extract activity diagrams from parsed elements - const diagrams = this.extractActivityDiagramsFromElements(elements, document); - - if (diagrams.length === 0) { - // If no diagrams found from elements, try direct regex extraction as fallback - // console.log('No activity diagrams found in parsed elements, trying direct regex extraction'); - const fallbackDiagrams = this.extractActivityElements(document); - // console.log(`Direct regex found ${fallbackDiagrams.length} activity diagrams`); - return fallbackDiagrams; - } - - return diagrams; - } - - /** - * Extract activity diagrams from parsed elements (used by hybrid approach) - */ - private extractActivityDiagramsFromElements(elements: SysMLElement[], document: vscode.TextDocument): ActivityDiagram[] { - const diagrams: ActivityDiagram[] = []; - const content = document.getText(); - - // Track swimlane assignments from part elements with perform statements - // Map of actionName -> partName (lane) - const swimlaneAssignments = new Map(); - - // First pass: collect swimlane assignments from parts with perform statements - const collectSwimlanesFromParts = (element: SysMLElement, _parentPartName?: string) => { - const isPartType = element.type === 'part' || element.type === 'part def'; - - if (isPartType && element.range) { - const startOffset = document.offsetAt(element.range.start); - const endOffset = document.offsetAt(element.range.end); - const elementText = content.substring(startOffset, endOffset); - const partName = element.name; - - // Look for perform statements in this part - // Pattern: perform actionPath.actionName or perform action actionName - const performPattern = /perform\s+(?:action\s+)?([a-zA-Z_][\w.]*)/g; - let performMatch; - while ((performMatch = performPattern.exec(elementText)) !== null) { - const performedAction = performMatch[1]; - // Extract just the action name (last part after dot) - const actionName = performedAction.includes('.') - ? performedAction.split('.').pop() ?? performedAction - : performedAction; - - if (actionName && partName) { - swimlaneAssignments.set(actionName, partName); - } - } - } - - // Recursively check children - if (element.children) { - element.children.forEach(child => collectSwimlanesFromParts(child, element.name)); - } - }; - - // Collect swimlane assignments first - elements.forEach(el => collectSwimlanesFromParts(el)); - - const extractFromElement = (element: SysMLElement) => { - // Check for action or action def elements with children - // Include 'definition' type as ANTLR may categorize some action definitions this way - // Also include 'perform' for inline action definitions (perform action X { ... }) - // Include 'use case' since they can contain activity flows with first/then/done - const isActionType = element.type === 'action' || - element.type === 'action def' || - element.type === 'action definition' || - element.type === 'definition' || - element.type === 'use case' || - (element.type === 'perform' && element.attributes?.get?.('hasBody') === 'true'); - - if (isActionType && element.range) { - // Get the element body from the document - const startOffset = document.offsetAt(element.range.start); - const endOffset = document.offsetAt(element.range.end); - const elementText = content.substring(startOffset, endOffset); - - // Find the opening brace and extract the body - const braceIndex = elementText.indexOf('{'); - if (braceIndex !== -1) { - const body = elementText.substring(braceIndex + 1, elementText.lastIndexOf('}')); - const bodyStartOffset = startOffset + braceIndex + 1; - - // Parse activity body for flows and nodes - const { actions, flows, decisions, states } = this.parseActivityBody(body, document, bodyStartOffset); - - // console.log(`[extractActivityDiagramsFromElements] Element '${element.name}' parsed: actions=${actions.length}, flows=${flows.length}, decisions=${decisions.length}, states=${states.length}`); - - // Apply swimlane assignments to actions - actions.forEach(action => { - const lane = swimlaneAssignments.get(action.name); - if (lane) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (action as any).lane = lane; - } - }); - - // Include if has any activity content - const hasActivity = actions.length > 0 || flows.length > 0 || decisions.length > 0 || states.length > 0 || - body.includes('first') || body.includes('then') || body.includes('done'); - - if (hasActivity) { - diagrams.push({ - name: element.name, - range: element.range, - actions, - flows, - decisions, - states - }); - } - } - } - - // Recursively check children - if (element.children) { - element.children.forEach(extractFromElement); - } - }; - - elements.forEach(extractFromElement); - return diagrams; - } - - /** - * Extracts activity elements using proper brace matching for nested structures. - * @param document The VS Code text document to extract from - * @returns Array of activity diagrams - */ - private extractActivityElements(document: vscode.TextDocument): ActivityDiagram[] { - const activities: ActivityDiagram[] = []; - const content = document.getText(); - - // console.log('Content length:', content.length); - // console.log('Looking for action patterns...'); - - // First, extract swimlane assignments from part elements with perform statements - const swimlaneAssignments = new Map(); - - // Pattern: part partName : PartType { ... perform actionPath.actionName ... } - const partPattern = /part\s+(\w+)\s*(?::\s*\w+)?\s*\{/gi; - let partMatch; - while ((partMatch = partPattern.exec(content)) !== null) { - const partName = partMatch[1]; - const partBodyStart = partMatch.index + partMatch[0].length; - const partBody = this.extractBalancedBraces(content, partBodyStart - 1); - - if (partBody) { - // Look for perform statements in this part - const performPattern = /perform\s+(?:action\s+)?([a-zA-Z_][\w.]*)/g; - let performMatch; - while ((performMatch = performPattern.exec(partBody)) !== null) { - const performedAction = performMatch[1]; - // Extract just the action name (last part after dot) - const actionName = performedAction.includes('.') - ? performedAction.split('.').pop() ?? performedAction - : performedAction; - - if (actionName && partName) { - swimlaneAssignments.set(actionName, partName); - // console.log(`[Swimlane Fallback] Action '${actionName}' assigned to lane '${partName}'`); - } - } - } - } - // console.log(`[Swimlane Fallback] Total swimlane assignments: ${swimlaneAssignments.size}`); - - // Patterns to match both action definitions (action def) and action usages (action) - const actionDefPattern = /action\s+def\s+(\w+)(?:\s*:\s*([^{]+))?\s*\{/gi; - const actionUsagePattern = /action\s+(\w+)(?:\s*:\s*([^{]+))?\s*\{/gi; - - // console.log('Looking for action def patterns (main activities)...'); - - let match; - - // First, find action definitions - while ((match = actionDefPattern.exec(content)) !== null) { - const [, name] = match; - const actionStart = match.index; - const bodyStart = match.index + match[0].length; - - // console.log(`Found action ${matchCount}: '${name}' at position ${actionStart}`); - - // Find matching closing brace using proper brace counting - const body = this.extractBalancedBraces(content, bodyStart - 1); - if (!body) { - // console.log(`Skipping action '${name}' - no balanced braces found`); - continue; - } - - // console.log(`Action '${name}' body length: ${body.length}`); - // console.log(`Action '${name}' body preview: ${body.slice(0, 100)}...`); - - const actionEnd = bodyStart + body.length + 1; // +1 for the closing brace - const startPos = document.positionAt(actionStart); - const endPos = document.positionAt(actionEnd); - - // Parse activity body for flows and nodes - const { actions, flows, decisions, states } = this.parseActivityBody(body, document, bodyStart); - - // Apply swimlane assignments to actions - actions.forEach(action => { - const lane = swimlaneAssignments.get(action.name); - if (lane) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (action as any).lane = lane; - // console.log(`[Swimlane Fallback] Applied lane '${lane}' to action '${action.name}'`); - } - }); - - // console.log(`Action '${name}' elements: actions=${actions.length}, flows=${flows.length}, decisions=${decisions.length}, states=${states.length}`); - - // More lenient criteria for activity diagrams - const hasActivity = actions.length > 0 || flows.length > 0 || decisions.length > 0 || states.length > 0 || - body.includes('first') || body.includes('then') || body.includes('done') || - body.includes('if ') || body.includes('while ') || body.includes('action '); - - if (hasActivity) { - activities.push({ - name: name, - actions, - flows, - decisions, - states, - range: new vscode.Range(startPos, endPos) - }); - // console.log(`✓ Added activity diagram: ${name}`); - } else { - // console.log(`✗ Skipped action '${name}' - no activity characteristics`); - } - } - - // console.log('Looking for action usage patterns...'); - - // Reset regex for action usages - actionUsagePattern.lastIndex = 0; - - // Now find action usages (but avoid duplicating action defs) - while ((match = actionUsagePattern.exec(content)) !== null) { - const [fullMatch, name] = match; - - // Skip if this is actually an action def (already processed) - if (fullMatch.includes('action def')) { - continue; - } - - const actionStart = match.index; - const bodyStart = match.index + match[0].length; - - // console.log(`Found action usage ${matchCount}: '${name}' at position ${actionStart}`); - - // Find matching closing brace using proper brace counting - const body = this.extractBalancedBraces(content, bodyStart - 1); - if (!body) { - // console.log(`Skipping action '${name}' - no balanced braces found`); - continue; - } - - // console.log(`Action '${name}' body length: ${body.length}`); - // console.log(`Action '${name}' body preview: ${body.slice(0, 100)}...`); - - const actionEnd = bodyStart + body.length + 1; // +1 for the closing brace - const startPos = document.positionAt(actionStart); - const endPos = document.positionAt(actionEnd); - - // Parse activity body for flows and nodes - const { actions, flows, decisions, states } = this.parseActivityBody(body, document, bodyStart); - - // Apply swimlane assignments to actions - actions.forEach(action => { - const lane = swimlaneAssignments.get(action.name); - if (lane) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - (action as any).lane = lane; - // console.log(`[Swimlane Fallback] Applied lane '${lane}' to action '${action.name}'`); - } - }); - - // console.log(`Action '${name}' elements: actions=${actions.length}, flows=${flows.length}, decisions=${decisions.length}, states=${states.length}`); - - // Stricter criteria for activity diagrams - must have real activity content - const hasActivity = actions.length > 0 || flows.length > 0 || decisions.length > 0 || states.length > 0 || - /\d+\.\s/.test(body) || // numbered steps like "1. Start process" - body.includes('then ') || body.includes('next ') || // explicit flow keywords - body.includes('if (') || body.includes('while (') || // control structures - body.includes('first ') || body.includes('done'); - - if (hasActivity) { - activities.push({ - name: name, // No suffix for usage - actions, - flows, - decisions, - states, - range: new vscode.Range(startPos, endPos) - }); - // console.log(`✓ Added activity diagram: ${name}`); - } else { - // console.log(`✗ Skipped action '${name}' - no activity characteristics`); - } - } - - // console.log(`Total actions processed: ${matchCount}`); - // console.log(`Total activity diagrams found: ${activities.length}`); - return activities; - } - - /** - * Extracts balanced braces content from the given position. - * @param content The full text content - * @param startPos The position of the opening brace - * @returns The content between matching braces, or null if unmatched - */ - private extractBalancedBraces(content: string, startPos: number): string | null { - if (content[startPos] !== '{') return null; - - let braceCount = 1; - let i = startPos + 1; - - while (i < content.length && braceCount > 0) { - const char = content[i]; - if (char === '{') { - braceCount++; - } else if (char === '}') { - braceCount--; - } - // Skip string literals to avoid counting braces within strings - else if (char === '"' || char === "'") { - const quote = char; - i++; // Skip opening quote - while (i < content.length && content[i] !== quote) { - if (content[i] === '\\') i++; // Skip escaped characters - i++; - } - } - i++; - } - - if (braceCount === 0) { - return content.slice(startPos + 1, i - 1); - } - - return null; - } - - /** - * Parses the body of an action to extract activity elements. - * @param body The action body text to parse - * @param document The VS Code text document for position calculation - * @param baseOffset The offset where the body starts - */ - private parseActivityBody(body: string, document: vscode.TextDocument, baseOffset: number): { - actions: ActivityAction[], - flows: ControlFlow[], - decisions: DecisionNode[], - states: ActivityState[] - } { - const actions: ActivityAction[] = []; - const flows: ControlFlow[] = []; - const decisions: DecisionNode[] = []; - const states: ActivityState[] = []; - const mergeNodes: Set = new Set(); - - if (DEBUG_ACTIVITY_PARSING) console.log('Parsing activity body (enhanced SysML v2 parsing)...'); - if (DEBUG_ACTIVITY_PARSING) console.log('Body preview:', body.substring(0, 200)); - - // Track all declared actions and nodes for flow resolution - const declaredNodes: Map = new Map(); - - // First pass: Extract all action declarations, tracking parent-child relationships - // We need to identify container actions (with braces) and their nested children - const containerActionsWithChildren: Map = new Map(); - - // Pattern to find container actions with nested actions - // Matches: action name { ... action childName ... } - const containerPattern = /(?:then\s+)?action\s+(?:'([^']+)'|(\w+))(?:\s*:\s*[^{;\n]*)?\s*\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/gm; - let containerMatch; - while ((containerMatch = containerPattern.exec(body)) !== null) { - const containerName = containerMatch[1] || containerMatch[2]; - const containerBody = containerMatch[3]; - if (containerName && containerBody) { - // Find nested action declarations within this container - const nestedPattern = /action\s+(?:'([^']+)'|(\w+))/g; - let nestedMatch; - const children: string[] = []; - while ((nestedMatch = nestedPattern.exec(containerBody)) !== null) { - const childName = nestedMatch[1] || nestedMatch[2]; - if (childName && childName !== 'def') { - children.push(childName); - } - } - if (children.length > 0) { - containerActionsWithChildren.set(containerName, children); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Found container action "${containerName}" with children: ${children.join(', ')}`); - } - } - } - - // Build set of all nested action names (to exclude from top-level) - const nestedActionNames = new Set(); - containerActionsWithChildren.forEach(children => { - children.forEach(child => nestedActionNames.add(child)); - }); - - // Second sub-pass: Extract all action declarations (including quoted names) - // But mark nested actions appropriately - const actionDeclPattern = /(?:^|\n)\s*(?:then\s+)?action\s+(?:'([^']+)'|(\w+))(?:\s*:\s*[^{;\n]*)?(?:\s*[{;])?/gm; - let match; - while ((match = actionDeclPattern.exec(body)) !== null) { - const actionName = match[1] || match[2]; // quoted name or regular name - if (actionName && actionName !== 'def' && !declaredNodes.has(actionName)) { - const startPos = document.positionAt(baseOffset + match.index); - const endPos = document.positionAt(baseOffset + match.index + match[0].length); - const range = new vscode.Range(startPos, endPos); - - declaredNodes.set(actionName, { type: 'action', range }); - - // Find parent if this is a nested action - let parentAction: string | undefined; - containerActionsWithChildren.forEach((children, parent) => { - if (children.includes(actionName)) { - parentAction = parent; - } - }); - - // Check if this is a container action - const childActions = containerActionsWithChildren.get(actionName); - - actions.push({ - name: actionName, - type: 'action', - range, - isDefinition: false, - parent: parentAction, - children: childActions - }); - if (DEBUG_ACTIVITY_PARSING) { - if (parentAction) { - console.log(` → Found nested action declaration: "${actionName}" (parent: ${parentAction})`); - } else if (childActions) { - console.log(` → Found container action declaration: "${actionName}" with ${childActions.length} children`); - } else { - console.log(` → Found action declaration: "${actionName}"`); - } - } - } - } - - // Second pass: Find control flow constructs - const lines = body.split('\n'); - let currentOffset = baseOffset; - let previousNode: string | null = null; - let currentDecision: DecisionNode | null = null; - let _afterDecide = false; - // Track current fork context - when inside a fork, all subsequent "then" statements - // should flow FROM the fork until we hit a "first X then Y" pattern or another fork/join - let currentForkContext: string | null = null; - - for (const line of lines) { - const trimmed = line.trim(); - if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*')) { - currentOffset += line.length + 1; - continue; - } - - const lineStartPos = document.positionAt(currentOffset); - const lineEndPos = document.positionAt(currentOffset + line.length); - const range = new vscode.Range(lineStartPos, lineEndPos); - - if (DEBUG_ACTIVITY_PARSING) console.log(`Processing line: "${trimmed}"`); - - // Match "first start;" - initial node - const firstStartMatch = trimmed.match(/^first\s+(start|(\w+))\s*;?\s*$/i); - if (firstStartMatch) { - const targetName = firstStartMatch[1]; - if (!declaredNodes.has('start')) { - declaredNodes.set('start', { type: 'initial', range }); - actions.push({ - name: 'start', - type: 'initial', - kind: 'initial', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added initial node: start`); - } - previousNode = targetName.toLowerCase() === 'start' ? 'start' : targetName; - currentOffset += line.length + 1; - continue; - } - - // Match "fork forkName;" - fork node declaration (standalone, sets context for following then statements) - const forkDeclMatch = trimmed.match(/^fork\s+(\w+)\s*;?\s*$/i); - if (forkDeclMatch) { - const forkName = forkDeclMatch[1]; - if (!declaredNodes.has(forkName)) { - declaredNodes.set(forkName, { type: 'fork', range }); - actions.push({ - name: forkName, - type: 'fork', - kind: 'fork', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added fork node: ${forkName}`); - } - // Set fork context so subsequent "then X;" statements flow from this fork - currentForkContext = forkName; - previousNode = forkName; - currentOffset += line.length + 1; - continue; - } - - // Match "join joinName;" - join node declaration - const joinDeclMatch = trimmed.match(/^join\s+(\w+)\s*;?\s*$/i); - if (joinDeclMatch) { - const joinName = joinDeclMatch[1]; - if (!declaredNodes.has(joinName)) { - declaredNodes.set(joinName, { type: 'join', range }); - actions.push({ - name: joinName, - type: 'join', - kind: 'join', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added join node: ${joinName}`); - } - currentOffset += line.length + 1; - continue; - } - - // Match "then fork forkName;" - flow to fork - const thenForkMatch = trimmed.match(/^then\s+fork\s+(\w+)\s*;?\s*$/i); - if (thenForkMatch) { - const forkName = thenForkMatch[1]; - // Ensure fork exists - if (!declaredNodes.has(forkName)) { - declaredNodes.set(forkName, { type: 'fork', range }); - actions.push({ - name: forkName, - type: 'fork', - kind: 'fork', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added fork node (from then): ${forkName}`); - } - if (previousNode) { - flows.push({ - from: previousNode, - to: forkName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow to fork: ${previousNode} → ${forkName}`); - } - // Set fork context so subsequent "then X;" statements flow from this fork - currentForkContext = forkName; - previousNode = forkName; - currentOffset += line.length + 1; - continue; - } - - // Match "then join joinName;" - flow to join (not typically used, but support it) - const thenJoinMatch = trimmed.match(/^then\s+join\s+(\w+)\s*;?\s*$/i); - if (thenJoinMatch) { - const joinName = thenJoinMatch[1]; - // Ensure join exists - if (!declaredNodes.has(joinName)) { - declaredNodes.set(joinName, { type: 'join', range }); - actions.push({ - name: joinName, - type: 'join', - kind: 'join', - range - }); - } - if (previousNode) { - flows.push({ - from: previousNode, - to: joinName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow to join: ${previousNode} → ${joinName}`); - } - previousNode = joinName; - currentOffset += line.length + 1; - continue; - } - - // Match "first source then target;" - explicit flow from source to target - const firstThenMatch = trimmed.match(/^first\s+(\w+)\s+then\s+(\w+)\s*;?\s*$/i); - if (firstThenMatch) { - const sourceName = firstThenMatch[1]; - const targetName = firstThenMatch[2]; - - // Handle special case for 'done' as target - add final node if not exists - if (targetName.toLowerCase() === 'done' && !declaredNodes.has('done')) { - declaredNodes.set('done', { type: 'final', range }); - actions.push({ - name: 'done', - type: 'final', - kind: 'final', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added final node: done (from first X then done)`); - } - - flows.push({ - from: sourceName, - to: targetName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created explicit flow: ${sourceName} → ${targetName}`); - // Clear fork context since this is an explicit flow specification - currentForkContext = null; - previousNode = targetName; - currentOffset += line.length + 1; - continue; - } - - // Match "then action name { ... }" or "then action name;" or "then action name {" - // Updated to handle multi-line action bodies (opening brace without closing on same line) - // When in fork context, flow from the fork; otherwise flow from previousNode - const thenActionMatch = trimmed.match(/^then\s+action\s+(?:'([^']+)'|(\w+))(?:\s*\{[^}]*\}|\s*\{|\s*;)?\s*$/i); - if (thenActionMatch) { - const actionName = thenActionMatch[1] || thenActionMatch[2]; - _afterDecide = false; // Reset after non-decision flow - - // Determine source: use fork context if available, otherwise use previousNode - const sourceNode = currentForkContext || previousNode; - if (sourceNode && actionName) { - flows.push({ - from: sourceNode, - to: actionName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow: ${sourceNode} → ${actionName}${currentForkContext ? ' (from fork context)' : ''}`); - } - // Don't update previousNode if we're in fork context - if (!currentForkContext) { - previousNode = actionName; - } - currentOffset += line.length + 1; - continue; - } - - // Match "then decide;" - decision node - const thenDecideMatch = trimmed.match(/^then\s+decide\s*;?\s*$/i); - if (thenDecideMatch) { - const decisionName = `decision_${decisions.length + 1}`; - currentDecision = { - name: decisionName, - condition: 'decide', - branches: [], - range - }; - decisions.push(currentDecision); - declaredNodes.set(decisionName, { type: 'decision', range }); - - if (previousNode) { - flows.push({ - from: previousNode, - to: decisionName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow to decision: ${previousNode} → ${decisionName}`); - } - previousNode = decisionName; - _afterDecide = true; - currentOffset += line.length + 1; - continue; - } - - // Match "if condition then target;" - decision branch - const ifThenMatch = trimmed.match(/^if\s+(.+?)\s+then\s+(?:'([^']+)'|(\w+))\s*;?\s*$/i); - if (ifThenMatch && currentDecision) { - const condition = ifThenMatch[1]; - const targetName = ifThenMatch[2] || ifThenMatch[3]; - - currentDecision.branches.push({ - condition: condition, - target: targetName - }); - - // Create flow from decision to target - flows.push({ - from: currentDecision.name, - to: targetName, - condition: condition, - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added decision branch: ${currentDecision.name} → ${targetName} [${condition}]`); - currentOffset += line.length + 1; - continue; - } - - // Match "merge name;" - merge node - const mergeMatch = trimmed.match(/^merge\s+(\w+)\s*;?\s*$/i); - if (mergeMatch) { - const mergeName = mergeMatch[1]; - mergeNodes.add(mergeName); - if (!declaredNodes.has(mergeName)) { - declaredNodes.set(mergeName, { type: 'merge', range }); - // Add merge as a special action node - actions.push({ - name: mergeName, - type: 'merge', - kind: 'merge', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added merge node: ${mergeName}`); - } - previousNode = mergeName; - _afterDecide = false; - currentOffset += line.length + 1; - continue; - } - - // Match "then done;" - final node - const thenDoneMatch = trimmed.match(/^then\s+done\s*;?\s*$/i); - if (thenDoneMatch) { - if (!declaredNodes.has('done')) { - declaredNodes.set('done', { type: 'final', range }); - actions.push({ - name: 'done', - type: 'final', - kind: 'final', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Added final node: done`); - } - - if (previousNode) { - flows.push({ - from: previousNode, - to: 'done', - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow to done: ${previousNode} → done`); - } - previousNode = 'done'; - currentOffset += line.length + 1; - continue; - } - - // Match standalone "action 'Name'; then target;" or "action 'Name';" - // This handles: action 'Switch to standard mode'; then endOfStatusCheck; - const actionThenMatch = trimmed.match(/^action\s+(?:'([^']+)'|(\w+))\s*;\s*then\s+(\w+)\s*;?\s*$/i); - if (actionThenMatch) { - const actionName = actionThenMatch[1] || actionThenMatch[2]; - const targetName = actionThenMatch[3]; - - // Create flow from action to target (which is likely a merge) - flows.push({ - from: actionName, - to: targetName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow from action: ${actionName} → ${targetName}`); - currentOffset += line.length + 1; - continue; - } - - // Match "then targetName;" - simple flow to existing node - // When in fork context, flow from the fork; otherwise flow from previousNode - const thenTargetMatch = trimmed.match(/^then\s+(\w+)\s*;?\s*$/i); - if (thenTargetMatch) { - const targetName = thenTargetMatch[1]; - if (targetName !== 'decide' && targetName !== 'done') { - // Determine source: use fork context if available, otherwise use previousNode - const sourceNode = currentForkContext || previousNode; - if (sourceNode) { - flows.push({ - from: sourceNode, - to: targetName, - condition: '', - range - }); - if (DEBUG_ACTIVITY_PARSING) console.log(` → Created flow: ${sourceNode} → ${targetName}${currentForkContext ? ' (from fork context)' : ''}`); - } - // Don't update previousNode if we're in fork context - keep it pointing to the fork - // so that all parallel branches come from the same fork - if (!currentForkContext) { - previousNode = targetName; - } - } - _afterDecide = false; - currentOffset += line.length + 1; - continue; - } - - // Match standalone action declarations: action 'Name' { ... } or action name; - // This sets previousNode so subsequent 'then target;' lines can create flows - const standaloneActionMatch = trimmed.match(/^action\s+(?:'([^']+)'|(\w+))(?:\s*\{[^}]*\})?\s*;?\s*$/i); - if (standaloneActionMatch) { - const actionName = standaloneActionMatch[1] || standaloneActionMatch[2]; - // Set previousNode so the next 'then target;' creates a flow from this action - previousNode = actionName; - if (DEBUG_ACTIVITY_PARSING) console.log(` → Standalone action, set previousNode: ${actionName}`); - currentOffset += line.length + 1; - continue; - } - - currentOffset += line.length + 1; - } - - if (DEBUG_ACTIVITY_PARSING) console.log(`Activity body parsed (enhanced): ${actions.length} actions, ${flows.length} flows, ${decisions.length} decisions, ${mergeNodes.size} merges`); - return { actions, flows, decisions, states }; - } - - private parseActivityBodyLegacy(body: string, document: vscode.TextDocument, baseOffset: number): { - actions: ActivityAction[], - flows: ControlFlow[], - decisions: DecisionNode[], - states: ActivityState[] - } { - const actions: ActivityAction[] = []; - const flows: ControlFlow[] = []; - const decisions: DecisionNode[] = []; - const states: ActivityState[] = []; - - if (DEBUG_ACTIVITY_PARSING) console.log('Parsing activity body (legacy)...'); - - // First, do a comprehensive scan for all action declarations in the body - const actionPattern = /(?:^|\s)((?:private\s+)?action\s+(\w+)(?:\s*:\s*([^{]+))?\s*{)/gm; - let actionMatch; - - while ((actionMatch = actionPattern.exec(body)) !== null) { - const fullMatch = actionMatch[1]; - const actionName = actionMatch[2]; - const actionType = actionMatch[3] || 'action'; - const isPrivate = fullMatch.includes('private'); - - const actionStartInBody = actionMatch.index; - const actionStartAbsolute = baseOffset + actionStartInBody; - const actionEndAbsolute = actionStartAbsolute + fullMatch.length; - - const startPos = document.positionAt(actionStartAbsolute); - const endPos = document.positionAt(actionEndAbsolute); - const range = new vscode.Range(startPos, endPos); - - // Check if this is a decision action - const isDecisionAction = actionType.includes('DecisionAction'); - - if (isDecisionAction) { - decisions.push({ - name: actionName, - condition: actionType, - branches: [], - range - }); - } else { - actions.push({ - name: actionName, - type: 'action', - condition: `${isPrivate ? 'private' : 'public'} ${actionType}`, - range, - isDefinition: false - }); - } - } - - // Also scan for flows in the entire body - const flowPattern = /first\s+(\w+)\s+then\s+(\w+)\s*;?/gi; - let flowMatch; - // console.log('Scanning for flows in body...'); - - while ((flowMatch = flowPattern.exec(body)) !== null) { - const fromAction = flowMatch[1]; - const toAction = flowMatch[2]; - - // console.log(`Found flow in body scan: ${fromAction} -> ${toAction}`); - - const flowStartInBody = flowMatch.index; - const flowStartAbsolute = baseOffset + flowStartInBody; - const flowEndAbsolute = flowStartAbsolute + flowMatch[0].length; - - const startPos = document.positionAt(flowStartAbsolute); - const endPos = document.positionAt(flowEndAbsolute); - const range = new vscode.Range(startPos, endPos); - - // Check if the fromAction is a decision action to create branches - const fromDecision = decisions.find(d => d.name === fromAction); - if (fromDecision) { - // This is a decision branch - fromDecision.branches.push({ - condition: `branch to ${toAction}`, - target: toAction - }); - // console.log(` -> Added as decision branch: ${fromAction} -> ${toAction}`); - } else { - // Regular flow - check if it already exists to avoid duplicates - const existingFlow = flows.find(f => f.from === fromAction && f.to === toAction); - if (!existingFlow) { - flows.push({ - from: fromAction, - to: toAction, - condition: '', - range - }); - // console.log(` -> Added as regular flow: ${fromAction} -> ${toAction}`); - } - } - } - - const lines = body.split('\n'); - let currentOffset = baseOffset; - let previousAction: string | null = null; - - - - for (const line of lines) { - const trimmed = line.trim(); - if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*')) { - currentOffset += line.length + 1; - continue; - } - - const lineStartPos = document.positionAt(currentOffset); - const lineEndPos = document.positionAt(currentOffset + line.length); - const range = new vscode.Range(lineStartPos, lineEndPos); - - // console.log(`Processing line: "${trimmed}"`); - - // Match sequential steps (numbered steps like "1. Initialize") - const stepMatch = trimmed.match(/^\d+\.\s*(.+)$/); - if (stepMatch) { - const actionName = `Step ${stepMatch[1]}`; - actions.push({ - name: actionName, - type: 'action', - condition: stepMatch[1], - range - }); - previousAction = actionName; - // console.log(` → Found step: ${actionName}`); - } - - // PRIORITY: Match flow keywords FIRST (first, then, next, done) - const flowKeywordMatch = trimmed.match(/^(first|then|next|done)(?:\s+(.+))?$/i); - if (flowKeywordMatch) { - const keyword = flowKeywordMatch[1].toLowerCase(); - const target = flowKeywordMatch[2] || keyword; - - - if (keyword === 'first') { - const actionName = 'Start'; - actions.push({ - name: actionName, - type: 'action', - condition: target || 'Start action', - range - }); - previousAction = actionName; - } else if ((keyword === 'then' || keyword === 'next') && target) { - // Create flow to target (don't create new action - flow to existing or named target) - // console.log(` → Flow processing: previousAction="${previousAction}", target="${target}"`); - if (previousAction) { - flows.push({ - from: previousAction, - to: target, - condition: '', - range - }); - // console.log(` → Created flow: ${previousAction} → ${target}`); - } else { - // console.log(` → No previousAction to create flow from`); - } - // Update previousAction to the target so subsequent flows can chain - previousAction = target; - } else if (keyword === 'done') { - const actionName = 'End'; - actions.push({ - name: actionName, - type: 'action', - condition: 'End action', - range - }); - - if (previousAction) { - flows.push({ - from: previousAction, - to: actionName, - condition: '', - range - }); - } - previousAction = actionName; - } - // console.log(` → Found flow keyword: ${keyword} → ${target}`); - } - // Match nested actions (then action name { ... }) - but only if not already matched as flow keyword - else if (!flowKeywordMatch) { - const nestedActionMatch = trimmed.match(/^then\s+action\s+(\w+)\s*\{?(.*)$/i); - if (nestedActionMatch) { - const actionName = nestedActionMatch[1]; - actions.push({ - name: actionName, - type: 'action', - condition: nestedActionMatch[2] || actionName, - range - }); - - // Create flow from previous action - if (previousAction) { - flows.push({ - from: previousAction, - to: actionName, - condition: '', - range - }); - } - previousAction = actionName; - // console.log(` → Found nested action: ${actionName}`); - } - - // Match private action declarations (private action ActionName { ... }) - // Also match regular action declarations within action def - const privateActionMatch = trimmed.match(/^(?:(private)\s+)?action\s+(\w+)\s*(?::\s*([^{]+))?\s*\{?/i); - if (privateActionMatch) { - const visibility = privateActionMatch[1] || 'public'; - const actionName = privateActionMatch[2]; - const actionType = privateActionMatch[3] || 'action'; - - // Check if this is a decision action - const isDecisionAction = actionType.includes('DecisionAction'); - - if (isDecisionAction) { - // Create decision node for DecisionAction types - decisions.push({ - name: actionName, - condition: actionType, - branches: [], // Will be populated by flow parsing - range - }); - } else { - actions.push({ - name: actionName, - type: 'action', - condition: `${visibility} ${actionType}`, - range, - isDefinition: false // This is an action within an action def - }); - } - } - - // Match explicit flow connections (first ActionA then ActionB;) - // Make the pattern more flexible to handle various spacing - const explicitFlowMatch = trimmed.match(/^first\s+(\w+)\s+then\s+(\w+)\s*;?\s*$/i); - if (explicitFlowMatch) { - const fromAction = explicitFlowMatch[1]; - const toAction = explicitFlowMatch[2]; - - // console.log(`Found flow: ${fromAction} → ${toAction}`); - - // Check if the fromAction is a decision action to create branches - const fromDecision = decisions.find(d => d.name === fromAction); - if (fromDecision) { - // This is a decision branch - fromDecision.branches.push({ - condition: `branch to ${toAction}`, - target: toAction - }); - // console.log(` → Added decision branch: ${fromAction} → ${toAction}`); - } else { - // Regular flow - flows.push({ - from: fromAction, - to: toAction, - condition: '', - range - }); - // console.log(` → Added regular flow: ${fromAction} → ${toAction}`); - } - } - - // Match action definitions with inputs/outputs - const actionDefMatch = trimmed.match(/^action\s+(\w+)\s*:\s*(\w+)\s*(?:\{(.*))?$/i); - if (actionDefMatch) { - const actionName = actionDefMatch[1]; - const actionType = actionDefMatch[2]; - actions.push({ - name: actionName, - type: 'action', - condition: `${actionName} : ${actionType}`, - range - }); - - if (previousAction) { - flows.push({ - from: previousAction, - to: actionName, - condition: '', - range - }); - } - previousAction = actionName; - // console.log(` → Found typed action: ${actionName} : ${actionType}`); - } - - // Match input/output parameters - const paramMatch = trimmed.match(/^(in|out)\s+(\w+)\s*:\s*(.+)$/i); - if (paramMatch && actions.length > 0) { - const direction = paramMatch[1].toLowerCase(); - const paramName = paramMatch[2]; - const paramType = paramMatch[3]; - - const currentAction = actions[actions.length - 1]; - if (direction === 'in') { - currentAction.inputs = currentAction.inputs || []; - currentAction.inputs.push(`${paramName}: ${paramType}`); - } else { - currentAction.outputs = currentAction.outputs || []; - currentAction.outputs.push(`${paramName}: ${paramType}`); - } - // console.log(` → Found parameter: ${direction} ${paramName}: ${paramType}`); - } - } - - // Match conditional logic (if statements) - const conditionMatch = trimmed.match(/^if\s*\(([^)]+)\)\s*(.*)$/i); - if (conditionMatch) { - const decisionName = `Decision${decisions.length + 1}`; - decisions.push({ - name: decisionName, - condition: conditionMatch[1], - branches: [ - { condition: 'true', target: conditionMatch[2] || 'continue' }, - { condition: 'false', target: 'skip' } - ], - range - }); - - if (previousAction) { - flows.push({ - from: previousAction, - to: decisionName, - condition: '', - range - }); - } - previousAction = decisionName; - // console.log(` → Found decision: ${decisionName} (${conditionMatch[1]})`); - } - - // Match loops (while, for statements) - const loopMatch = trimmed.match(/^(while|for|repeat)\s*\(([^)]+)\)\s*(.*)$/i); - if (loopMatch) { - const stateName = `Loop${states.length + 1}`; - states.push({ - name: stateName, - type: 'intermediate', - doActivity: `${loopMatch[1]}(${loopMatch[2]}) ${loopMatch[3] || ''}`.trim(), - range - }); - - if (previousAction) { - flows.push({ - from: previousAction, - to: stateName, - condition: '', - range - }); - } - previousAction = stateName; - // console.log(` → Found loop: ${stateName}`); - } - - // Match simple action calls (perform, do) - const actionCallMatch = trimmed.match(/^(perform|do)\s+(.+)$/i); - if (actionCallMatch) { - const actionName = actionCallMatch[2]; - actions.push({ - name: actionName, - type: 'action', - condition: `${actionCallMatch[1]} ${actionName}`, - range - }); - - if (previousAction) { - flows.push({ - from: previousAction, - to: actionName, - condition: '', - range - }); - } - previousAction = actionName; - // console.log(` → Found action call: ${actionName}`); - } - - // Match composite action declarations (action name : Type;) - const compositeActionMatch = trimmed.match(/^action\s+(\w+)\s*:\s*(\w+)\s*;?\s*$/i); - if (compositeActionMatch) { - const actionName = compositeActionMatch[1]; - const actionType = compositeActionMatch[2]; - actions.push({ - name: actionName, - type: 'composite', - condition: `${actionName} : ${actionType}`, - range - }); - // console.log(` → Found composite action: ${actionName} : ${actionType}`); - } - - currentOffset += line.length + 1; // +1 for newline - } - - // console.log(`Activity body parsed: ${actions.length} actions, ${flows.length} flows, ${decisions.length} decisions, ${states.length} states`); - return { actions, flows, decisions, states }; - } - - /** - * Finds a specific element by name. - * @param name The name of the element to find - * @returns The SysML element if found, undefined otherwise - */ - findElement(name: string): SysMLElement | undefined { - return this.elements.get(name); - } - - /** - * Finds the most specific SysML element at the given position in the document. - * @param document The VS Code text document - * @param position The position to search at - * @returns The SysML element at the position, or null if none found - */ - findElementAtPosition(document: vscode.TextDocument, position: vscode.Position): SysMLElement | null { - for (const element of this.elements.values()) { - if (element.range.contains(position)) { - for (const child of this.findChildAtPosition(element.children, position)) { - return child; - } - return element; - } - } - return null; - } - - private *findChildAtPosition(children: SysMLElement[], position: vscode.Position): Generator { - for (const child of children) { - if (child.range.contains(position)) { - yield* this.findChildAtPosition(child.children, position); - yield child; - } - } - } - - /** - * Checks if an action element has sequential flow (first/then/done patterns) - */ - private hasSequentialFlow(element: SysMLElement): boolean { - // Check if action contains sequential keywords in its name or attributes - const actionText = `${element.name ?? ''} ${Array.from(element.attributes.keys()).join(' ')}`; - const hasSequentialKeywords = actionText.includes('first') || actionText.includes('then'); - - // Check if any child elements contain sequential keywords - const hasSequentialChildren = element.children.some(child => { - const childName = child.name || ''; - return childName.includes('first') || - childName.includes('then') || - childName.includes('done') || - child.type === 'action'; // Child actions suggest a sequence - }); - - // Look for generic sequential patterns in element name - const elementName = (element.name || '').toLowerCase(); - const hasSequentialNames = elementName.includes('sequence') || - elementName.includes('flow') || - elementName.includes('step'); - - return hasSequentialKeywords || hasSequentialChildren || hasSequentialNames; - } - - /** - * Determines if an element (action or behavior) should be rendered sequentially. - */ - private isSequentialBehaviorElement(element: SysMLElement): boolean { - if (!element.type) { - return false; - } - const normalizedType = element.type.toLowerCase(); - const isAction = normalizedType === 'action' || normalizedType === 'action def'; - const isBehavior = normalizedType === 'behavior' || normalizedType === 'behavior def'; - return (isAction || isBehavior) && this.hasSequentialFlow(element); - } - - /** - * Extracts sequential behavior as participants and messages for sequence diagram - */ - private extractActionSequence(action: SysMLElement, participants: Participant[], messages: Message[]): void { - // Extract actors/subjects as participants - this.findActorsInAction(action, participants); - - // Extract sequential steps as messages - const occurrence = 1; - this.extractSequentialSteps(action, messages, occurrence, participants); - } - - private findActorsInAction(element: SysMLElement, participants: Participant[]): void { - // Recursively collect all potential participants from element structure - const collectParticipantsFromElement = (el: SysMLElement) => { - // Add actors - if (el.type === 'actor') { - if (!participants.find(p => p.name === el.name)) { - participants.push({ - name: el.name, - type: 'actor', - range: el.range - }); - } - } - - // Add parts as potential participants (components, systems, etc.) - if (el.type === 'part' || el.type === 'part def' || el.type === 'item' || el.type === 'item def') { - if (!participants.find(p => p.name === el.name)) { - participants.push({ - name: el.name, - type: 'component', - range: el.range - }); - } - } - - // Add ports as potential participants - if (el.type === 'port') { - if (!participants.find(p => p.name === el.name)) { - participants.push({ - name: el.name, - type: 'port', - range: el.range - }); - } - } - - // Recurse into children - for (const child of el.children) { - collectParticipantsFromElement(child); - } - }; - - // Collect from the current element and its children - collectParticipantsFromElement(element); - - // If no participants found, add generic system participant as fallback - if (participants.length === 0) { - participants.push({ - name: 'system', - type: 'system', - range: element.range - }); - } - } - - private extractSequentialSteps(element: SysMLElement, messages: Message[], occurrence: number, participants: Participant[]): number { - for (const child of element.children) { - if (child.type === 'action' || child.name.includes('action')) { - // Create message for this action step - const fromParticipant = this.inferFromParticipant(child, participants); - const toParticipant = this.inferToParticipant(child, participants); - - messages.push({ - name: child.name.replace('action ', ''), - from: fromParticipant, - to: toParticipant, - payload: this.extractActionDescription(child), - occurrence: occurrence++, - range: child.range - }); - } - - // Recurse into nested actions - occurrence = this.extractSequentialSteps(child, messages, occurrence, participants); - } - return occurrence; - } - - private inferFromParticipant(action: SysMLElement, participants: Participant[]): string { - const actionName = action.name.toLowerCase(); - - // Try to infer from action name by matching against participant names - for (const participant of participants) { - const participantName = participant.name.toLowerCase(); - // Check if action name contains participant name or vice versa - if (actionName.includes(participantName) || participantName.includes(actionName)) { - return participant.name; - } - } - - // Check for actor-type participants (users typically initiate actions) - const actorParticipant = participants.find(p => p.type === 'actor'); - if (actorParticipant) { - return actorParticipant.name; - } - - // Default to first participant or 'system' - return participants.length > 0 ? participants[0].name : 'system'; - } - - private inferToParticipant(action: SysMLElement, participants: Participant[]): string { - const actionName = action.name.toLowerCase(); - - // Try to infer target from action name by matching against participant names - for (const participant of participants) { - const participantName = participant.name.toLowerCase(); - // Skip if this is the same as the source participant - if (actionName.includes(participantName) || participantName.includes(actionName)) { - return participant.name; - } - } - - // Check for component or system participants (typically targets of actions) - const componentParticipant = participants.find(p => p.type === 'component' || p.type === 'part' || p.type === 'system'); - if (componentParticipant) { - return componentParticipant.name; - } - - // Default to second participant if available, otherwise 'system' - return participants.length > 1 ? participants[1].name : 'system'; - } - - private extractActionDescription(action: SysMLElement): string { - // Extract meaningful description from action - const name = action.name.replace('action ', ''); - - // Look for documentation or comments - for (const [key, value] of action.attributes) { - if (key === 'doc' && typeof value === 'string') { - return value; - } - } - - return name; - } - - private addElementsToMap(elements: SysMLElement[], elementMap: Map) { - elements.forEach(element => { - if (element.name) { - elementMap.set(element.name, element); - } - if (element.children) { - this.addElementsToMap(element.children, elementMap); - } - }); - } - - // Phase 2: parseWithRegexFallback REMOVED (~300 lines) - Pure ANTLR parsing only - // This massive regex fallback method is no longer used - all parsing goes through ANTLR - - /** - * Parse relationships from text and associate them with elements - */ - /** - * Parse relationships from text and associate them with elements - */ - private parseRelationshipsFromText(text: string, elements: SysMLElement[]): void { - const lines = text.split('\n'); - let currentElement: SysMLElement | null = null; - - lines.forEach((line) => { - const trimmed = line.trim(); - - // Track which element we're currently inside - const elementMatch = trimmed.match(/^(?:(abstract|public|private)\s+)?(?:part|action|requirement|use case|state)\s+(?:def\s+)?(?:'([^']+)'|"([^"]+)"|([a-zA-Z_][a-zA-Z0-9_]*))(?:\s*:\s*>\s*([a-zA-Z_][a-zA-Z0-9_]*))?/); - if (elementMatch) { - const elementName = elementMatch[2] || elementMatch[3] || elementMatch[4]; - currentElement = this.findElementByName(elementName, elements); - - // Check for :> specialization in the element definition - if (elementMatch[5] && currentElement) { - const relationship: Relationship = { - type: 'specializes', - source: currentElement.name, - target: elementMatch[5] - }; - currentElement.relationships.push(relationship); - this.relationships.push(relationship); - } - return; - } - - // Parse attribute relationships within elements - if (currentElement) { - // Check for "subsets" relationships - const subsetsMatch = trimmed.match(/(?:attribute|part)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s+subsets\s+([a-zA-Z_][a-zA-Z0-9_]*)/); - if (subsetsMatch) { - const relationship: Relationship = { - type: 'subsets', - source: subsetsMatch[1], - target: subsetsMatch[2] - }; - currentElement.relationships.push(relationship); - this.relationships.push(relationship); - } - - // Check for "references" relationships - const referencesMatch = trimmed.match(/(?:attribute|part)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s+references\s+([a-zA-Z_][a-zA-Z0-9_]*)/); - if (referencesMatch) { - const relationship: Relationship = { - type: 'references', - source: referencesMatch[1], - target: referencesMatch[2] - }; - currentElement.relationships.push(relationship); - this.relationships.push(relationship); - } - } - }); - } - - - - /** - * Find an element by name in a nested structure - */ - private findElementByName(name: string, elements: SysMLElement[]): SysMLElement | null { - for (const element of elements) { - if (element.name === name) { - return element; - } - const found = this.findElementByName(name, element.children); - if (found) { - return found; - } - } - return null; - } - - /** - * Extracts complete structural view using ANTLR parser for full SysML v2.0 compliance. - * This is the primary view for SysML v2.0 files showing packages, parts, connections, requirements, etc. - * @param document The VS Code text document to parse - * @returns Comprehensive structural diagram with all SysML elements - */ - getStructuralDiagram(document: vscode.TextDocument): StructuralDiagram { - // console.log('=== Getting Structural Diagram with ANTLR ==='); - // console.log('Document:', document.uri?.fsPath || 'test document'); - - const antlr = this.getANTLRParser(); - if (!antlr) { - console.warn('ANTLR parser not available, returning empty structural diagram'); - return this.createEmptyStructuralDiagram(document); - } - - try { - // Parse the document using ANTLR for full structural compliance - const elements = antlr.parseDocument(document, false); // Don't include error elements - // console.log(`ANTLR parsed ${elements.length} top-level elements`); - - // Extract comprehensive structural data - return this.buildStructuralDiagram(elements, document); - - } catch (error) { - console.error('ANTLR structural parsing failed:', error); - return this.createEmptyStructuralDiagram(document); - } - } - - /** - * Builds a comprehensive structural diagram from ANTLR-parsed elements - */ - private buildStructuralDiagram(elements: SysMLElement[], document: vscode.TextDocument): StructuralDiagram { - const packages: StructuralPackage[] = []; - const parts: StructuralPart[] = []; - const connections: StructuralConnection[] = []; - const requirements: StructuralRequirement[] = []; - const attributes: StructuralAttribute[] = []; - const interfaces: StructuralInterface[] = []; - const relationships: StructuralRelationship[] = []; - const actions: StructuralAction[] = []; - const states: StructuralState[] = []; - const constraints: StructuralConstraint[] = []; - const actors: StructuralActor[] = []; - const useCases: StructuralUseCase[] = []; - const occurrences: StructuralOccurrence[] = []; - const enumerations: StructuralEnumeration[] = []; - - // Extract elements recursively - this.extractStructuralElements(elements, packages, parts, connections, requirements, attributes, interfaces, relationships, actions, states, constraints, actors, useCases, occurrences, enumerations); - - // Extract and associate transitions with states - this.extractTransitions(elements, states); - - // Determine diagram title from document name or first package - let title = 'SysML v2.0 Structural View'; - if (packages.length > 0) { - title = `${packages[0].name} - Structural View`; - } else if (document.uri) { - const fileName = document.uri.path.split('/').pop()?.replace('.sysml', '') || 'Model'; - title = `${fileName} - Structural View`; - } - - const fullRange = new vscode.Range(0, 0, document.lineCount - 1, 0); - - // Structural diagram stats (logging disabled for performance) - const _stats = { - packages: packages.length, - parts: parts.length, - connections: connections.length, - requirements: requirements.length, - attributes: attributes.length, - interfaces: interfaces.length, - actions: actions.length, - states: states.length, - constraints: constraints.length, - actors: actors.length, - useCases: useCases.length, - enumerations: enumerations.length, - relationships: relationships.length - }; - - return { - name: 'structural', - title, - packages, - parts, - connections, - requirements, - attributes, - interfaces, - relationships, - actions, - states, - constraints, - actors, - useCases, - occurrences, - enumerations, - range: fullRange - }; - } - - /** - * Recursively extracts structural elements from the ANTLR parse tree - */ - private extractStructuralElements( - elements: SysMLElement[], - packages: StructuralPackage[], - parts: StructuralPart[], - connections: StructuralConnection[], - requirements: StructuralRequirement[], - attributes: StructuralAttribute[], - interfaces: StructuralInterface[], - relationships: StructuralRelationship[], - actions: StructuralAction[], - states: StructuralState[], - constraints: StructuralConstraint[], - actors: StructuralActor[], - useCases: StructuralUseCase[], - occurrences: StructuralOccurrence[], - enumerations: StructuralEnumeration[] - ): void { - for (const element of elements) { - const visibility = this.getVisibility(element); - - switch (element.type) { - case 'package': { - // Create separate arrays for nested elements within this package - const nestedPackages: StructuralPackage[] = []; - const nestedParts: StructuralPart[] = []; - const nestedConnections: StructuralConnection[] = []; - const nestedRequirements: StructuralRequirement[] = []; - const nestedAttributes: StructuralAttribute[] = []; - const nestedInterfaces: StructuralInterface[] = []; - const nestedRelationships: StructuralRelationship[] = []; - const nestedActions: StructuralAction[] = []; - const nestedStates: StructuralState[] = []; - const nestedConstraints: StructuralConstraint[] = []; - const nestedActors: StructuralActor[] = []; - const nestedUseCases: StructuralUseCase[] = []; - const nestedOccurrences: StructuralOccurrence[] = []; - const nestedEnumerations: StructuralEnumeration[] = []; - - // Recursively process package contents into nested arrays - this.extractStructuralElements(element.children, nestedPackages, nestedParts, nestedConnections, nestedRequirements, nestedAttributes, nestedInterfaces, nestedRelationships, nestedActions, nestedStates, nestedConstraints, nestedActors, nestedUseCases, nestedOccurrences, nestedEnumerations); - - // Combine all nested elements as children (packages, parts, requirements are the main structural elements) - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const packageChildren: any[] = [...nestedPackages, ...nestedParts, ...nestedRequirements]; - - // Also add nested packages to the global packages array for backward compatibility - packages.push(...nestedPackages); - - packages.push({ - name: element.name, - type: 'package', - visibility, - documentation: element.attributes.get('documentation') as string, - children: packageChildren, - range: element.range - }); - break; - } - case 'part': - case 'part def': - case 'item': - case 'item def': { - const partAttributes: StructuralAttribute[] = []; - const partPorts: StructuralPort[] = []; - const partChildren: StructuralPart[] = []; - - // Extract attributes and nested parts - this.extractPartElements(element.children, partAttributes, partPorts, partChildren); - - parts.push({ - name: element.name, - type: element.type as 'part' | 'part def' | 'item' | 'item def', - partType: element.attributes.get('partType') as string, - multiplicity: element.attributes.get('multiplicity') as string, - visibility, - documentation: element.attributes.get('documentation') as string, - attributes: partAttributes, - ports: partPorts, - children: partChildren, - redefinitions: [], - range: element.range - }); - break; - } - case 'connection': - case 'binding': - case 'succession': - case 'allocation': { - connections.push({ - name: element.name, - type: element.type as 'connection' | 'binding' | 'succession' | 'allocation', - from: element.attributes.get('from') as string || '', - to: element.attributes.get('to') as string || '', - visibility, - range: element.range - }); - break; - } - case 'requirement': - case 'requirement def': - requirements.push({ - name: element.name, - type: element.type as 'requirement' | 'requirement def', - requirementType: element.attributes.get('requirementType') as string, - text: element.attributes.get('text') as string, - visibility, - satisfiedBy: this.extractSatisfiedBy(element), - range: element.range - }); - break; - - case 'attribute': - attributes.push({ - name: element.name, - type: 'attribute', - dataType: element.attributes.get('dataType') as string || 'String', - defaultValue: element.attributes.get('defaultValue') as string, - visibility, - range: element.range - }); - break; - - case 'interface': - case 'interface def': { - const interfacePorts: StructuralPort[] = []; - this.extractInterfacePorts(element.children, interfacePorts); - - interfaces.push({ - name: element.name, - type: element.type as 'interface' | 'interface def', - ports: interfacePorts, - visibility, - range: element.range - }); - break; - } - case 'action': - case 'action def': - actions.push({ - name: element.name, - type: element.type as 'action' | 'action def', - visibility, - documentation: element.attributes.get('documentation') as string, - inputs: [], - outputs: [], - subActions: [], - controlFlow: [], - range: element.range - }); - break; - - case 'state': - case 'state def': - states.push({ - name: element.name, - type: element.type as 'state' | 'state def', - visibility, - documentation: element.attributes.get('documentation') as string, - substates: [], - transitions: [], - range: element.range - }); - break; - - case 'constraint': - case 'constraint def': - constraints.push({ - name: element.name, - type: element.type as 'constraint' | 'constraint def', - visibility, - documentation: element.attributes.get('documentation') as string, - expression: element.attributes.get('expression') as string || '', - range: element.range - }); - break; - - case 'actor': - case 'actor def': - actors.push({ - name: element.name, - type: element.type as 'actor' | 'actor def', - visibility, - documentation: element.attributes.get('documentation') as string, - attributes: [], - actions: [], - range: element.range - }); - break; - - case 'use case': - case 'use case def': - useCases.push({ - name: element.name, - type: element.type as 'use case' | 'use case def', - visibility, - documentation: element.attributes.get('documentation') as string, - actors: [], - subject: element.attributes.get('subject') as string || '', - objective: element.attributes.get('objective') as string, - includes: [], - extends: [], - range: element.range - }); - break; - - case 'enumeration': - case 'enumeration def': { - // Extract enum literals from children - const literals: StructuralEnumerationLiteral[] = []; - if (element.children) { - for (const child of element.children) { - if (child.name && child.name !== 'unnamed') { - literals.push({ - name: child.name, - value: child.attributes instanceof Map - ? child.attributes.get('value') as string | undefined - : undefined, - range: child.range - }); - } - } - } - enumerations.push({ - name: element.name, - type: element.type as 'enumeration' | 'enumeration def', - visibility, - documentation: element.attributes.get('documentation') as string, - literals, - range: element.range - }); - break; - } - } - - // Extract relationships - for (const rel of element.relationships) { - if (['specialization', 'composition', 'aggregation', 'dependency', 'satisfy', 'verify'].includes(rel.type)) { - relationships.push({ - type: rel.type as 'specialization' | 'composition' | 'aggregation' | 'dependency' | 'satisfy' | 'verify', - from: rel.source, - to: rel.target, - range: element.range - }); - } - } - - // Recursively process children if not already handled - if (!['package', 'part', 'part def', 'item', 'item def'].includes(element.type)) { - this.extractStructuralElements(element.children, packages, parts, connections, requirements, attributes, interfaces, relationships, actions, states, constraints, actors, useCases, occurrences, enumerations); - } - } - } - - private extractPartElements(children: SysMLElement[], attributes: StructuralAttribute[], ports: StructuralPort[], parts: StructuralPart[]): void { - for (const child of children) { - const visibility = this.getVisibility(child); - - if (child.type === 'attribute') { - attributes.push({ - name: child.name, - type: 'attribute', - dataType: child.attributes.get('dataType') as string || 'String', - defaultValue: child.attributes.get('defaultValue') as string, - visibility, - range: child.range - }); - } else if (child.type === 'port') { - ports.push({ - name: child.name, - type: 'port', - direction: child.attributes.get('direction') as 'in' | 'out' | 'inout' || 'inout', - portType: child.attributes.get('portType') as string, - visibility, - range: child.range - }); - } else if (['part', 'part def', 'item', 'item def'].includes(child.type)) { - const nestedAttributes: StructuralAttribute[] = []; - const nestedPorts: StructuralPort[] = []; - const nestedParts: StructuralPart[] = []; - this.extractPartElements(child.children, nestedAttributes, nestedPorts, nestedParts); - - parts.push({ - name: child.name, - type: child.type as 'part' | 'part def' | 'item' | 'item def', - partType: child.attributes.get('partType') as string, - multiplicity: child.attributes.get('multiplicity') as string, - visibility, - documentation: child.attributes.get('documentation') as string, - attributes: nestedAttributes, - ports: nestedPorts, - children: nestedParts, - redefinitions: [], - range: child.range - }); - } - } - } - - private extractInterfacePorts(children: SysMLElement[], ports: StructuralPort[]): void { - for (const child of children) { - if (child.type === 'port') { - const visibility = this.getVisibility(child); - ports.push({ - name: child.name, - type: 'port', - direction: child.attributes.get('direction') as 'in' | 'out' | 'inout' || 'inout', - portType: child.attributes.get('portType') as string, - visibility, - range: child.range - }); - } - } - } - - private extractSatisfiedBy(element: SysMLElement): string[] { - const satisfiedBy: string[] = []; - for (const rel of element.relationships) { - if (rel.type === 'satisfy') { - satisfiedBy.push(rel.source); - } - } - return satisfiedBy; - } - - /** - * Recursively extracts transition elements and associates them with states - */ - private extractTransitions(elements: SysMLElement[], states: StructuralState[]): void { - let transitionCount = 0; - - for (const element of elements) { - if (element.type === 'transition') { - transitionCount++; - const fromState = element.attributes.get('from') as string; - const toState = element.attributes.get('to') as string; - const trigger = element.attributes.get('trigger') as string; - - if (fromState && toState) { - const transition: StructuralTransition = { - name: element.name, - from: fromState, - to: toState, - trigger, - range: element.range - }; - - // Find the parent state and add this transition - // Transitions can be associated with the "from" state - const parentState = states.find(s => s.name === fromState); - if (parentState) { - parentState.transitions = parentState.transitions || []; - parentState.transitions.push(transition); - // console.log(`[Transition Association] Added transition "${element.name}" to state "${fromState}"`); - } else { - // console.log(`[Transition Association] WARNING: Could not find parent state "${fromState}" for transition "${element.name}"`); - } - } - } - - // Recursively process children - if (element.children.length > 0) { - this.extractTransitions(element.children, states); - } - } - - if (transitionCount > 0) { - // console.log(`[Transition Extraction] Found ${transitionCount} transitions in total`); - } - } - - private getVisibility(element: SysMLElement): 'public' | 'private' | 'protected' { - const visibility = element.attributes.get('visibility') || element.attributes.get('modifier'); - if (visibility === 'private') return 'private'; - if (visibility === 'protected') return 'protected'; - return 'public'; - } - - private createEmptyStructuralDiagram(document: vscode.TextDocument): StructuralDiagram { - const fileName = document.uri?.path.split('/').pop()?.replace('.sysml', '') || 'Model'; - return { - name: 'structural', - title: `${fileName} - Structural View (Parser Error)`, - packages: [], - parts: [], - connections: [], - requirements: [], - attributes: [], - interfaces: [], - relationships: [], - actions: [], - states: [], - constraints: [], - actors: [], - useCases: [], - occurrences: [], - enumerations: [], - range: new vscode.Range(0, 0, 0, 0) - }; - } - - /** - * Enhance parsed elements with library type information - * This improves parser accuracy by validating against standard library - * Phase 3: Replaced with semantic resolver - kept for backward compatibility - */ - public enhanceWithLibraryInfo(elements: SysMLElement[]): SysMLElement[] { - try { - const library = LibraryService.getInstance(); - - if (!library) { - return elements; // Library not ready yet - } - - for (const element of elements) { - this.enhanceElement(element, library); - - // Recursively enhance children - if (element.children && element.children.length > 0) { - this.enhanceWithLibraryInfo(element.children); - } - } - - return elements; - } catch { - // Library not available, return elements without enhancement - return elements; - } - } - - /** - * Enhance a single element with library information - * Phase 3: Updated to use LibraryService instead of LibraryIndexer - */ - private enhanceElement(element: SysMLElement, library: LibraryService): void { - // Check if element type references a standard library element - const typeAttribute = element.attributes.get('type') as string; - - if (typeAttribute) { - const libraryElement = library.getSymbol(typeAttribute); - - if (libraryElement) { - // Mark as library-validated - element.attributes.set('isStandardType', true); - element.attributes.set('libraryKind', libraryElement.kind); - - // Get specialization chain for better type understanding - const chain = library.getSpecializationChain(typeAttribute); - if (chain.length > 1) { - element.attributes.set('specializationChain', chain.join(' :> ')); - } - } - } - - // Check if element name itself is a standard library element - const nameSymbol = library.getSymbol(element.name); - if (nameSymbol) { - element.attributes.set('isStandardElement', true); - } - - // For elements with specialization relationships, validate targets exist - for (const rel of element.relationships) { - if (rel.type === 'specializes' || rel.type === 'redefines' || rel.type === 'subsets') { - const targetSymbol = library.getSymbol(rel.target); - if (targetSymbol) { - element.attributes.set(`${rel.type}_validated`, true); - } - } - } - } - - /** - * Initialize library (called from extension activation) - * Phase 3: Replaced LibraryIndexer with LibraryService - */ - public static async initializeLibrary(): Promise { - // Library service initialization is handled by extension.ts - // This method kept for backward compatibility - const library = LibraryService.getInstance(); - - if (library) { - // console.log(`SysML Library service available`); - } - } - - /** - * Get library service instance for external use - * Phase 3: Return LibraryService instead of LibraryIndexer - */ - public getLibraryService(): LibraryService { - return LibraryService.getInstance(); - } -} - diff --git a/src/parser/vscodeMock.ts b/src/parser/vscodeMock.ts deleted file mode 100644 index 734ae82..0000000 --- a/src/parser/vscodeMock.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Minimal vscode module mock for the parser Worker thread. - * - * The ANTLRSysMLParser imports `vscode` only for `Position` and `Range`. - * This module provides lightweight clones that are serializable via the - * structured-clone algorithm used by `worker_threads.postMessage()`. - * - * On the main thread the `ParserWorkerHost` reconstructs real - * `vscode.Range` / `vscode.Position` instances from the plain objects. - */ - -export class Position { - constructor( - public readonly line: number, - public readonly character: number - ) {} -} - -export class Range { - public readonly start: Position; - public readonly end: Position; - - constructor(startLine: number, startCharacter: number, endLine: number, endCharacter: number); - constructor(start: Position, end: Position); - constructor( - a: number | Position, - b: number | Position, - c?: number, - d?: number - ) { - if (typeof a === 'number' && typeof b === 'number') { - this.start = new Position(a, b); - this.end = new Position(c ?? 0, d ?? 0); - } else { - this.start = a as Position; - this.end = b as Position; - } - } -} diff --git a/src/providers/lspModelProvider.ts b/src/providers/lspModelProvider.ts new file mode 100644 index 0000000..cf086ca --- /dev/null +++ b/src/providers/lspModelProvider.ts @@ -0,0 +1,157 @@ +/** + * LspModelProvider — fetches parsed model data from the sysml-v2-lsp + * language server via the custom `sysml/model` request. + */ + +import * as vscode from 'vscode'; +import { LanguageClient } from 'vscode-languageclient/node'; +import { + PositionDTO, + RangeDTO, + SysMLElementDTO, + SysMLModelParams, + SysMLModelResult, + SysMLModelScope, +} from './sysmlModelTypes'; + +// Re-export for consumer convenience +export type { SysMLModelResult, SysMLModelScope }; + +/** + * Convert a 0-based LSP PositionDTO to a `vscode.Position`. + */ +function toVscodePosition(p: PositionDTO): vscode.Position { + return new vscode.Position(p.line, p.character); +} + +/** + * Convert a 0-based LSP RangeDTO to a `vscode.Range`. + */ +export function toVscodeRange(r: RangeDTO): vscode.Range { + return new vscode.Range(toVscodePosition(r.start), toVscodePosition(r.end)); +} + +/** + * Recursively stamp `vscode.Range` objects onto every element in the + * tree so consumers can use `.range` directly without manual conversion. + * The original `RangeDTO` is preserved for serialisation. + */ +function convertRangesInPlace(elements: SysMLElementDTO[]): void { + for (const el of elements) { + // Stamp a vscode.Range as a non-enumerable property so JSON + // serialisation (for webview postMessage) still works. + Object.defineProperty(el, 'vscodeRange', { + value: toVscodeRange(el.range), + configurable: true, + writable: true, + }); + if (el.children?.length) { + convertRangesInPlace(el.children); + } + } +} + +export class LspModelProvider { + constructor(private readonly _client: LanguageClient) {} + + /** + * Request the parsed model from the LSP server. + * + * On cold start the server may still be warming up its DFA / + * parsing the file, so it can return 0 elements. We retry a + * few times with exponential back-off before giving up. + * + * @param uri Document URI to query + * @param scopes Optional subset of data to return — defaults to all + * @param token Cancellation token forwarded to `sendRequest` + */ + async getModel( + uri: string, + scopes?: SysMLModelScope[], + token?: vscode.CancellationToken, + ): Promise { + const params: SysMLModelParams = { + textDocument: { uri }, + }; + if (scopes && scopes.length > 0) { + params.scope = scopes; + } + + // Retry with exponential back-off when the server hasn't + // finished parsing yet (returns 0 elements). + const retryDelays = [1000, 3000, 8000]; // ms + let result: SysMLModelResult; + + for (let attempt = 0; ; attempt++) { + if (token?.isCancellationRequested) { + return { version: 0, elements: [], relationships: [] }; + } + + result = await this._client.sendRequest( + 'sysml/model', + params, + token, + ); + + const hasData = (result.elements?.length ?? 0) > 0; + if (hasData || attempt >= retryDelays.length) { + break; + } + + // Wait before retrying + await new Promise((resolve) => { + const timer = setTimeout(resolve, retryDelays[attempt]); + // Cancel the delay if the token fires + token?.onCancellationRequested(() => { + globalThis.clearTimeout(timer); + resolve(); + }); + }); + } + + // Stamp vscode.Range onto every element for convenient consumer use + if (result.elements) { + convertRangesInPlace(result.elements); + } + + return result; + } + + /** + * Find an element by name in the model. Performs a depth-first + * search over `.elements` returned by the last `getModel` call + * with `scope: ['elements']`. + */ + async findElement( + uri: string, + elementName: string, + parentContext?: string, + token?: vscode.CancellationToken, + ): Promise { + const result = await this.getModel(uri, ['elements'], token); + if (!result.elements) { + return undefined; + } + + if (parentContext) { + const parent = this._findRecursive(parentContext, result.elements); + if (parent?.children) { + const found = this._findRecursive(elementName, parent.children); + if (found) return found; + } + } + + return this._findRecursive(elementName, result.elements); + } + + private _findRecursive(name: string, elements: SysMLElementDTO[]): SysMLElementDTO | undefined { + for (const el of elements) { + if (el.name === name) return el; + if (el.children?.length) { + const found = this._findRecursive(name, el.children); + if (found) return found; + } + } + return undefined; + } +} diff --git a/src/providers/sysmlModelTypes.ts b/src/providers/sysmlModelTypes.ts new file mode 100644 index 0000000..7e553d9 --- /dev/null +++ b/src/providers/sysmlModelTypes.ts @@ -0,0 +1,208 @@ +/** + * DTO types for the `sysml/model` custom LSP request and `sysml/status` notification. + * + * These mirror the types defined in the sysml-v2-lsp server + * (`server/src/model/sysmlModelTypes.ts`). All ranges use LSP-style + * 0-based positions — the LspModelProvider converts them to + * `vscode.Range` before consumers see them. + */ + +// --------------------------------------------------------------------------- +// Status Notification +// --------------------------------------------------------------------------- + +export interface SysMLStatusParams { + state: 'begin' | 'progress' | 'end'; + message: string; + uri: string; + fileName?: string; +} + +// --------------------------------------------------------------------------- +// Request / Response +// --------------------------------------------------------------------------- + +export type SysMLModelScope = + | 'elements' + | 'relationships' + | 'sequenceDiagrams' + | 'activityDiagrams' + | 'resolvedTypes' + | 'diagnostics'; + +export interface SysMLModelParams { + textDocument: { uri: string }; + scope?: SysMLModelScope[]; +} + +export interface SysMLModelResult { + version: number; + elements?: SysMLElementDTO[]; + relationships?: RelationshipDTO[]; + sequenceDiagrams?: SequenceDiagramDTO[]; + activityDiagrams?: ActivityDiagramDTO[]; + resolvedTypes?: Record; + diagnostics?: SemanticDiagnosticDTO[]; + stats?: { + totalElements: number; + resolvedElements: number; + unresolvedElements: number; + /** Actual ANTLR parse time (worker or lazy main-thread). */ + parseTimeMs: number; + /** Time to build symbol table + extract DTOs for the requested scopes. */ + modelBuildTimeMs: number; + }; +} + +// --------------------------------------------------------------------------- +// Core Element Tree +// --------------------------------------------------------------------------- + +export interface PositionDTO { + line: number; + character: number; +} + +export interface RangeDTO { + start: PositionDTO; + end: PositionDTO; +} + +export interface SysMLElementDTO { + type: string; + name: string; + range: RangeDTO; + children: SysMLElementDTO[]; + attributes: Record; + relationships: RelationshipDTO[]; + errors?: string[]; +} + +// --------------------------------------------------------------------------- +// Relationships +// --------------------------------------------------------------------------- + +export interface RelationshipDTO { + type: string; + source: string; + target: string; + name?: string; +} + +// --------------------------------------------------------------------------- +// Sequence Diagrams +// --------------------------------------------------------------------------- + +export interface SequenceDiagramDTO { + name: string; + participants: ParticipantDTO[]; + messages: MessageDTO[]; + range: RangeDTO; +} + +export interface ParticipantDTO { + name: string; + type: string; + range: RangeDTO; +} + +export interface MessageDTO { + name: string; + from: string; + to: string; + payload: string; + occurrence: number; + range: RangeDTO; +} + +// --------------------------------------------------------------------------- +// Activity Diagrams +// --------------------------------------------------------------------------- + +export interface ActivityDiagramDTO { + name: string; + actions: ActivityActionDTO[]; + decisions: DecisionNodeDTO[]; + flows: ControlFlowDTO[]; + states: ActivityStateDTO[]; + range: RangeDTO; +} + +export interface ActivityActionDTO { + name: string; + type: string; + kind?: string; + inputs?: string[]; + outputs?: string[]; + condition?: string; + subActions?: ActivityActionDTO[]; + isDefinition?: boolean; + range?: RangeDTO; + parent?: string; + children?: string[]; +} + +export interface DecisionNodeDTO { + name: string; + condition: string; + branches: { condition: string; target: string }[]; + range: RangeDTO; +} + +export interface ControlFlowDTO { + from: string; + to: string; + condition?: string; + guard?: string; + range: RangeDTO; +} + +export interface ActivityStateDTO { + name: string; + type: 'initial' | 'final' | 'intermediate'; + entryActions?: string[]; + exitActions?: string[]; + doActivity?: string; + range: RangeDTO; +} + +// --------------------------------------------------------------------------- +// Resolved Types +// --------------------------------------------------------------------------- + +export interface ResolvedTypeDTO { + qualifiedName: string; + simpleName: string; + kind: string; + isLibraryType: boolean; + specializationChain: string[]; + specializes: string[]; + features: ResolvedFeatureDTO[]; +} + +export interface ResolvedFeatureDTO { + name: string; + kind: string; + type?: string; + multiplicity?: string; + direction?: 'in' | 'out' | 'inout'; + visibility?: 'public' | 'private' | 'protected'; + isDerived: boolean; + isReadonly: boolean; +} + +// --------------------------------------------------------------------------- +// Semantic Diagnostics +// --------------------------------------------------------------------------- + +export interface SemanticDiagnosticDTO { + code: string; + message: string; + severity: 'error' | 'warning' | 'info'; + range: RangeDTO; + elementName: string; + relatedInfo?: { + message: string; + location?: RangeDTO; + }[]; +} diff --git a/src/resolver/diagnostics.ts b/src/resolver/diagnostics.ts deleted file mode 100644 index ff410ba..0000000 --- a/src/resolver/diagnostics.ts +++ /dev/null @@ -1,283 +0,0 @@ -/** - * Diagnostic formatter for semantic validation errors - */ - -import * as vscode from 'vscode'; -import { DiagnosticSeverity, SemanticDiagnostic } from './types'; - -/** - * Converts semantic diagnostics to VS Code diagnostics - */ -export class DiagnosticFormatter { - private diagnosticCollection: vscode.DiagnosticCollection; - - constructor(name: string) { - this.diagnosticCollection = vscode.languages.createDiagnosticCollection(name); - } - - /** - * Publish diagnostics for a document - */ - public publish(uri: vscode.Uri, diagnostics: SemanticDiagnostic[]): void { - const vscodeDiagnostics = diagnostics.map(d => this.toVsCodeDiagnostic(d)); - this.diagnosticCollection.set(uri, vscodeDiagnostics); - } - - /** - * Clear diagnostics for a document - */ - public clear(uri: vscode.Uri): void { - this.diagnosticCollection.delete(uri); - } - - /** - * Clear all diagnostics - */ - public clearAll(): void { - this.diagnosticCollection.clear(); - } - - /** - * Dispose diagnostic collection - */ - public dispose(): void { - this.diagnosticCollection.dispose(); - } - - /** - * Convert semantic diagnostic to VS Code diagnostic - */ - private toVsCodeDiagnostic(diagnostic: SemanticDiagnostic): vscode.Diagnostic { - const vscodeDiagnostic = new vscode.Diagnostic( - diagnostic.range, - diagnostic.message, - this.toVsCodeSeverity(diagnostic.severity) - ); - - vscodeDiagnostic.code = diagnostic.code; - vscodeDiagnostic.source = 'SysML'; - - if (diagnostic.relatedInfo && diagnostic.relatedInfo.length > 0) { - vscodeDiagnostic.relatedInformation = diagnostic.relatedInfo.map(info => - new vscode.DiagnosticRelatedInformation( - new vscode.Location(vscode.Uri.file(''), info.location || diagnostic.range), - info.message - ) - ); - } - - return vscodeDiagnostic; - } - - /** - * Convert semantic severity to VS Code severity - */ - private toVsCodeSeverity(severity: DiagnosticSeverity): vscode.DiagnosticSeverity { - switch (severity) { - case DiagnosticSeverity.Error: - return vscode.DiagnosticSeverity.Error; - case DiagnosticSeverity.Warning: - return vscode.DiagnosticSeverity.Warning; - case DiagnosticSeverity.Info: - return vscode.DiagnosticSeverity.Information; - default: - return vscode.DiagnosticSeverity.Information; - } - } -} - -/** - * Factory for creating common diagnostic messages - */ -export class DiagnosticFactory { - /** - * Create unresolved type diagnostic - */ - public static unresolvedType( - elementName: string, - typeName: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'unresolved-type', - message: `Cannot resolve type '${typeName}' for element '${elementName}'`, - severity: DiagnosticSeverity.Error, - range, - elementName - }; - } - - /** - * Create invalid specialization diagnostic - */ - public static invalidSpecialization( - elementName: string, - childType: string, - parentType: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'invalid-specialization', - message: `Type '${childType}' cannot specialize '${parentType}'`, - severity: DiagnosticSeverity.Error, - range, - elementName, - relatedInfo: [{ - message: `'${childType}' is not a subtype of '${parentType}'` - }] - }; - } - - /** - * Create invalid port diagnostic - */ - public static invalidPort( - elementName: string, - portName: string, - reason: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'invalid-port', - message: `Invalid port '${portName}': ${reason}`, - severity: DiagnosticSeverity.Error, - range, - elementName - }; - } - - /** - * Create cardinality violation diagnostic - */ - public static cardinalityViolation( - elementName: string, - featureName: string, - expected: string, - actual: number, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'cardinality-violation', - message: `Feature '${featureName}' expects ${expected} but found ${actual}`, - severity: DiagnosticSeverity.Warning, - range, - elementName - }; - } - - /** - * Create missing required feature diagnostic - */ - public static missingRequiredFeature( - elementName: string, - featureName: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'missing-required-feature', - message: `Required feature '${featureName}' is missing`, - severity: DiagnosticSeverity.Error, - range, - elementName - }; - } - - /** - * Create invalid connection diagnostic - */ - public static invalidConnection( - source: string, - target: string, - reason: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'invalid-connection', - message: `Invalid connection from '${source}' to '${target}': ${reason}`, - severity: DiagnosticSeverity.Error, - range, - elementName: source - }; - } - - /** - * Create type mismatch diagnostic - */ - public static typeMismatch( - elementName: string, - expected: string, - actual: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'type-mismatch', - message: `Type mismatch: expected '${expected}', got '${actual}'`, - severity: DiagnosticSeverity.Error, - range, - elementName - }; - } - - /** - * Create missing enum keyword diagnostic. - * Per the SysML v2 spec, enumeration literals should be prefixed with `enum`. - */ - public static missingEnumKeyword( - literalName: string, - enumDefName: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'missing-enum-keyword', - message: `Enumeration literal '${literalName}' inside '${enumDefName}' is missing the 'enum' keyword prefix. Use 'enum ${literalName};' for portability.`, - severity: DiagnosticSeverity.Warning, - range, - elementName: literalName, - relatedInfo: [{ - message: `The SysML v2 spec requires 'enum' before each enumeration literal` - }] - }; - } - - /** - * Create missing standard library import diagnostic. - * Suggests adding the appropriate import when standard types are used without one. - */ - public static missingImport( - typeName: string, - suggestedImport: string, - range: vscode.Range - ): SemanticDiagnostic { - return { - code: 'missing-import', - message: `Type '${typeName}' is not in scope. Did you mean to add 'private import ${suggestedImport};'?`, - severity: DiagnosticSeverity.Warning, - range, - elementName: typeName, - relatedInfo: [{ - message: `Add 'private import ${suggestedImport};' at the top of the file` - }] - }; - } - - /** - * Create deprecated element warning - */ - public static deprecatedElement( - elementName: string, - replacement: string | null, - range: vscode.Range - ): SemanticDiagnostic { - const message = replacement - ? `Element '${elementName}' is deprecated. Use '${replacement}' instead.` - : `Element '${elementName}' is deprecated.`; - - return { - code: 'deprecated-element', - message, - severity: DiagnosticSeverity.Warning, - range, - elementName - }; - } -} diff --git a/src/resolver/index.ts b/src/resolver/index.ts deleted file mode 100644 index fd32472..0000000 --- a/src/resolver/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Resolver module exports - */ - -export { DiagnosticFactory, DiagnosticFormatter } from './diagnostics'; -export { SemanticResolver } from './resolver'; -export { - DiagnosticSeverity, EnrichedElement, ResolutionResult, ResolvedFeature, ResolvedType, SemanticDiagnostic, ValidatedConnection -} from './types'; - diff --git a/src/resolver/resolver.ts b/src/resolver/resolver.ts deleted file mode 100644 index 55c71de..0000000 --- a/src/resolver/resolver.ts +++ /dev/null @@ -1,672 +0,0 @@ -/** - * Semantic resolver that validates and enriches parsed elements against standard library - */ - -import * as vscode from 'vscode'; -import { LibraryService } from '../library/service'; -import { DiagnosticFactory } from './diagnostics'; -import { - DiagnosticSeverity, - EnrichedElement, - ResolutionResult, - ResolvedFeature, - ResolvedType, - SemanticDiagnostic, - ValidatedConnection -} from './types'; - -/** - * Main semantic resolver class - */ -export class SemanticResolver { - private libraryService: LibraryService; - - constructor(libraryService: LibraryService) { - this.libraryService = libraryService; - } - - /** - * Resolve and validate parsed elements. - * @param elements Parsed AST elements - * @param uri Document URI - * @param documentText Optional full document text — enables import / enum-keyword checks - */ - public async resolve( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - elements: any[], - uri: vscode.Uri, - documentText?: string - ): Promise { - const enrichedElements: EnrichedElement[] = []; - const allDiagnostics: SemanticDiagnostic[] = []; - - for (const element of elements) { - // Debug: log elements with doc attribute - if (element.attributes) { - const hasDoc = element.attributes instanceof Map - ? element.attributes.has('doc') - : element.attributes.doc !== undefined; - if (hasDoc) { - // Doc attribute found - no logging needed - } - } - const enriched = await this.enrichElement(element, uri); - enrichedElements.push(enriched); - allDiagnostics.push(...enriched.diagnostics); - - // Recursively process children - if (element.children && element.children.length > 0) { - const childResult = await this.resolve(element.children, uri, documentText); - enriched.children = childResult.elements; - allDiagnostics.push(...childResult.diagnostics); - } - } - - // ── Additional validation passes (require document text) ── - if (documentText) { - // Check for enum literals missing the 'enum' keyword prefix - const enumDiags = this.validateEnumLiterals(elements, documentText); - allDiagnostics.push(...enumDiags); - - // Check for standard library types used without an import statement - const importDiags = this.validateStandardImports(elements, documentText); - allDiagnostics.push(...importDiags); - } - - const stats = this.calculateStats(enrichedElements, allDiagnostics); - - return { - elements: enrichedElements, - diagnostics: allDiagnostics, - stats - }; - } - - /** - * Enrich a single element with semantic information - */ - private async enrichElement( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - element: any, - _uri: vscode.Uri - ): Promise { - // Debug: trace unnamed connections - if (element.name === 'unnamed' && element.type === 'connection') { - // eslint-disable-next-line no-console - console.log(`[resolver] Connection at line ${element.range?.start?.line} is unnamed in input`); - } - - const diagnostics: SemanticDiagnostic[] = []; - let resolvedType: ResolvedType | null = null; - - // Extract typing from attributes (e.g., "part vehicle : Vehicle" has typing="Vehicle") - const typing = this.getTyping(element); - - // Only attempt type resolution if element has explicit typing - if (typing) { - try { - resolvedType = await this.resolveType(typing, element.name); - - // Validate specialization if specified - const specializes = this.getSpecializes(element); - if (specializes && specializes.length > 0 && resolvedType) { - const specializationErrors = await this.validateSpecialization( - element.name, - typing, - specializes, - this.createRange(element) - ); - diagnostics.push(...specializationErrors); - } - - // Validate ports if applicable - if (element.ports && resolvedType) { - const portErrors = await this.validatePorts( - element.name, - element.ports, - resolvedType - ); - diagnostics.push(...portErrors); - } - } catch { - // Type resolution failed - this is expected for user-defined types - // Only report as error if it looks like a standard library type - if (this.looksLikeStandardType(typing)) { - diagnostics.push( - DiagnosticFactory.unresolvedType( - element.name, - typing, - this.createRange(element) - ) - ); - } - } - } - - // Convert attributes to Map - handle both Map and Object input - const attributes = new Map(); - if (element.attributes) { - if (element.attributes instanceof Map) { - // If it's already a Map, iterate over it directly - for (const [key, value] of element.attributes) { - attributes.set(key, value as string | number | boolean); - } - } else { - // If it's an Object, use Object.entries - for (const [key, value] of Object.entries(element.attributes)) { - attributes.set(key, value as string | number | boolean); - } - } - } - - // Debug: verify doc attribute was copied - // (logging disabled for performance) - - return { - name: element.name, - type: element.type || 'unknown', - range: this.createRange(element), - resolvedType, - children: [], - relationships: element.relationships || [], - diagnostics, - attributes - }; - } - - /** - * Resolve type information from library - */ - private async resolveType( - typeName: string, - _elementName: string - ): Promise { - // Try exact match first - let symbol = this.libraryService.getSymbol(typeName); - - // Try searching by simple name if qualified lookup fails - if (!symbol) { - const candidates = this.libraryService.getSymbolsByName(typeName); - if (candidates.length > 0) { - symbol = candidates[0]; // Use first match - } - } - - if (!symbol) { - throw new Error(`Type '${typeName}' not found in library`); - } - - // Get specialization chain - const specializationChain = this.libraryService.getSpecializationChain(symbol.qualifiedName); - - // Extract features - const features: ResolvedFeature[] = symbol.features.map(f => ({ - name: f.name, - kind: f.kind, - type: f.type, - multiplicity: f.multiplicity, - direction: f.direction as 'in' | 'out' | 'inout' | undefined, - visibility: 'public', - isDerived: false, - isReadonly: false - })); - - return { - qualifiedName: symbol.qualifiedName, - simpleName: symbol.name, - kind: symbol.kind, - isLibraryType: true, - specializationChain, - specializes: symbol.specializes, - features - }; - } - - /** - * Validate that specialization relationships are semantically valid - */ - private async validateSpecialization( - elementName: string, - childType: string, - parentTypes: string[], - range: vscode.Range - ): Promise { - const diagnostics: SemanticDiagnostic[] = []; - - for (const parentType of parentTypes) { - const isValid = this.libraryService.isSpecializationOf(childType, parentType); - - if (!isValid) { - diagnostics.push( - DiagnosticFactory.invalidSpecialization( - elementName, - childType, - parentType, - range - ) - ); - } - } - - return diagnostics; - } - - /** - * Validate port definitions - */ - private async validatePorts( - elementName: string, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ports: any[], - _resolvedType: ResolvedType - ): Promise { - const diagnostics: SemanticDiagnostic[] = []; - - for (const port of ports) { - // Check if port direction is valid - if (port.direction && !['in', 'out', 'inout'].includes(port.direction)) { - diagnostics.push( - DiagnosticFactory.invalidPort( - elementName, - port.name, - `Invalid direction '${port.direction}'`, - this.createRange(port) - ) - ); - } - - // Check if port type exists - if (port.type) { - try { - await this.resolveType(port.type, port.name); - } catch { - diagnostics.push( - DiagnosticFactory.unresolvedType( - port.name, - port.type, - this.createRange(port) - ) - ); - } - } - } - - return diagnostics; - } - - /** - * Validate connection between elements - */ - public async validateConnection( - source: string, - target: string, - connectionType: string - ): Promise { - const errors: SemanticDiagnostic[] = []; - - // Get source and target types from library - const sourceSymbols = this.libraryService.getSymbolsByName(source); - const targetSymbols = this.libraryService.getSymbolsByName(target); - - if (sourceSymbols.length === 0) { - errors.push( - DiagnosticFactory.unresolvedType( - source, - source, - new vscode.Range(0, 0, 0, 0) - ) - ); - } - - if (targetSymbols.length === 0) { - errors.push( - DiagnosticFactory.unresolvedType( - target, - target, - new vscode.Range(0, 0, 0, 0) - ) - ); - } - - // Basic validation: both must exist - const isValid = errors.length === 0; - - return { - source, - target, - type: connectionType, - isValid, - errors - }; - } - - /** - * Validate cardinality constraints - */ - private validateCardinality( - elementName: string, - featureName: string, - multiplicity: string, - actualCount: number, - range: vscode.Range - ): SemanticDiagnostic | null { - // Parse multiplicity (e.g., "1", "0..1", "1..*", "*") - const parts = multiplicity.split('..'); - - if (parts.length === 1) { - // Exact count - const expected = parts[0] === '*' ? Infinity : parseInt(parts[0]); - if (actualCount !== expected) { - return DiagnosticFactory.cardinalityViolation( - elementName, - featureName, - multiplicity, - actualCount, - range - ); - } - } else if (parts.length === 2) { - // Range - const min = parseInt(parts[0]); - const max = parts[1] === '*' ? Infinity : parseInt(parts[1]); - - if (actualCount < min || actualCount > max) { - return DiagnosticFactory.cardinalityViolation( - elementName, - featureName, - multiplicity, - actualCount, - range - ); - } - } - - return null; - } - - /** - * Calculate resolution statistics - */ - private calculateStats( - elements: EnrichedElement[], - diagnostics: SemanticDiagnostic[] - ): ResolutionResult['stats'] { - let totalElements = 0; - let resolvedElements = 0; - let unresolvedElements = 0; - - const countElements = (elements: EnrichedElement[]) => { - for (const element of elements) { - totalElements++; - if (element.resolvedType) { - resolvedElements++; - } else { - unresolvedElements++; - } - countElements(element.children); - } - }; - - countElements(elements); - - const errorCount = diagnostics.filter(d => d.severity === DiagnosticSeverity.Error).length; - const warningCount = diagnostics.filter(d => d.severity === DiagnosticSeverity.Warning).length; - - return { - totalElements, - resolvedElements, - unresolvedElements, - errorCount, - warningCount - }; - } - - /** - * Create a range from element position data - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private createRange(element: any): vscode.Range { - // First, check if the element already has a proper range object from the parser - if (element.range && element.range instanceof vscode.Range) { - return element.range; - } - // Check for range-like object with start/end positions - if (element.range && element.range.start && element.range.end) { - return new vscode.Range( - element.range.start.line, - element.range.start.character, - element.range.end.line, - element.range.end.character - ); - } - // Fallback to line/column if available (legacy support) - if (element.line !== undefined && element.column !== undefined) { - return new vscode.Range( - element.line, - element.column, - element.line, - element.column + (element.name?.length || 0) - ); - } - return new vscode.Range(0, 0, 0, 0); - } - - /** - * Extract typing information from element attributes - * (e.g., "part vehicle : Vehicle" has typing="Vehicle") - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private getTyping(element: any): string | null { - if (!element.attributes) { - return null; - } - - // Check if attributes is a Map or plain object - if (element.attributes instanceof Map) { - return element.attributes.get('typing') as string || null; - } else if (typeof element.attributes === 'object') { - return element.attributes.typing || null; - } - - return null; - } - - /** - * Extract specialization list from element attributes - * (e.g., "part vehicle :> BaseVehicle" has specializes=["BaseVehicle"]) - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private getSpecializes(element: any): string[] | null { - if (!element.attributes) { - return null; - } - - let specializesStr: string | null = null; - - if (element.attributes instanceof Map) { - specializesStr = element.attributes.get('specializes') as string || null; - } else if (typeof element.attributes === 'object') { - specializesStr = element.attributes.specializes || null; - } - - if (specializesStr) { - // Parse comma-separated list - return specializesStr.split(',').map(s => s.trim()).filter(s => s.length > 0); - } - - return null; - } - - /** - * Check if a type name looks like it should be in the standard library - * Standard types typically start with uppercase or contain :: namespace separator - */ - private looksLikeStandardType(typeName: string): boolean { - if (!typeName) { - return false; - } - - // Check for known standard library patterns - const standardPrefixes = [ - 'Base::', - 'ISQ::', - 'SI::', - 'Metadata::', - 'ScalarValues::', - 'Collections::', - 'Occurrences::' - ]; - - // Check if it starts with a standard library prefix - if (standardPrefixes.some(prefix => typeName.startsWith(prefix))) { - return true; - } - - // Check for common standard library types - const commonTypes = [ - 'Anything', 'Performance', 'Feature', 'Type', 'Class', - 'DataType', 'Structure', 'Association', 'Connector', - 'PortDefinition', 'PortUsage', 'ProxyPort', - 'Boolean', 'String', 'Integer', 'Real', 'Number' - ]; - - return commonTypes.includes(typeName); - } - - // ── Enum-literal validation ──────────────────────────────────── - /** - * Walk all `enumeration def` elements and verify that each child - * (enumeration literal) is prefixed with the `enum` keyword in the - * source text. The ANTLR grammar accepts `ENUM?` (optional), but the - * SysML v2 spec requires it, and some downstream parsers (incl. the - * visualizer) may reject the bare form. - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private validateEnumLiterals(elements: any[], documentText: string): SemanticDiagnostic[] { - const diagnostics: SemanticDiagnostic[] = []; - const lines = documentText.split('\n'); - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const walk = (elems: any[]) => { - for (const el of elems) { - if (el.type === 'enumeration def' && el.children) { - for (const child of el.children) { - // Children of an enum def are enumeration literals - if (child.type === 'enumeration' || child.type === 'entry' || child.type === 'attribute' || child.name) { - const line = child.range?.start?.line; - if (line !== undefined && line < lines.length) { - const srcLine = lines[line].trim(); - // Check whether the source line starts with 'enum ' - if (!srcLine.startsWith('enum ') && !srcLine.startsWith('enum\t')) { - diagnostics.push( - DiagnosticFactory.missingEnumKeyword( - child.name || 'unnamed', - el.name, - this.createRange(child) - ) - ); - } - } - } - } - } - if (el.children) { - walk(el.children); - } - } - }; - - walk(elements); - return diagnostics; - } - - // ── Standard-library import validation ───────────────────────── - /** Map of unqualified type names to the import that provides them. */ - private static readonly IMPORT_SUGGESTIONS: Record = { - 'String': 'ScalarValues::*', - 'Integer': 'ScalarValues::*', - 'Boolean': 'ScalarValues::*', - 'Real': 'ScalarValues::*', - 'Natural': 'ScalarValues::*', - 'Number': 'NumericalValues::*', - 'Complex': 'ScalarValues::*', - }; - - /** - * Scan the document for use of well-known standard library types and - * verify that the corresponding import is present. Emits a warning - * when, e.g., `String` is referenced but `ScalarValues::*` is not - * imported. - */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - private validateStandardImports(elements: any[], documentText: string): SemanticDiagnostic[] { - const diagnostics: SemanticDiagnostic[] = []; - - // Collect all import statements from the source text - const importRegex = /import\s+(\S+)\s*;/g; - const imports = new Set(); - let m; - while ((m = importRegex.exec(documentText)) !== null) { - imports.add(m[1]); - } - // Also handle `private import ...;` - const privateImportRegex = /private\s+import\s+(\S+)\s*;/g; - while ((m = privateImportRegex.exec(documentText)) !== null) { - imports.add(m[1]); - } - - // Collect type names that appear as attribute types or element typings - const usedTypes = new Set(); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const collectTypes = (elems: any[]) => { - for (const el of elems) { - const typing = this.getTyping(el); - if (typing) { - usedTypes.add(typing); - } - // Also check dataType attribute (used by attribute elements) - const dataType = el.attributes instanceof Map - ? el.attributes.get('dataType') as string - : el.attributes?.dataType; - if (dataType) { - usedTypes.add(dataType); - } - if (el.children) { - collectTypes(el.children); - } - } - }; - collectTypes(elements); - - // For each used type, check if it needs an import - const alreadyWarned = new Set(); - for (const typeName of usedTypes) { - const suggestedImport = SemanticResolver.IMPORT_SUGGESTIONS[typeName]; - if (!suggestedImport) { - continue; // Not a known standard library type - } - if (imports.has(suggestedImport)) { - continue; // Already imported - } - // Check if the fully-qualified form is used (e.g. ScalarValues::String) - if (imports.has(`ScalarValues::${typeName}`)) { - continue; - } - // Avoid duplicate warnings for the same import suggestion - if (alreadyWarned.has(suggestedImport)) { - continue; - } - alreadyWarned.add(suggestedImport); - - diagnostics.push( - DiagnosticFactory.missingImport( - typeName, - suggestedImport, - new vscode.Range(0, 0, 0, 0) // Top-of-file range for import suggestion - ) - ); - } - - return diagnostics; - } -} diff --git a/src/resolver/types.ts b/src/resolver/types.ts deleted file mode 100644 index db2a404..0000000 --- a/src/resolver/types.ts +++ /dev/null @@ -1,136 +0,0 @@ -/** - * Types for semantic resolver that matches user elements against standard library - */ - -import * as vscode from 'vscode'; - -/** - * Diagnostic severity levels for semantic errors - */ -export enum DiagnosticSeverity { - Error = 'error', - Warning = 'warning', - Info = 'info' -} - -/** - * Semantic diagnostic for type checking and validation errors - */ -export interface SemanticDiagnostic { - /** Unique identifier for diagnostic type */ - code: string; - /** Human-readable message */ - message: string; - /** Severity level */ - severity: DiagnosticSeverity; - /** Location in source document */ - range: vscode.Range; - /** Element that triggered the diagnostic */ - elementName: string; - /** Related context information */ - relatedInfo?: { - message: string; - location?: vscode.Range; - }[]; -} - -/** - * Resolved type information for an element - */ -export interface ResolvedType { - /** Qualified name from library (e.g., "Base::Anything") */ - qualifiedName: string; - /** Simple name */ - simpleName: string; - /** Element kind (part def, state, action, etc.) */ - kind: string; - /** Whether this is a standard library type */ - isLibraryType: boolean; - /** Specialization chain (inheritance hierarchy) */ - specializationChain: string[]; - /** Immediate parent types */ - specializes: string[]; - /** Available features (attributes, ports, etc.) */ - features: ResolvedFeature[]; -} - -/** - * Resolved feature (attribute, port, reference, etc.) - */ -export interface ResolvedFeature { - /** Feature name */ - name: string; - /** Feature kind (attribute, port, reference, etc.) */ - kind: string; - /** Type of the feature */ - type?: string; - /** Multiplicity (0..1, 1..*, etc.) */ - multiplicity?: string; - /** Direction for ports (in, out, inout) */ - direction?: 'in' | 'out' | 'inout'; - /** Visibility (public, private, protected) */ - visibility?: 'public' | 'private' | 'protected'; - /** Whether this is derived */ - isDerived: boolean; - /** Whether this is readonly */ - isReadonly: boolean; -} - -/** - * Validated connection information - */ -export interface ValidatedConnection { - /** Source element name */ - source: string; - /** Target element name */ - target: string; - /** Connection type (binding, connection, flow, etc.) */ - type: string; - /** Whether connection is semantically valid */ - isValid: boolean; - /** Validation errors if invalid */ - errors: SemanticDiagnostic[]; -} - -/** - * Enriched element with resolved semantic information - */ -export interface EnrichedElement { - /** Original element name */ - name: string; - /** Element type/kind */ - type: string; - /** Source location */ - range: vscode.Range; - /** Resolved type information (null if unresolved) */ - resolvedType: ResolvedType | null; - /** Child elements */ - children: EnrichedElement[]; - /** Relationships */ - relationships: { - type: string; - target: string; - }[]; - /** Semantic diagnostics for this element */ - diagnostics: SemanticDiagnostic[]; - /** Additional attributes from parser */ - attributes: Map; -} - -/** - * Resolution result for entire document - */ -export interface ResolutionResult { - /** Enriched elements with semantic information */ - elements: EnrichedElement[]; - /** All diagnostics found during resolution */ - diagnostics: SemanticDiagnostic[]; - /** Statistics about resolution */ - stats: { - totalElements: number; - resolvedElements: number; - unresolvedElements: number; - errorCount: number; - warningCount: number; - }; -} diff --git a/src/test/activityDiagram.test.ts b/src/test/activityDiagram.test.ts deleted file mode 100644 index 3632e99..0000000 --- a/src/test/activityDiagram.test.ts +++ /dev/null @@ -1,209 +0,0 @@ -import * as assert from 'assert'; -import * as vscode from 'vscode'; -import { SysMLParser } from '../parser/sysmlParser'; - -/** - * Helper function to create a mock TextDocument for testing. - */ -function createMockDocument(content: string): vscode.TextDocument { - return { - getText: () => content, - positionAt: (offset: number) => { - const lines = content.substring(0, offset).split('\n'); - const line = lines.length - 1; - const character = lines[lines.length - 1].length; - return new vscode.Position(line, character); - }, - offsetAt: (position: vscode.Position) => { - const lines = content.split('\n'); - let offset = 0; - for (let i = 0; i < position.line && i < lines.length; i++) { - offset += lines[i].length + 1; // +1 for newline - } - return offset + position.character; - } - } as vscode.TextDocument; -} - -/** - * Test suite for activity diagram extraction functionality. - */ -suite('Activity Diagram Extraction', () => { - let parser: SysMLParser; - - setup(() => { - parser = new SysMLParser(); - }); - - test('Should extract activity diagrams from simple action', async () => { - // Test uses simpler syntax that ANTLR can parse correctly - const content = ` -package TestPackage { - action def SimpleWorkflow { - action startProcess; - then action performTask; - then action processStep; - then action endProcess; - } -}`; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - assert.strictEqual(activities.length, 1, 'Should extract one activity diagram'); - - const activity = activities[0]; - assert.strictEqual(activity.name, 'SimpleWorkflow', 'Activity name should match'); - assert.ok(activity.actions.length > 0, 'Should have extracted actions'); - }); - - test('Should handle action without activity flow', async () => { - const content = ` -package TestPackage { - action SimpleAction { - attribute value : Real; - } -}`; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - // Should not extract activities without clear flow patterns - assert.strictEqual(activities.length, 0, 'Should not extract simple actions without flow'); - }); - - test('Should extract multiple activity diagrams', async () => { - // Test uses simpler syntax that ANTLR can parse correctly - const content = ` -package TestPackage { - action def FirstActivity { - action firstStep; - then action secondStep; - then action thirdStep; - } - - action def SecondActivity { - action differentFirstStep; - then action loopStep; - then action finalStep; - } -}`; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - assert.strictEqual(activities.length, 2, 'Should extract both activity diagrams'); - assert.strictEqual(activities[0].name, 'FirstActivity', 'First activity name should match'); - assert.strictEqual(activities[1].name, 'SecondActivity', 'Second activity name should match'); - }); - - test('Should handle empty document', async () => { - const content = ''; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - assert.strictEqual(activities.length, 0, 'Should handle empty document gracefully'); - }); - - test('Should extract flows between actions', async () => { - const content = ` -package TestPackage { - action def FlowTest { - action firstAction; - then action secondAction; - then action thirdAction; - } -}`; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - assert.strictEqual(activities.length, 1, 'Should extract one activity diagram'); - - const activity = activities[0]; - assert.ok(activity.actions.length >= 3, 'Should have extracted at least 3 actions'); - }); - - test('Should extract fork and join nodes with correct flows', async () => { - const content = ` -package TestPackage { - action def ParallelWorkflow { - action taskA; - action taskB; - join joinPoint; - - first start; - then fork forkPoint; - then taskA; - then taskB; - first taskA then joinPoint; - first taskB then joinPoint; - first joinPoint then done; - } -}`; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - assert.strictEqual(activities.length, 1, 'Should extract one activity diagram'); - - const activity = activities[0]; - - // Check for fork and join nodes - const forkNodes = activity.actions.filter(a => a.kind === 'fork' || a.type === 'fork'); - const joinNodes = activity.actions.filter(a => a.kind === 'join' || a.type === 'join'); - - assert.ok(forkNodes.length >= 1, 'Should have at least one fork node'); - assert.ok(joinNodes.length >= 1, 'Should have at least one join node'); - - // Check for parallel flows from fork - const flowsFromFork = activity.flows.filter(f => f.from === 'forkPoint'); - assert.strictEqual(flowsFromFork.length, 2, 'Fork should have 2 outgoing flows (to taskA and taskB)'); - - // Check for converging flows to join - const flowsToJoin = activity.flows.filter(f => f.to === 'joinPoint'); - assert.strictEqual(flowsToJoin.length, 2, 'Join should have 2 incoming flows (from taskA and taskB)'); - }); - - test('Should handle standalone fork declarations with subsequent then statements', async () => { - const content = ` -package TestPackage { - use case ParallelProcess { - action processA; - action processB; - join mergePoint; - - first start; - - fork fork1; - then processA; - then processB; - first processA then mergePoint; - first processB then mergePoint; - first mergePoint then done; - } -}`; - - const document = createMockDocument(content); - - const activities = parser.getActivityDiagrams(document); - - assert.strictEqual(activities.length, 1, 'Should extract one activity diagram'); - - const activity = activities[0]; - - // Check that both processA and processB flow from fork1 - const flowsFromFork = activity.flows.filter(f => f.from === 'fork1'); - assert.strictEqual(flowsFromFork.length, 2, 'Both parallel tasks should flow from fork1'); - - const flowTargets = flowsFromFork.map(f => f.to).sort(); - assert.deepStrictEqual(flowTargets, ['processA', 'processB'], 'Fork should flow to both parallel tasks'); - }); -}); diff --git a/src/test/advancedGrammar.test.ts b/src/test/advancedGrammar.test.ts deleted file mode 100644 index fb7438a..0000000 --- a/src/test/advancedGrammar.test.ts +++ /dev/null @@ -1,373 +0,0 @@ -import * as assert from 'assert'; -import { ANTLRSysMLParser } from '../parser/antlrSysMLParser'; - -suite('Advanced Grammar Features', () => { - let parser: ANTLRSysMLParser; - - setup(() => { - parser = new ANTLRSysMLParser(); - }); - - const parseSource = (source: string): { success: boolean } => { - const mockDoc = { - getText: () => source, - lineCount: source.split('\n').length, - uri: { fsPath: 'test.sysml' }, - } as any; - try { - const elements = parser.parseDocument(mockDoc); - return { success: Array.isArray(elements) }; - } catch { - return { success: false }; - } - }; - - suite('Metadata Annotation with @ Syntax', () => { - test('should parse @ metadata annotation', () => { - const source = ` - @ TestMetadata { - doc /* Test metadata */ - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse @ metadata about subject', () => { - const source = ` - @ PerformanceData about SensorSystem { - attribute sampleRate = 100; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Generic Type Parameters', () => { - test('should parse generic type with single parameter', () => { - const source = ` - part DataCollection { - attribute items : Collection; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse generic type with multiple parameters', () => { - const source = ` - part Map { - attribute key : K; - attribute value : V; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse nested generic types', () => { - const source = ` - part Container { - attribute data : Collection>; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Assignment Operator :=', () => { - test('should parse := assignment in attribute', () => { - const source = ` - attribute runtime_value := 0; - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse := assignment with expression', () => { - const source = ` - attribute computed_result := speed * time; - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Temporal Modeling Keywords', () => { - test('should parse snapshot modifier', () => { - const source = ` - snapshot part CurrentState { - attribute position : Real[3]; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse timeslice modifier', () => { - const source = ` - timeslice part StateAtTime { - attribute timestamp : Real; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse individual with snapshot', () => { - const source = ` - individual part Robot { - snapshot part CurrentState; - timeslice part History; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('View Enhancements', () => { - test('should parse expose statement', () => { - const source = ` - view def SystemView { - expose Part1, Part2, Part3; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse filter statement', () => { - const source = ` - view def FilteredView { - filter speed > 100; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse satisfy statement', () => { - const source = ` - view def RequirementView { - satisfy SafetyRequirement; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse combined view statements', () => { - const source = ` - view def CompleteView { - expose Component1, Component2; - filter status == 'active'; - satisfy PerformanceRequirement; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Verification Enhancements', () => { - test('should parse verify statement', () => { - const source = ` - verification def TestVerification { - verify SafetyRequirement; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse multiple verify statements', () => { - const source = ` - verification def SystemVerification { - verify Requirement1; - verify Requirement2; - verify Requirement3; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Relationship Keywords', () => { - test('should parse redefines keyword', () => { - const source = ` - part Vehicle { - attribute speed : Real; - } - part Car :> Vehicle { - attribute speed redefines Vehicle::speed; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse subsets keyword', () => { - const source = ` - part Container { - part items[*]; - part activeItems[*] subsets items; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse references keyword', () => { - const source = ` - part System { - reference externalComponent references ExternalPart; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse :>> redefinition operator', () => { - const source = ` - part Base { - attribute value : Real; - } - part Derived :> Base { - :>> value = 100; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Calculation Enhancements', () => { - test('should parse calc def with parameter directions', () => { - const source = ` - calc def ComputeForce { - in attribute mass : Real; - in attribute acceleration : Real; - out attribute force : Real; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse calc def with return type', () => { - const source = ` - calc def GetValue { - return : Real { return 42; } - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse calc def with inout parameters', () => { - const source = ` - calc def UpdateValue { - inout attribute value : Real; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Multiplicity Ranges', () => { - test('should parse exact multiplicity', () => { - const source = ` - part Container { - part item[5]; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse range multiplicity', () => { - const source = ` - part Container { - part optional[0..1]; - part required[1..*]; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - - test('should parse unbounded multiplicity', () => { - const source = ` - part Container { - part items[*]; - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('All Modifiers', () => { - test('should parse all standard modifiers', () => { - const source = ` - abstract part AbstractBase; - derived attribute computed : Real; - readonly attribute constant : Integer; - variation attribute variant : String; - ordered nonunique attribute list[*]; - individual part Instance; - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); - - suite('Integration Test - All Features Combined', () => { - test('should parse complex document with all new features', () => { - const source = ` - package CompleteTest { - @ Metadata about System { - doc /* Complete test */ - } - - part DataProcessor { - in attribute input : T; - out attribute output : T; - - individual snapshot part State; - timeslice part History; - } - - calc def Process { - in attribute data : Real[1..*]; - return : Real { return data[0]; } - } - - view def SystemView { - expose DataProcessor; - filter active == true; - satisfy PerformanceReq; - } - - verification def Tests { - verify PerformanceReq; - verify SafetyReq; - } - - part System { - attribute value := 42; - part processor :> DataProcessor; - attribute items redefines base; - } - } - `; - const result = parseSource(source); - assert.strictEqual(result.success, true); - }); - }); -}); diff --git a/src/test/antlrParser.test.ts b/src/test/antlrParser.test.ts deleted file mode 100644 index 63ca7e1..0000000 --- a/src/test/antlrParser.test.ts +++ /dev/null @@ -1,299 +0,0 @@ -import * as assert from 'assert'; -import * as vscode from 'vscode'; -import { ANTLRSysMLParser } from '../parser/antlrSysMLParser'; - -suite('ANTLR SysML Parser Tests', () => { - let parser: ANTLRSysMLParser; - - setup(() => { - parser = new ANTLRSysMLParser(); - }); - - test('Parser should be initialized', () => { - assert.ok(parser, 'Parser should be created successfully'); - }); - - test('Should handle empty document', () => { - const content = ``; - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - assert.ok(Array.isArray(elements), 'Should return an array'); - }); - - test('Should parse simple content without crashing', () => { - const content = `package TestPackage { - part def Vehicle; - }`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - assert.ok(Array.isArray(elements), 'Should return an array'); - // Don't assert specific counts since parser behavior may vary - }); - - test('Should handle basic SysML structures', () => { - const content = `part def Vehicle { - attribute mass : Real; - }`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - assert.ok(Array.isArray(elements), 'Should return an array'); - // Parser should handle this content without throwing errors - }); - - test('Should handle parsing errors gracefully', () => { - const content = `invalid syntax here {{{`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document, true); // Include errors - - // Parser should either return error elements or empty array, not crash - assert.ok(Array.isArray(elements), 'Should return an array'); - // Allow for different error handling strategies - if (elements.length > 0) { - const hasErrorElement = elements.some(el => el.type === 'error'); - assert.ok(hasErrorElement || elements.length === 0, 'Should handle invalid syntax gracefully'); - } - }); - - test('Should extract relationships', () => { - const content = `package TestPkg { - part def Car specializes Vehicle { - part engine redefines Vehicle::engine; - } - }`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - const relationships = parser.getRelationships(); - - // Check that we parsed the content successfully - assert.ok(elements.length > 0, 'Should parse at least one element'); - - // Relationships may be extracted differently or not at all in current implementation - // Just verify the method doesn't crash - assert.ok(Array.isArray(relationships), 'getRelationships should return an array'); - }); - - test('Should parse states from multiple packages', () => { - // Test multi-package state parsing - const content = `package Vehicle { - part def Vehicle { - exhibit state vehicleStates parallel { - state operatingStates { - state off; - state starting; - state on; - } - state healthStates { - state normal; - state degraded; - } - } - } - } - - package Engine { - part def Engine { - exhibit state engineStates { - state off; - state starting; - state on; - } - } - } - - package Controller { - part def VehicleController { - exhibit state controllerStates { - state off; - state on; - } - } - }`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - // Helper to collect all states recursively - function collectStates(els: any[], collected: any[] = []): any[] { - for (const el of els) { - if (el.type && el.type.toLowerCase().includes('state')) { - collected.push(el); - } - if (el.children && el.children.length > 0) { - collectStates(el.children, collected); - } - } - return collected; - } - - const allStates = collectStates(elements); - - console.log('Parsed elements:', elements.map(e => `${e.name }:${ e.type}`).join(', ')); - console.log('Found states:', allStates.map(s => `${s.name }:${ s.type}`).join(', ')); - - // Should find states from all packages including exhibit state containers - // Vehicle package: vehicleStates (exhibit state), operatingStates, off, starting, on, healthStates, normal, degraded - // Engine package: engineStates (exhibit state), off, starting, on - // Controller package: controllerStates (exhibit state), off, on - assert.ok(allStates.length >= 13, `Should find at least 13 states (including exhibit state containers), found: ${allStates.length}`); - - // Check we have states from all packages (look for unique state machine names) - const stateNames = allStates.map(s => s.name); - assert.ok(stateNames.includes('vehicleStates'), - 'Should find Vehicle package exhibit state container'); - assert.ok(stateNames.includes('engineStates'), - 'Should find Engine package exhibit state container'); - assert.ok(stateNames.includes('controllerStates'), - 'Should find Controller package exhibit state container'); - - // Also verify nested states are found - assert.ok(stateNames.includes('off'), 'Should find nested off states'); - assert.ok(stateNames.includes('on'), 'Should find nested on states'); - }); - - test('Should parse states nested in part def within sub-packages (like driverStates in MissionContext)', () => { - // Test deeply nested state parsing - const content = `package MissionContext { - package ContextDefinitions { - part def Driver { - port handPort: HandPort {} - exhibit state driverStates { - state initial; - state wait; - transition initial then wait; - } - } - } - }`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - // Helper to collect all states recursively - function collectStates(els: any[], collected: any[] = []): any[] { - for (const el of els) { - if (el.type && el.type.toLowerCase().includes('state')) { - collected.push(el); - } - if (el.children && el.children.length > 0) { - collectStates(el.children, collected); - } - } - return collected; - } - - // Helper to flatten all elements - function flattenAll(els: any[], result: any[] = []): any[] { - for (const el of els) { - result.push(el); - if (el.children && el.children.length > 0) { - flattenAll(el.children, result); - } - } - return result; - } - - const allElements = flattenAll(elements); - const allStates = collectStates(elements); - - console.log('Total flattened elements:', allElements.length); - console.log('All elements:', allElements.map(e => `${e.name}:${e.type}`).join(', ')); - console.log('Found states:', allStates.map(s => `${s.name }:${ s.type}`).join(', ')); - - // Should find driverStates (exhibit state), initial, wait - assert.ok(allStates.length >= 3, `Should find at least 3 states (driverStates, initial, wait), found: ${allStates.length}`); - - const stateNames = allStates.map(s => s.name); - assert.ok(stateNames.includes('driverStates'), - 'Should find driverStates exhibit state container in nested package'); - assert.ok(stateNames.includes('initial'), - 'Should find initial state inside driverStates'); - assert.ok(stateNames.includes('wait'), - 'Should find wait state inside driverStates'); - }); -}); - -/** - * Helper function to create a mock VS Code TextDocument for testing. - */ -function createMockDocument(content: string): vscode.TextDocument { - const lines = content.split('\n'); - - return { - uri: vscode.Uri.file('test.sysml'), - fileName: 'test.sysml', - isUntitled: false, - languageId: 'sysml', - version: 1, - isDirty: false, - isClosed: false, - getText: (range?: vscode.Range) => { - if (range) { - const selectedLines = lines.slice(range.start.line, range.end.line + 1); - if (selectedLines.length === 1) { - return selectedLines[0].substring(range.start.character, range.end.character); - } - selectedLines[0] = selectedLines[0].substring(range.start.character); - selectedLines[selectedLines.length - 1] = selectedLines[selectedLines.length - 1].substring(0, range.end.character); - return selectedLines.join('\n'); - } - return content; - }, - getWordRangeAtPosition: (position: vscode.Position, regex?: RegExp) => { - const line = lines[position.line]; - if (!line) return undefined; - - const wordRegex = regex || /\w+/; - const match = line.substring(position.character).match(wordRegex); - if (match && match.index === 0) { - return new vscode.Range( - position.line, position.character, - position.line, position.character + match[0].length - ); - } - return undefined; - }, - lineAt: (line: number | vscode.Position) => { - const lineNumber = typeof line === 'number' ? line : line.line; - const lineText = lines[lineNumber] || ''; - return { - lineNumber, - text: lineText, - range: new vscode.Range(lineNumber, 0, lineNumber, lineText.length), - rangeIncludingLineBreak: new vscode.Range(lineNumber, 0, lineNumber + 1, 0), - firstNonWhitespaceCharacterIndex: lineText.search(/\S/), - isEmptyOrWhitespace: /^\s*$/.test(lineText) - }; - }, - offsetAt: (position: vscode.Position) => { - let offset = 0; - for (let i = 0; i < position.line; i++) { - offset += lines[i].length + 1; // +1 for newline - } - offset += position.character; - return offset; - }, - positionAt: (offset: number) => { - let currentOffset = 0; - for (let line = 0; line < lines.length; line++) { - if (currentOffset + lines[line].length >= offset) { - return new vscode.Position(line, offset - currentOffset); - } - currentOffset += lines[line].length + 1; // +1 for newline - } - return new vscode.Position(lines.length - 1, lines[lines.length - 1].length); - }, - save: () => Promise.resolve(false), - lineCount: lines.length, - validatePosition: (position: vscode.Position) => position, - validateRange: (range: vscode.Range) => range, - encoding: 'utf8', - eol: vscode.EndOfLine.LF - } as vscode.TextDocument; -} diff --git a/src/test/docExtraction.test.ts b/src/test/docExtraction.test.ts deleted file mode 100644 index aeb5101..0000000 --- a/src/test/docExtraction.test.ts +++ /dev/null @@ -1,470 +0,0 @@ -/** - * Simple test to verify doc extraction works - * This adds a unit test case specifically for doc extraction - */ - -import * as assert from 'assert'; -import * as vscode from 'vscode'; -import { ANTLRSysMLParser } from '../parser/antlrSysMLParser'; -import { SysMLParser } from '../parser/sysmlParser'; - -suite('Doc Extraction Tests', () => { - let parser: ANTLRSysMLParser; - - setup(() => { - parser = new ANTLRSysMLParser(); - }); - - test('Should extract doc from package with block comment', () => { - const content = `package TestPackage { - doc - /* - * This is the package documentation - */ - part def Vehicle; -}`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - // Find the package element - const pkg = elements.find(el => el.type === 'package'); - assert.ok(pkg, 'Package should be found'); - assert.ok(pkg.attributes, 'Package should have attributes'); - - const doc = pkg.attributes.get('doc'); - console.log('[TEST] Package doc:', doc); - assert.ok(doc, 'Package should have doc attribute'); - assert.ok(typeof doc === 'string' && doc.includes('package documentation'), 'Doc should contain expected content'); - }); - - test('Should extract doc from concern element', () => { - const content = `package TestPackage { - part def HeroAssociation; - concern 'Reduce the number of special parts' { - doc - /* - * Reduce the number of special parts to reduce the dependency - * to special suppliers and experts. - */ - stakeholder heroAss : HeroAssociation; - } -}`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - // Find the package and its children - const pkg = elements.find(el => el.type === 'package'); - assert.ok(pkg, 'Package should be found'); - - // Find the concern - const concern = pkg.children.find(el => el.type === 'concern'); - console.log('[TEST] Concern element:', { - name: concern?.name, - type: concern?.type, - attributeSize: concern?.attributes?.size, - hasDoc: concern?.attributes?.has('doc') - }); - - assert.ok(concern, 'Concern should be found'); - assert.equal(concern.name, "Reduce the number of special parts"); - - const doc = concern.attributes.get('doc'); - console.log('[TEST] Concern doc:', doc); - assert.ok(doc, 'Concern should have doc attribute'); - assert.ok(typeof doc === 'string' && doc.includes('Reduce the number'), 'Doc should contain expected content'); - }); - - test('Should extract doc from requirement def', () => { - const content = `package TestPackage { - requirement def VehicleMaxSpeed { - doc - /* - * The actual speed shall always be less or equal to the max speed. - */ - attribute maxSpeed :> ISQ::speed; - } -}`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - const pkg = elements.find(el => el.type === 'package'); - assert.ok(pkg, 'Package should be found'); - - const reqDef = pkg.children.find(el => el.type === 'requirement def'); - console.log('[TEST] Requirement def:', { - name: reqDef?.name, - type: reqDef?.type, - attributeSize: reqDef?.attributes?.size, - hasDoc: reqDef?.attributes?.has('doc') - }); - - assert.ok(reqDef, 'Requirement def should be found'); - - const doc = reqDef.attributes.get('doc'); - console.log('[TEST] Requirement def doc:', doc); - assert.ok(doc, 'Requirement def should have doc attribute'); - assert.ok(typeof doc === 'string' && doc.includes('actual speed'), 'Doc should contain expected content'); - }); - - test('Doc should be preserved when converting to JSON', () => { - const content = `package TestPackage { - concern 'TestConcern' { - doc - /* - * Concern documentation for JSON test - */ - } -}`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - // Simulate convertElementsToJSON conversion - function convertToJSON(elements: any[]): any[] { - return elements.map(element => { - const attributes: Record = {}; - if (element.attributes && element.attributes instanceof Map) { - element.attributes.forEach((value: any, key: string) => { - attributes[key] = value; - }); - } - return { - name: element.name, - type: element.type, - attributes, - children: convertToJSON(element.children || []) - }; - }); - } - - const jsonElements = convertToJSON(elements); - const jsonPkg = jsonElements[0]; - console.log('[TEST] JSON Package:', jsonPkg.name, 'children:', jsonPkg.children?.length); - - const jsonConcern = jsonPkg.children?.find((el: any) => el.type === 'concern'); - console.log('[TEST] JSON Concern:', { - name: jsonConcern?.name, - type: jsonConcern?.type, - attributes: jsonConcern?.attributes - }); - - assert.ok(jsonConcern, 'JSON Concern should exist'); - assert.ok(jsonConcern.attributes, 'JSON Concern should have attributes object'); - assert.ok(jsonConcern.attributes.doc, 'JSON Concern should have doc in attributes'); - console.log('[TEST] JSON Concern doc:', jsonConcern.attributes.doc); - assert.ok(jsonConcern.attributes.doc.includes('Concern documentation'), 'Doc content should be preserved'); - }); - - test('Doc should be usable by collectNodeContent simulation', () => { - const content = `package TestPackage { - concern 'TestConcern' { - doc - /* - * This is the concern documentation text - */ - } -}`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - // Convert to JSON (simulating what happens in visualizationPanel) - function convertToJSON(elements: any[]): any[] { - return elements.map(element => { - const attributes: Record = {}; - if (element.attributes && element.attributes instanceof Map) { - element.attributes.forEach((value: any, key: string) => { - attributes[key] = value; - }); - } - return { - name: element.name, - type: element.type, - attributes, - children: convertToJSON(element.children || []) - }; - }); - } - - const jsonElements = convertToJSON(elements); - const jsonPkg = jsonElements[0]; - const jsonConcern = jsonPkg.children?.find((el: any) => el.type === 'concern'); - - // Simulate what collectNodeContent does - exact copy from visualizationPanel.ts - function simulateCollectNodeContent(el: any): { title: string; lines: { type: string; text: string; rawDoc?: boolean }[] }[] { - const sections: { title: string; lines: { type: string; text: string; rawDoc?: boolean }[] }[] = []; - const docLines: { type: string; text: string; rawDoc?: boolean }[] = []; - - const _typeLower = (el.type || '').toLowerCase(); - - // Extract doc/documentation from attributes or direct property - let doc: string | null = null; - // Note: attributes is serialized as a plain object, not a Map - if (el.attributes) { - if (typeof el.attributes.get === 'function') { - doc = el.attributes.get('doc') || el.attributes.get('documentation') || el.attributes.get('text'); - } else { - doc = el.attributes.doc || el.attributes.documentation || el.attributes.text; - } - } - if (!doc && el.documentation) doc = el.documentation; - if (!doc && el.text) doc = el.text; - - console.log('[TEST simulateCollectNodeContent] Element:', el.name, 'type:', el.type, 'doc found:', doc ? doc.substring(0, 50) : 'null'); - - // Also check for doc children - if (!doc && el.children && el.children.length > 0) { - for (let i = 0; i < el.children.length; i++) { - const child = el.children[i]; - if (child && child.type && child.type.toLowerCase() === 'doc') { - if (child.attributes) { - if (typeof child.attributes.get === 'function') { - doc = child.attributes.get('content'); - } else { - doc = child.attributes.content; - } - } - if (!doc) { - doc = child.fullText || child.name || ''; - } - if (doc) break; - } - } - } - - if (doc && typeof doc === 'string') { - const cleanDoc = doc.split('/*').join('').split('*/').join('').trim(); - console.log('[TEST simulateCollectNodeContent] Processing doc - raw:', doc.length, 'clean:', cleanDoc.length); - if (cleanDoc.length > 0) { - docLines.push({ type: 'doc', text: cleanDoc, rawDoc: true }); - } - } - - // Build sections - if (docLines.length > 0) { - sections.push({ title: 'Doc', lines: docLines.slice(0, 4) }); - } - - console.log('[TEST simulateCollectNodeContent] Final sections:', sections.map(s => s.title).join(', ')); - return sections; - } - - const sections = simulateCollectNodeContent(jsonConcern); - console.log('[TEST] Sections result:', JSON.stringify(sections)); - - assert.ok(sections.length > 0, 'Sections should not be empty'); - assert.ok(sections.some(s => s.title === 'Doc'), 'Doc section should exist'); - const docSection = sections.find(s => s.title === 'Doc'); - assert.ok(docSection && docSection.lines.length > 0, 'Doc section should have lines'); - assert.ok(docSection && docSection.lines[0].text.includes('concern documentation'), 'Doc content should be found'); - }); - - test('Should extract doc from concern with stakeholder', () => { - // Test concern element with doc and stakeholder - const content = `package SmartHome { - part def HomeownersAssociation; - concern 'Minimize maintenance complexity' { - doc - /* - * Reduce maintenance complexity to minimize - * the need for specialized technicians. - */ - stakeholder homeowners : HomeownersAssociation; - } -}`; - - const document = createMockDocument(content); - const elements = parser.parseDocument(document); - - console.log('[TEST] Parsed elements:', elements.length); - const pkg = elements[0]; - console.log('[TEST] Package:', pkg?.name, 'children:', pkg?.children?.length); - - // Find the concern element (should be a child of the package) - const concern = pkg?.children?.find((el: any) => el.type === 'concern'); - console.log('[TEST] Concern:', concern ? { - name: concern.name, - type: concern.type, - hasDoc: concern.attributes?.has('doc'), - docValue: String(concern.attributes?.get('doc') || '').substring(0, 80) - } : 'NOT FOUND'); - - assert.ok(concern, 'Concern element should be found'); - assert.ok(concern.attributes.has('doc'), 'Concern should have doc attribute'); - - const doc = concern.attributes.get('doc'); - console.log('[TEST] Concern doc content:', doc); - assert.ok(typeof doc === 'string', 'Doc should be a string'); - assert.ok(doc.includes('maintenance') || doc.includes('technicians'), 'Doc should contain expected content'); - }); - - test('Doc should be preserved through full visualization pipeline using SysMLParser', async () => { - // This test replicates the exact flow used in visualizationPanel.ts - const content = `package SmartHome { - part def HomeownersAssociation; - concern 'Minimize maintenance complexity' { - doc - /* - * Reduce maintenance complexity to minimize - * the need for specialized technicians. - */ - stakeholder homeowners : HomeownersAssociation; - } -}`; - - const document = createMockDocument(content); - const sysmlParser = new SysMLParser(); - - // Step 1: Parse with semantic resolution (like visualizationPanel does) - const resolutionResult = await sysmlParser.parseWithSemanticResolution(document); - console.log('[TEST PIPELINE] Resolution result elements:', resolutionResult.elements.length); - - // Step 2: Convert enriched to SysML elements (like visualizationPanel does) - const elements = sysmlParser.convertEnrichedToSysMLElements(resolutionResult.elements); - console.log('[TEST PIPELINE] Converted elements:', elements.length); - - // Find the concern in the converted elements - function findConcern(elements: any[]): any { - for (const el of elements) { - if (el.type === 'concern') { - return el; - } - if (el.children && el.children.length > 0) { - const found = findConcern(el.children); - if (found) return found; - } - } - return null; - } - - const concern = findConcern(elements); - console.log('[TEST PIPELINE] Found concern:', concern ? { - name: concern.name, - type: concern.type, - hasDocAttr: concern.attributes?.has?.('doc'), - docValue: concern.attributes?.get?.('doc')?.substring?.(0, 50) || 'N/A' - } : 'NOT FOUND'); - - assert.ok(concern, 'Concern should be found'); - assert.ok(concern.attributes, 'Concern should have attributes'); - assert.ok(concern.attributes instanceof Map, 'Concern attributes should be a Map'); - assert.ok(concern.attributes.has('doc'), 'Concern should have doc attribute'); - - const doc = concern.attributes.get('doc'); - console.log('[TEST PIPELINE] Doc content:', doc); - assert.ok(typeof doc === 'string', 'Doc should be a string'); - assert.ok(doc.includes('maintenance') || doc.includes('technicians'), 'Doc should contain expected content'); - - // Step 3: Convert to JSON (like visualizationPanel.convertElementsToJSON does) - function convertToJSON(elements: any[]): any[] { - return elements.map((element: any) => { - const attributes: Record = {}; - if (element.attributes && element.attributes instanceof Map) { - element.attributes.forEach((value: any, key: string) => { - attributes[key] = value; - }); - } - return { - name: element.name, - type: element.type, - attributes, - children: convertToJSON(element.children || []) - }; - }); - } - - const jsonElements = convertToJSON(elements); - const jsonConcern = findConcern(jsonElements); - console.log('[TEST PIPELINE] JSON Concern:', jsonConcern ? { - name: jsonConcern.name, - type: jsonConcern.type, - attributes: jsonConcern.attributes - } : 'NOT FOUND'); - - assert.ok(jsonConcern, 'JSON Concern should be found'); - assert.ok(jsonConcern.attributes.doc, 'JSON Concern should have doc'); - assert.ok(jsonConcern.attributes.doc.includes('special'), 'JSON Concern doc should have content'); - }); -}); - -/** - * Helper function to create a mock VS Code TextDocument for testing. - */ -function createMockDocument(content: string): vscode.TextDocument { - const lines = content.split('\n'); - - return { - uri: vscode.Uri.file('test.sysml'), - fileName: 'test.sysml', - isUntitled: false, - languageId: 'sysml', - version: 1, - isDirty: false, - isClosed: false, - getText: (range?: vscode.Range) => { - if (range) { - const selectedLines = lines.slice(range.start.line, range.end.line + 1); - if (selectedLines.length === 1) { - return selectedLines[0].substring(range.start.character, range.end.character); - } - selectedLines[0] = selectedLines[0].substring(range.start.character); - selectedLines[selectedLines.length - 1] = selectedLines[selectedLines.length - 1].substring(0, range.end.character); - return selectedLines.join('\n'); - } - return content; - }, - getWordRangeAtPosition: (position: vscode.Position, regex?: RegExp) => { - const line = lines[position.line]; - if (!line) return undefined; - - const wordRegex = regex || /\w+/; - const match = line.substring(position.character).match(wordRegex); - if (match && match.index === 0) { - return new vscode.Range( - position.line, position.character, - position.line, position.character + match[0].length - ); - } - return undefined; - }, - lineAt: (line: number | vscode.Position) => { - const lineNumber = typeof line === 'number' ? line : line.line; - const lineText = lines[lineNumber] || ''; - return { - lineNumber, - text: lineText, - range: new vscode.Range(lineNumber, 0, lineNumber, lineText.length), - rangeIncludingLineBreak: new vscode.Range(lineNumber, 0, lineNumber + 1, 0), - firstNonWhitespaceCharacterIndex: lineText.search(/\S/), - isEmptyOrWhitespace: /^\s*$/.test(lineText) - }; - }, - offsetAt: (position: vscode.Position) => { - let offset = 0; - for (let i = 0; i < position.line; i++) { - offset += lines[i].length + 1; - } - offset += position.character; - return offset; - }, - positionAt: (offset: number) => { - let currentOffset = 0; - for (let line = 0; line < lines.length; line++) { - if (currentOffset + lines[line].length >= offset) { - return new vscode.Position(line, offset - currentOffset); - } - currentOffset += lines[line].length + 1; - } - return new vscode.Position(lines.length - 1, lines[lines.length - 1].length); - }, - save: () => Promise.resolve(false), - lineCount: lines.length, - validatePosition: (position: vscode.Position) => position, - validateRange: (range: vscode.Range) => range, - encoding: 'utf8', - eol: vscode.EndOfLine.LF - } as vscode.TextDocument; -} diff --git a/src/test/exportScaleLogic.test.ts b/src/test/exportScaleLogic.test.ts index 7d51495..b5e4a03 100644 --- a/src/test/exportScaleLogic.test.ts +++ b/src/test/exportScaleLogic.test.ts @@ -1,14 +1,13 @@ import * as assert from 'assert'; -import { describe, it } from 'mocha'; /** * Standalone unit tests for export functionality that don't require VS Code runtime. * These can be run with: npx mocha --require ts-node/register 'src/test/exportScaleLogic.test.ts' */ -describe('Export Scale Logic Tests (Standalone)', () => { +suite('Export Scale Logic Tests (Standalone)', () => { - describe('Scale Option Generation', () => { + suite('Scale Option Generation', () => { interface ScaleOption { label: string; scale: number; @@ -29,12 +28,12 @@ describe('Export Scale Logic Tests (Standalone)', () => { })); } - it('Should generate 4 scale options', () => { + test('Should generate 4 scale options', () => { const options = generateScaleOptions(2); assert.strictEqual(options.length, 4, 'Should have 4 scale options'); }); - it('Should mark default scale with checkmark', () => { + test('Should mark default scale with checkmark', () => { const options = generateScaleOptions(2); const option2x = options.find(o => o.scale === 2); @@ -49,7 +48,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.ok(!option4x?.label.includes('✓'), '4x should not have checkmark'); }); - it('Should correctly mark 1x as default when configured', () => { + test('Should correctly mark 1x as default when configured', () => { const options = generateScaleOptions(1); const option1x = options.find(o => o.scale === 1); @@ -59,21 +58,21 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.ok(!option2x?.label.includes('✓'), '2x should not have checkmark'); }); - it('Should correctly mark 3x as default when configured', () => { + test('Should correctly mark 3x as default when configured', () => { const options = generateScaleOptions(3); const option3x = options.find(o => o.scale === 3); assert.ok(option3x?.label.includes('✓'), '3x option should have checkmark when default'); }); - it('Should correctly mark 4x as default when configured', () => { + test('Should correctly mark 4x as default when configured', () => { const options = generateScaleOptions(4); const option4x = options.find(o => o.scale === 4); assert.ok(option4x?.label.includes('✓'), '4x option should have checkmark when default'); }); - it('Each option should have correct scale value', () => { + test('Each option should have correct scale value', () => { const options = generateScaleOptions(2); assert.strictEqual(options[0].scale, 1); @@ -82,7 +81,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.strictEqual(options[3].scale, 4); }); - it('Each option should have descriptive label', () => { + test('Each option should have descriptive label', () => { const options = generateScaleOptions(2); assert.ok(options[0].label.includes('Original'), '1x should mention Original'); @@ -91,7 +90,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.ok(options[3].label.includes('Quadruple'), '4x should mention Quadruple'); }); - it('Each option should have description', () => { + test('Each option should have description', () => { const options = generateScaleOptions(2); options.forEach(opt => { @@ -100,7 +99,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { }); }); - describe('PNG Export Dimension Calculations', () => { + suite('PNG Export Dimension Calculations', () => { function calculateExportDimensions(width: number, height: number, scale: number): { width: number; height: number } { return { width: width * scale, @@ -108,62 +107,62 @@ describe('Export Scale Logic Tests (Standalone)', () => { }; } - it('1x scale should keep original dimensions', () => { + test('1x scale should keep original dimensions', () => { const result = calculateExportDimensions(800, 600, 1); assert.strictEqual(result.width, 800); assert.strictEqual(result.height, 600); }); - it('2x scale should double dimensions', () => { + test('2x scale should double dimensions', () => { const result = calculateExportDimensions(800, 600, 2); assert.strictEqual(result.width, 1600); assert.strictEqual(result.height, 1200); }); - it('3x scale should triple dimensions', () => { + test('3x scale should triple dimensions', () => { const result = calculateExportDimensions(800, 600, 3); assert.strictEqual(result.width, 2400); assert.strictEqual(result.height, 1800); }); - it('4x scale should quadruple dimensions', () => { + test('4x scale should quadruple dimensions', () => { const result = calculateExportDimensions(800, 600, 4); assert.strictEqual(result.width, 3200); assert.strictEqual(result.height, 2400); }); - it('Should handle HD dimensions (1920x1080)', () => { + test('Should handle HD dimensions (1920x1080)', () => { const result = calculateExportDimensions(1920, 1080, 2); assert.strictEqual(result.width, 3840); assert.strictEqual(result.height, 2160); }); - it('Should handle 4K dimensions at 1x', () => { + test('Should handle 4K dimensions at 1x', () => { const result = calculateExportDimensions(3840, 2160, 1); assert.strictEqual(result.width, 3840); assert.strictEqual(result.height, 2160); }); - it('Should handle small dimensions', () => { + test('Should handle small dimensions', () => { const result = calculateExportDimensions(100, 50, 4); assert.strictEqual(result.width, 400); assert.strictEqual(result.height, 200); }); - it('Should handle square dimensions', () => { + test('Should handle square dimensions', () => { const result = calculateExportDimensions(500, 500, 3); assert.strictEqual(result.width, 1500); assert.strictEqual(result.height, 1500); }); - it('Should handle portrait orientation', () => { + test('Should handle portrait orientation', () => { const result = calculateExportDimensions(600, 800, 2); assert.strictEqual(result.width, 1200); assert.strictEqual(result.height, 1600); }); }); - describe('Export Message Format', () => { + suite('Export Message Format', () => { interface ExportMessage { command: string; format: string; @@ -178,7 +177,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { }; } - it('PNG export message should include scale', () => { + test('PNG export message should include scale', () => { const message = createExportMessage('PNG', 3); assert.strictEqual(message.command, 'export'); @@ -186,7 +185,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.strictEqual(message.scale, 3); }); - it('SVG export message should include default scale', () => { + test('SVG export message should include default scale', () => { const message = createExportMessage('SVG'); assert.strictEqual(message.command, 'export'); @@ -194,17 +193,17 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.strictEqual(message.scale, 2); }); - it('Format should be lowercased from uppercase', () => { + test('Format should be lowercased from uppercase', () => { const message = createExportMessage('PNG', 2); assert.strictEqual(message.format, 'png'); }); - it('Format should be lowercased from mixed case', () => { + test('Format should be lowercased from mixed case', () => { const message = createExportMessage('Png', 2); assert.strictEqual(message.format, 'png'); }); - it('All valid scale values should work in message', () => { + test('All valid scale values should work in message', () => { for (const scale of [1, 2, 3, 4]) { const message = createExportMessage('PNG', scale); assert.strictEqual(message.scale, scale, `Scale ${scale} should be preserved`); @@ -212,74 +211,74 @@ describe('Export Scale Logic Tests (Standalone)', () => { }); }); - describe('Webview Data Attribute Parsing', () => { + suite('Webview Data Attribute Parsing', () => { function parseScaleFromDataAttribute(dataScale: string | null): number { return parseInt(dataScale || '2') || 2; } - it('Should parse "1" as 1', () => { + test('Should parse "1" as 1', () => { assert.strictEqual(parseScaleFromDataAttribute('1'), 1); }); - it('Should parse "2" as 2', () => { + test('Should parse "2" as 2', () => { assert.strictEqual(parseScaleFromDataAttribute('2'), 2); }); - it('Should parse "3" as 3', () => { + test('Should parse "3" as 3', () => { assert.strictEqual(parseScaleFromDataAttribute('3'), 3); }); - it('Should parse "4" as 4', () => { + test('Should parse "4" as 4', () => { assert.strictEqual(parseScaleFromDataAttribute('4'), 4); }); - it('Should default to 2 for null', () => { + test('Should default to 2 for null', () => { assert.strictEqual(parseScaleFromDataAttribute(null), 2); }); - it('Should default to 2 for empty string', () => { + test('Should default to 2 for empty string', () => { assert.strictEqual(parseScaleFromDataAttribute(''), 2); }); - it('Should default to 2 for non-numeric string', () => { + test('Should default to 2 for non-numeric string', () => { assert.strictEqual(parseScaleFromDataAttribute('abc'), 2); }); - it('Should default to 2 for "NaN"', () => { + test('Should default to 2 for "NaN"', () => { assert.strictEqual(parseScaleFromDataAttribute('NaN'), 2); }); - it('Should handle whitespace-padded values', () => { + test('Should handle whitespace-padded values', () => { // parseInt handles leading whitespace assert.strictEqual(parseScaleFromDataAttribute(' 3'), 3); }); }); - describe('Export File Size Estimation', () => { + suite('Export File Size Estimation', () => { // Rough estimation: PNG file size scales roughly with pixel count function estimateFileSizeMultiplier(scale: number): number { // File size scales roughly with area (pixels), which is scale^2 return scale * scale; } - it('1x should have multiplier of 1', () => { + test('1x should have multiplier of 1', () => { assert.strictEqual(estimateFileSizeMultiplier(1), 1); }); - it('2x should have multiplier of 4', () => { + test('2x should have multiplier of 4', () => { assert.strictEqual(estimateFileSizeMultiplier(2), 4); }); - it('3x should have multiplier of 9', () => { + test('3x should have multiplier of 9', () => { assert.strictEqual(estimateFileSizeMultiplier(3), 9); }); - it('4x should have multiplier of 16', () => { + test('4x should have multiplier of 16', () => { assert.strictEqual(estimateFileSizeMultiplier(4), 16); }); }); - describe('Canvas Scale Context Setup', () => { + suite('Canvas Scale Context Setup', () => { // Tests for the canvas scaling pattern used in exportPNG function calculateCanvasSetup(svgWidth: number, svgHeight: number, scale: number) { @@ -292,7 +291,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { }; } - it('Setup for 800x600 at 2x', () => { + test('Setup for 800x600 at 2x', () => { const setup = calculateCanvasSetup(800, 600, 2); assert.strictEqual(setup.canvasWidth, 1600); @@ -302,7 +301,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.strictEqual(setup.drawHeight, 600); }); - it('Setup for 1920x1080 at 4x', () => { + test('Setup for 1920x1080 at 4x', () => { const setup = calculateCanvasSetup(1920, 1080, 4); assert.strictEqual(setup.canvasWidth, 7680); @@ -312,7 +311,7 @@ describe('Export Scale Logic Tests (Standalone)', () => { assert.strictEqual(setup.drawHeight, 1080); }); - it('Context scale matches requested scale', () => { + test('Context scale matches requested scale', () => { for (const scale of [1, 2, 3, 4]) { const setup = calculateCanvasSetup(100, 100, scale); assert.strictEqual(setup.contextScale, scale); diff --git a/src/test/parser.test.ts b/src/test/parser.test.ts deleted file mode 100644 index 85eb050..0000000 --- a/src/test/parser.test.ts +++ /dev/null @@ -1,270 +0,0 @@ -import * as assert from 'assert'; -import * as vscode from 'vscode'; -import { SysMLParser } from '../parser/sysmlParser'; - -suite('SysML Parser Test Suite', () => { - vscode.window.showInformationMessage('Running SysML Parser tests...'); - - let parser: SysMLParser; - - setup(() => { - parser = new SysMLParser(); - }); - - test('Parse simple package', async () => { - const content = `package TestPackage { -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].name, 'TestPackage'); - assert.strictEqual(elements[0].type, 'package'); - }); - - test('Parse part definition', async () => { - const content = `part def Vehicle { - attribute mass : Real; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - // Basic functional tests - verify parser doesn't crash and returns reasonable results - assert.ok(Array.isArray(elements)); - assert.ok(elements.length >= 1); - - const mainElement = elements[0]; - assert.ok(mainElement.name); - assert.ok(mainElement.type); - assert.ok(Array.isArray(mainElement.children)); - assert.ok(Array.isArray(mainElement.relationships)); - }); - - test('Parse hierarchical structure', async () => { - const content = `package System { - part def Component { - port myInterface : Interface; - } -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].name, 'System'); - assert.strictEqual(elements[0].children.length, 1); - assert.strictEqual(elements[0].children[0].name, 'Component'); - assert.strictEqual(elements[0].children[0].children.length, 1); - assert.strictEqual(elements[0].children[0].children[0].name, 'myInterface'); - assert.strictEqual(elements[0].children[0].children[0].type, 'port'); - }); - - test('Parse specialization relationship', async () => { - const content = `part def Engine :> PowerSource { -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].relationships.length, 1); - assert.strictEqual(elements[0].relationships[0].type, 'specializes'); - assert.strictEqual(elements[0].relationships[0].target, 'PowerSource'); - }); - - test('Parse multiple relationships', async () => { - const content = `part def MyPart :> BasePart { - attribute attr1 subsets baseAttr - part ref1 references OtherPart -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - const relationships = parser.getRelationships(); - - // Basic functional tests - verify parser handles complex syntax - assert.ok(Array.isArray(elements)); - assert.ok(Array.isArray(relationships)); - // Relationships may or may not be detected depending on implementation - }); - - test('Parse requirement', async () => { - const content = `requirement def PerformanceReq { - subject vehicle : Vehicle; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].name, 'PerformanceReq'); - assert.strictEqual(elements[0].type, 'requirement def'); - }); - - test('Parse action', async () => { - const content = `action def StartEngine { - in fuelLevel : Real; - out running : Boolean; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].name, 'StartEngine'); - assert.strictEqual(elements[0].type, 'action'); - }); - - test('Parse state definition', async () => { - const content = `state def SystemState { - entry start; - exit stop; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - // Basic functional tests - verify parser handles state definitions - assert.ok(Array.isArray(elements)); - assert.ok(elements.length >= 1); - assert.ok(elements[0].name); - assert.ok(elements[0].type); - }); - - test('Parse use case', async () => { - const content = `use case LoginUser { -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - // Basic functional tests - verify parser handles use cases - assert.ok(Array.isArray(elements)); - assert.ok(elements.length >= 1); - assert.ok(elements[0].name); - assert.ok(elements[0].type); - }); - - test('Find element by name', async () => { - const content = `package TestPkg { - part def Part1 { - } - part def Part2 { - } -}`; - const document = await createTestDocument(content); - parser.parse(document); - - const element = parser.findElement('Part1'); - assert.ok(element); - assert.strictEqual(element.name, 'Part1'); - }); - - test('Get all elements', async () => { - const content = `package TestPkg { - part def Part1 { - } - part def Part2 { - } -}`; - const document = await createTestDocument(content); - parser.parse(document); - - const elements = parser.getElements(); - assert.ok(elements.size >= 3); // Package + 2 parts - }); - - test('Handle empty document', async () => { - const content = ''; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 0); - }); - - test('Handle comments', async () => { - const content = `// This is a comment -package TestPkg { - // Another comment - part def Part1 { - } -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].name, 'TestPkg'); - }); - - test('Parse abstract modifier', async () => { - const content = `abstract part def AbstractPart { -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - assert.strictEqual(elements.length, 1); - assert.strictEqual(elements[0].name, 'AbstractPart'); - }); - - test('Parse connection', async () => { - const content = `connection def PowerConnection { - end source : PowerPort; - end target : PowerPort; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - // Basic functional tests - verify parser handles connections - assert.ok(Array.isArray(elements)); - assert.ok(elements.length >= 1); - assert.ok(elements[0].name); - assert.ok(elements[0].type); - }); - - test('Parse connection usage', async () => { - const content = `package Test { - part a : A; - part b : B; - connection dataLink connect a to b; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - // Verify connection usage is parsed - assert.ok(Array.isArray(elements)); - // Find the connection in the parsed elements - function findConnection(elems: any[]): any { - for (const e of elems) { - if (e.type === 'connection') return e; - if (e.children) { - const found = findConnection(e.children); - if (found) return found; - } - } - return null; - } - const conn = findConnection(elements); - assert.ok(conn, 'Should find a connection element'); - assert.strictEqual(conn.type, 'connection'); - // Connection should have from/to attributes from inline connect syntax - const fromAttr = conn.attributes?.get?.('from'); - const toAttr = conn.attributes?.get?.('to'); - assert.ok(fromAttr || toAttr || conn.children.length >= 0, - 'Connection should have from/to attributes or endpoint children'); - }); - - test('Parse interface', async () => { - const content = `interface def ControlInterface { - attribute signalType : String; -}`; - const document = await createTestDocument(content); - const elements = parser.parse(document); - - // Basic functional tests - verify parser handles interfaces - assert.ok(Array.isArray(elements)); - assert.ok(elements.length >= 1); - assert.ok(elements[0].name); - assert.ok(elements[0].type); - }); -}); - -async function createTestDocument(content: string): Promise { - const document = await vscode.workspace.openTextDocument({ - language: 'sysml', - content: content - }); - return document; -} diff --git a/src/test/phase4Verification.test.ts b/src/test/phase4Verification.test.ts deleted file mode 100644 index f971219..0000000 --- a/src/test/phase4Verification.test.ts +++ /dev/null @@ -1,125 +0,0 @@ -/** - * Phase 4 Verification Test: End-to-end test for parser modernization - * Tests camera-states.sysml State Machine view with semantic resolution - */ - -import * as assert from 'assert'; -import * as path from 'path'; -import * as vscode from 'vscode'; -import { Relationship, SysMLElement, SysMLParser } from '../parser/sysmlParser'; - -suite('Phase 4 Verification Tests', () => { - let parser: SysMLParser; - - suiteSetup(async function() { - this.timeout(30000); - parser = new SysMLParser(); - }); - - test('Library Service available via parser (when initialized)', async function() { - // Library service is now managed by the LSP server for language features. - // The local parser may optionally use it for enhanced visualization. - // This test verifies the parser works without it. - this.skip(); - }); - - test('camera-states.sysml: State Machine view should show 11 states', async function() { - this.timeout(10000); - - const samplePath = path.join(__dirname, '../../samples/Camera Example/camera-states.sysml'); - const uri = vscode.Uri.file(samplePath); - const document = await vscode.workspace.openTextDocument(uri); - - // Parse with semantic resolution - const resolutionResult = await parser.parseWithSemanticResolution(document); - const elements = parser.convertEnrichedToSysMLElements(resolutionResult.elements); - - // Find state machine elements - const stateElements = findElementsByType(elements, 'state'); - - console.log(`Found ${stateElements.length} state elements`); - console.log('State names:', stateElements.map(s => s.name).join(', ')); - - // Verify 11 states exist (based on user's original report) - assert.ok(stateElements.length >= 11, - `Expected at least 11 states, found ${stateElements.length}`); - }); - - test('camera-states.sysml: State Machine should have transitions', async function() { - this.timeout(10000); - - const samplePath = path.join(__dirname, '../../samples/Camera Example/camera-states.sysml'); - const uri = vscode.Uri.file(samplePath); - const document = await vscode.workspace.openTextDocument(uri); - - // Parse and get relationships - const _resolutionResult = await parser.parseWithSemanticResolution(document); - const relationships = parser.getRelationships(); - - // Find transition relationships - const transitions = relationships.filter((rel: Relationship) => - rel.type === 'transition' || - rel.type === 'succession' || - rel.type === 'then' - ); - - console.log(`Found ${transitions.length} transitions`); - console.log('Transitions:', transitions.map((t: Relationship) => `${t.source} -> ${t.target}`).join(', ')); - - // Verify transitions exist (user reported 12 transitions expected) - assert.ok(transitions.length > 0, - 'State machine should have at least one transition'); - }); - - test('Semantic resolver: Type resolution against library', async function() { - // Library service is now managed by the LSP server. - // Semantic resolution tests belong in the sysml-v2-lsp test suite. - this.skip(); - }); - - test('Pure ANTLR pipeline: No regex fallback', async function() { - this.timeout(10000); - - const samplePath = path.join(__dirname, '../../samples/vehicle-model.sysml'); - const uri = vscode.Uri.file(samplePath); - const document = await vscode.workspace.openTextDocument(uri); - - // Parse document - const elements = parser.parse(document); - - // Verify elements were parsed - assert.ok(elements.length > 0, 'Should parse elements from vehicle-model.sysml'); - - // Check for error elements (ANTLR parse failures) - const errorElements = elements.filter((el: SysMLElement) => el.type === 'error'); - console.log(`Parse errors: ${errorElements.length} / ${elements.length}`); - - // Most elements should parse successfully - const successRate = (elements.length - errorElements.length) / elements.length; - assert.ok(successRate >= 0.7, - `Success rate should be >= 70%, got ${(successRate * 100).toFixed(1)}%`); - }); - - test('Library cache: Verification', async function() { - // Library cache operations are now managed by the LSP server. - this.skip(); - }); -}); - -/** - * Helper: Recursively find all elements of a given type - */ -function findElementsByType(elements: any[], type: string): any[] { - const results: any[] = []; - - for (const element of elements) { - if (element.type === type) { - results.push(element); - } - if (element.children && element.children.length > 0) { - results.push(...findElementsByType(element.children, type)); - } - } - - return results; -} diff --git a/src/test/register-vscode-mock.ts b/src/test/register-vscode-mock.ts new file mode 100644 index 0000000..714e0ef --- /dev/null +++ b/src/test/register-vscode-mock.ts @@ -0,0 +1,23 @@ +/** + * Mocha --require hook that intercepts `require('vscode')` and returns + * the lightweight mock in src/test/vscode-mock.ts. + * + * Usage: mocha --require ts-node/register --require src/test/register-vscode-mock.ts ... + */ + +const Module = require('module'); + +const originalResolveFilename = (Module as any)._resolveFilename; + +(Module as any)._resolveFilename = function ( + request: string, + parent: any, + isMain: boolean, + options: any +) { + if (request === 'vscode') { + // Resolve to our mock module instead + return require.resolve('./vscode-mock'); + } + return originalResolveFilename.call(this, request, parent, isMain, options); +}; diff --git a/src/test/visualizationInteraction.test.ts b/src/test/visualizationInteraction.test.ts deleted file mode 100644 index b11e3f0..0000000 --- a/src/test/visualizationInteraction.test.ts +++ /dev/null @@ -1,356 +0,0 @@ -import * as assert from 'assert'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as vscode from 'vscode'; -import { SysMLParser } from '../parser/sysmlParser'; - -/** - * Tests for visualization interaction functionality including: - * - Node highlighting (yellow selection) - * - Inline editing support - * - Element navigation (jumpToElement) - * - * Note: The actual D3.js rendering and click handlers are in the webview, - * which cannot be directly unit tested. These tests verify that: - * 1. Parsed elements have the required properties for interaction - * 2. Element names are available for data-element-name attributes - * 3. Elements have location info for navigation (jumpToElement) - */ - -suite('Visualization Interaction Tests', () => { - let parser: SysMLParser; - - setup(() => { - parser = new SysMLParser(); - }); - - suite('Node Selection and Highlighting', () => { - test('Elements should have unique names for highlighting', async () => { - const content = ` -package SmartHome { - part def Room { - attribute temperature : Real; - } - - part def Sensor { - attribute value : Real; - } - - part livingRoom : Room { - part tempSensor : Sensor; - } - - part bedroom : Room { - part tempSensor : Sensor; - } -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // All elements should have names (required for data-element-name attribute) - const elementsWithNames = flatElements.filter(el => el.name && el.name.length > 0); - assert.ok(elementsWithNames.length > 0, 'Should have elements with names'); - - // Log element names for verification - console.log('Elements with names for highlighting:'); - elementsWithNames.forEach(el => { - console.log(` - ${el.name} (${el.type})`); - }); - - // Verify we found the expected elements - const expectedNames = ['SmartHome', 'Room', 'Sensor', 'livingRoom', 'bedroom', 'tempSensor']; - expectedNames.forEach(name => { - const found = flatElements.find(el => el.name === name); - assert.ok(found, `Should find element named '${name}'`); - }); - }); - - test('Elements should have type information for status bar display', async () => { - const content = ` -package TestPackage { - part def PartDefinition; - port def PortDefinition; - action def ActionDefinition; - state def StateDefinition; - - part myPart : PartDefinition; -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // All elements should have type info (used in status bar: "Selected: name [type]") - const elementsWithType = flatElements.filter(el => el.type && el.type.length > 0); - assert.ok(elementsWithType.length > 0, 'Should have elements with type info'); - - console.log('Elements with type info for status bar:'); - elementsWithType.forEach(el => { - console.log(` - ${el.name} [${el.type}]`); - }); - - // Verify we have a mix of element types (definitions and usages) - // Note: Parser may return simplified types like 'port' instead of 'port def' - const hasPartDef = flatElements.some(el => - el.type && (el.type.toLowerCase().includes('part def') || el.name === 'PartDefinition') - ); - const hasPart = flatElements.some(el => - el.type && el.type.toLowerCase() === 'part' - ); - - assert.ok(hasPartDef, 'Should find part definition'); - assert.ok(hasPart, 'Should find part usage'); - }); - }); - - suite('Inline Editing Support', () => { - test('Elements should have location info for source navigation', async () => { - const content = ` -package EditablePackage { - part def Vehicle { - attribute speed : Real; - } - - part car : Vehicle; -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // Elements may have location info in different formats - // Check for location object or startLine/startColumn properties - const elementsWithLocation = flatElements.filter(el => - (el.location && typeof el.location.line === 'number') || - (typeof el.startLine === 'number') || - (el.range && typeof el.range.start === 'object') - ); - - console.log('Elements with location info for inline editing:'); - flatElements.forEach(el => { - const loc = el.location || el.range?.start || { line: el.startLine, character: el.startColumn }; - if (loc && (loc.line !== undefined || el.startLine !== undefined)) { - console.log(` - ${el.name} at line ${loc.line ?? el.startLine}`); - } else { - console.log(` - ${el.name} (no location)`); - } - }); - - // Note: Not all parser configurations provide location info - // The test passes if we have named elements that can be navigated to - // via text search as fallback - const namedElements = flatElements.filter(el => el.name && el.name.length > 0); - assert.ok(namedElements.length > 0, 'Should have named elements for navigation'); - - // If location info is available, verify it - if (elementsWithLocation.length > 0) { - console.log(`${elementsWithLocation.length} elements have location info`); - } else { - console.log('Location info not available - navigation uses text search fallback'); - } - }); - - test('Element names should be valid identifiers for renaming', async () => { - const content = ` -package RenameTest { - part def MyDefinition; - part myUsage : MyDefinition; - attribute myAttribute : Real; -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // All element names should be valid SysML identifiers - const identifierRegex = /^[a-zA-Z_][a-zA-Z0-9_]*$/; - - const namedElements = flatElements.filter(el => el.name && el.name.length > 0); - namedElements.forEach(el => { - // Most names should be valid identifiers - // Some might have special characters in edge cases - console.log(` Element: '${el.name}' - valid identifier: ${identifierRegex.test(el.name)}`); - }); - - // At least the main elements should have valid names - assert.ok(identifierRegex.test('RenameTest'), 'Package name should be valid'); - assert.ok(identifierRegex.test('MyDefinition'), 'Definition name should be valid'); - assert.ok(identifierRegex.test('myUsage'), 'Usage name should be valid'); - }); - }); - - suite('JumpToElement Navigation', () => { - test('Elements should be findable by name for jumpToElement', async function() { - this.timeout(30000); // Increase timeout for file I/O - const samplesPath = path.join(__dirname, '..', '..', 'samples', 'smart-home.sysml'); - - if (!fs.existsSync(samplesPath)) { - console.log('Skipping test - smart-home.sysml not found'); - return; - } - - const content = fs.readFileSync(samplesPath, 'utf8'); - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // Build a name-to-element map (similar to what visualizationPanel does) - const elementMap = new Map(); - flatElements.forEach(el => { - if (el.name) { - elementMap.set(el.name, el); - } - }); - - console.log(`Element map size: ${elementMap.size}`); - console.log('Sample elements in map:'); - let count = 0; - elementMap.forEach((el, name) => { - if (count < 10) { - console.log(` - ${name} (${el.type})`); - count++; - } - }); - - // Should be able to look up elements by name - assert.ok(elementMap.size > 0, 'Should have elements in the map'); - }); - - test('Elements should have consistent naming for cross-view navigation', async () => { - const content = ` -package NavigationTest { - part def Controller { - port controlPort; - } - - part def Device { - port devicePort; - } - - part controller : Controller; - part device : Device; - - connection controllerToDevice connect controller.controlPort to device.devicePort; -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // Elements should have the same name across different views - // This is important for highlighting the same element when switching views - const elementsByName = new Map(); - flatElements.forEach(el => { - if (el.name) { - if (!elementsByName.has(el.name)) { - elementsByName.set(el.name, []); - } - elementsByName.get(el.name)?.push(el); - } - }); - - console.log('Elements by name (for cross-view consistency):'); - elementsByName.forEach((els, name) => { - if (els.length > 1) { - console.log(` - ${name}: ${els.length} elements (types: ${els.map(e => e.type).join(', ')})`); - } - }); - - // Key elements should be findable - assert.ok(elementsByName.has('Controller'), 'Should find Controller'); - assert.ok(elementsByName.has('Device'), 'Should find Device'); - assert.ok(elementsByName.has('controller'), 'Should find controller instance'); - assert.ok(elementsByName.has('device'), 'Should find device instance'); - }); - }); - - suite('View-Specific Element Classes', () => { - test('Part definitions and usages should be distinguishable', async () => { - const content = ` -package PartTest { - part def Engine; - part def Wheel; - - part engine : Engine; - part wheels : Wheel [4]; -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // Definitions should have type containing 'def' - const definitions = flatElements.filter(el => - el.type && el.type.toLowerCase().includes('def') - ); - - // Usages should be parts without 'def' in type - const usages = flatElements.filter(el => { - const typeLower = (el.type || '').toLowerCase(); - return typeLower.includes('part') && !typeLower.includes('def'); - }); - - console.log('Definitions (dashed border in viz):'); - definitions.forEach(el => console.log(` - ${el.name} [${el.type}]`)); - - console.log('Usages (solid border in viz):'); - usages.forEach(el => console.log(` - ${el.name} [${el.type}]`)); - - assert.ok(definitions.length >= 2, 'Should find at least 2 definitions'); - assert.ok(usages.length >= 2, 'Should find at least 2 usages'); - }); - - test('IBD parts should have parent-child relationships', async () => { - const content = ` -package IBDTest { - part def System { - part subsystemA; - part subsystemB; - - port inputPort; - port outputPort; - } - - part mySystem : System; -}`; - const document = await createTestDocument(content); - const elements = parser.parseForVisualization(document); - const flatElements = flattenElements(elements); - - // Find the System definition - const system = flatElements.find(el => el.name === 'System'); - assert.ok(system, 'Should find System definition'); - assert.ok(system?.children && system.children.length > 0, 'System should have children'); - - console.log('System children (for IBD view):'); - system?.children?.forEach((child: any) => { - console.log(` - ${child.name} [${child.type}]`); - }); - - // Should have subsystems and ports - const subsystems = system?.children?.filter((c: any) => c.name?.startsWith('subsystem')); - const ports = system?.children?.filter((c: any) => c.type?.toLowerCase().includes('port')); - - assert.ok(subsystems && subsystems.length >= 2, 'Should find subsystems'); - assert.ok(ports && ports.length >= 2, 'Should find ports'); - }); - }); -}); - -// Helper function to flatten hierarchical elements -function flattenElements(elements: any[]): any[] { - const result: any[] = []; - function visit(el: any) { - result.push(el); - if (el.children) { - el.children.forEach(visit); - } - } - elements.forEach(visit); - return result; -} - -// Helper function to create test documents -async function createTestDocument(content: string): Promise { - const document = await vscode.workspace.openTextDocument({ - language: 'sysml', - content: content - }); - return document; -} diff --git a/src/test/visualizationPanel.test.ts b/src/test/visualizationPanel.test.ts deleted file mode 100644 index 2adb921..0000000 --- a/src/test/visualizationPanel.test.ts +++ /dev/null @@ -1,790 +0,0 @@ -import * as assert from 'assert'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as vscode from 'vscode'; -import { SysMLElement, SysMLParser } from '../parser/sysmlParser'; - -// Helper function to flatten hierarchical elements into a flat list -function flattenElements(elements: SysMLElement[]): SysMLElement[] { - const result: SysMLElement[] = []; - function visit(el: SysMLElement) { - result.push(el); - if (el.children) { - el.children.forEach(visit); - } - } - elements.forEach(visit); - return result; -} - -suite('VisualizationPanel State Filtering Tests', () => { - let parser: SysMLParser; - - setup(() => { - parser = new SysMLParser(); - }); - - test('Parse camera-states.sysml with ANTLR parser', async () => { - // Read file directly from samples folder - const samplesPath = path.join(__dirname, '..', '..', 'samples', 'Camera Example', 'camera-states.sysml'); - const content = fs.readFileSync(samplesPath, 'utf8'); - const document = await createTestDocument(content); - - console.log('=== DEBUG: Test 1 starting ==='); - console.log(`Content length: ${content.length}`); - console.log(`Document text length: ${document.getText().length}`); - - // Parse with ANTLR - const hierarchicalElements = parser.parseForVisualization(document); - console.log(`Hierarchical elements returned: ${hierarchicalElements.length}`); - if (hierarchicalElements.length > 0) { - console.log(`First element: ${hierarchicalElements[0].name} (${hierarchicalElements[0].type})`); - } - - // Flatten to get all elements including nested ones - const elements = flattenElements(hierarchicalElements); - - console.log('=== ANTLR Parser Test Results ==='); - console.log(`Total elements parsed: ${elements.length}`); - - // Log all element types - elements.forEach((el, idx) => { - console.log(` [${idx}] ${el.name} (type: ${el.type})`); - }); - - // Filter states using the same logic as visualizationPanel - const stateElements = elements.filter(el => el.type && ( - el.type.includes('state') || - el.type.includes('State') - )); - - console.log(`\nState elements found: ${stateElements.length}`); - stateElements.forEach((el, idx) => { - console.log(` [${idx}] ${el.name} (type: ${el.type})`); - }); - - // Expected states from camera-states.sysml: - // 1. CameraState (state def) - // 2. cameraPowerStates (main state machine) - // 3. off - // 4. initializing - // 5. ready - // 6. idle (nested in ready) - // 7. focusing (nested in ready) - // 8. capturing (nested in ready) - // 9. processing (nested in ready) - // 10. reviewing (nested in ready) - // 11. lowBattery - - assert.ok(elements.length >= 10, `Expected at least 10 elements, got ${elements.length}`); - assert.ok(stateElements.length >= 10, `Expected at least 10 state elements, got ${stateElements.length}`); - - // Check for specific expected states - const expectedStateNames = [ - 'CameraState', - 'cameraPowerStates', - 'off', - 'initializing', - 'ready', - 'idle', - 'focusing', - 'capturing', - 'processing', - 'reviewing', - 'lowBattery' - ]; - - const foundStateNames = stateElements.map(el => el.name); - const missingStates = expectedStateNames.filter(name => !foundStateNames.includes(name)); - - if (missingStates.length > 0) { - console.log(`\nMissing expected states: ${missingStates.join(', ')}`); - } - - assert.strictEqual(missingStates.length, 0, - `Missing states: ${missingStates.join(', ')}. Found: ${foundStateNames.join(', ')}`); - }); - - test('Parse camera-states.sysml', async () => { - const samplesPath = path.join(__dirname, '..', '..', 'samples', 'Camera Example', 'camera-states.sysml'); - const content = fs.readFileSync(samplesPath, 'utf8'); - const document = await createTestDocument(content); - - const hierarchicalElements = parser.parseForVisualization(document); - const elements = flattenElements(hierarchicalElements); - - console.log('=== Parser Test Results ==='); - console.log(`Total elements parsed: ${elements.length}`); - - const stateElements = elements.filter(el => el.type && ( - el.type.includes('state') || - el.type.includes('State') - )); - - console.log(`State elements found: ${stateElements.length}`); - stateElements.forEach((el, idx) => { - console.log(` [${idx}] ${el.name} (type: ${el.type})`); - }); - - // Parser should find states - assert.ok(stateElements.length >= 10, - `Parser should find at least 10 states, got ${stateElements.length}`); - }); - - test('Parse state transitions from camera-states.sysml', async () => { - const samplesPath = path.join(__dirname, '..', '..', 'samples', 'Camera Example', 'camera-states.sysml'); - const content = fs.readFileSync(samplesPath, 'utf8'); - const document = await createTestDocument(content); - - // Parse with ANTLR - const hierarchicalElements = parser.parseForVisualization(document); - const elements = flattenElements(hierarchicalElements); - - console.log('=== State Transitions Test ==='); - console.log(`Total elements: ${elements.length}`); - - // Transitions are stored as elements with type 'transition', not in relationships - const transitions = elements.filter(el => - el.type && el.type.includes('transition') - ); - - console.log(`Transitions found: ${transitions.length}`); - transitions.forEach((el, idx) => { - const fromState = el.attributes?.get('fromState') || 'unknown'; - const toState = el.attributes?.get('toState') || 'unknown'; - console.log(` [${idx}] ${el.name} (from: ${fromState}, to: ${toState})`); - }); - - // Expected transitions from camera-states.sysml: - // - off_to_initializing - // - initializing_to_ready - // - idle_to_focusing - // - focusing_to_capturing - // - capturing_to_processing - // - processing_to_reviewing - // - reviewing_to_idle - // - focusing_to_idle - // - ready_to_lowBattery - // - lowBattery_to_ready - // - ready_to_off - // - lowBattery_to_off - // Total: at least 12 transitions - - assert.ok(transitions.length >= 12, - `Expected at least 12 transitions, got ${transitions.length}`); - }); - - test('Verify state element attributes', async () => { - const samplesPath = path.join(__dirname, '..', '..', 'samples', 'Camera Example', 'camera-states.sysml'); - const content = fs.readFileSync(samplesPath, 'utf8'); - const document = await createTestDocument(content); - - const hierarchicalElements = parser.parseForVisualization(document); - const elements = flattenElements(hierarchicalElements); - - const stateElements = elements.filter(el => el.type && ( - el.type.includes('state') || - el.type.includes('State') - )); - - console.log('=== State Attributes Test ==='); - - // Check for states with entry/exit/do actions - // Note: entry/do/exit actions are parsed as child elements, not as attributes - const initializingState = stateElements.find(el => el.name === 'initializing'); - if (initializingState) { - console.log(`initializing state children: ${initializingState.children?.length || 0}`); - } - - const capturingState = stateElements.find(el => el.name === 'capturing'); - if (capturingState) { - console.log(`capturing state children: ${capturingState.children?.length || 0}`); - - // Entry/do/exit actions are child elements, not attributes - const entryActions = (capturingState.children || []).filter(c => c.type === 'entry'); - const doActions = (capturingState.children || []).filter(c => c.type === 'do'); - const exitActions = (capturingState.children || []).filter(c => c.type === 'exit'); - - console.log(` entry actions: ${entryActions.length}, do actions: ${doActions.length}, exit actions: ${exitActions.length}`); - - // capturing state should have entry, do, and exit actions as children - // Note: These may be parsed as separate elements; verify at least some are present - const hasActions = entryActions.length > 0 || doActions.length > 0 || exitActions.length > 0 || - (capturingState.children && capturingState.children.length > 0); - assert.ok(hasActions, 'capturing state should have entry/do/exit actions or children'); - } - - // Check for nested states - const readyState = stateElements.find(el => el.name === 'ready'); - if (readyState) { - console.log(`ready state children count: ${readyState.children?.length || 0}`); - - // ready should have nested states: idle, focusing, capturing, processing, reviewing - assert.ok(readyState.children && readyState.children.length >= 5, - 'ready state should have at least 5 nested states'); - } - }); - - test('Parser results consistency', async () => { - const samplesPath = path.join(__dirname, '..', '..', 'samples', 'Camera Example', 'camera-states.sysml'); - const content = fs.readFileSync(samplesPath, 'utf8'); - const document = await createTestDocument(content); - - const hierarchical = parser.parseForVisualization(document); - const elements = flattenElements(hierarchical); - const states = elements.filter(el => el.type && - (el.type.includes('state') || el.type.includes('State'))); - - console.log('=== Parser Results ==='); - console.log(`States: ${states.length}`); - - const names = new Set(states.map(el => el.name)); - - console.log(`Found state names: ${Array.from(names).join(', ')}`); - - // Verify we have parsed states successfully - assert.ok(states.length > 0, 'Should parse at least one state'); - }); -}); - -suite('Doc Attribute Preservation Tests', () => { - let parser: SysMLParser; - - setup(() => { - parser = new SysMLParser(); - }); - - test('Doc should be preserved through entire visualization flow for concern element', async () => { - // Test concern element with doc and stakeholder - const content = `package SmartHome { - part def HomeownersAssociation; - concern 'Minimize maintenance complexity' { - doc - /* - * Reduce maintenance complexity to minimize - * the need for specialized technicians. - */ - stakeholder homeowners : HomeownersAssociation; - } -}`; - - const document = await createTestDocument(content); - - // Step 1: Parse with semantic resolution (what updateVisualization does) - const resolutionResult = await parser.parseWithSemanticResolution(document); - console.log('[VIZ TEST] parseWithSemanticResolution returned:', resolutionResult.elements.length, 'elements'); - - // Step 2: Convert to SysML elements (what updateVisualization does) - const sysmlElements = parser.convertEnrichedToSysMLElements(resolutionResult.elements); - console.log('[VIZ TEST] convertEnrichedToSysMLElements returned:', sysmlElements.length, 'elements'); - - // Find concern in SysML elements - function findConcern(els: SysMLElement[]): SysMLElement | null { - for (const el of els) { - if (el.type === 'concern') { - return el; - } - if (el.children) { - const found = findConcern(el.children); - if (found) return found; - } - } - return null; - } - - const concern = findConcern(sysmlElements); - console.log('[VIZ TEST] Concern found:', concern ? concern.name : 'NO'); - console.log('[VIZ TEST] Concern attributes:', concern?.attributes); - console.log('[VIZ TEST] Concern has doc:', concern?.attributes?.has('doc')); - - assert.ok(concern, 'Concern should be found in SysML elements'); - assert.ok(concern.attributes, 'Concern should have attributes'); - assert.ok(concern.attributes.has('doc'), 'Concern should have doc attribute'); - - const doc = concern.attributes.get('doc'); - console.log('[VIZ TEST] Concern doc value:', doc); - assert.ok(typeof doc === 'string', 'Doc should be a string'); - assert.ok(doc.includes('maintenance') || doc.includes('technicians'), 'Doc should contain expected content'); - - // Step 3: Simulate convertElementsToJSON (what visualization panel does) - function convertElementsToJSON(elements: SysMLElement[]): any[] { - return elements.map(element => { - const attributes: Record = {}; - if (element.attributes) { - element.attributes.forEach((value, key) => { - attributes[key] = value; - }); - } - return { - name: element.name, - type: element.type, - attributes, - children: convertElementsToJSON(element.children) - }; - }); - } - - const jsonElements = convertElementsToJSON(sysmlElements); - console.log('[VIZ TEST] JSON elements created:', jsonElements.length); - - // Find concern in JSON elements - function findConcernJSON(els: any[]): any | null { - for (const el of els) { - if (el.type === 'concern') { - return el; - } - if (el.children) { - const found = findConcernJSON(el.children); - if (found) return found; - } - } - return null; - } - - const jsonConcern = findConcernJSON(jsonElements); - console.log('[VIZ TEST] JSON Concern found:', jsonConcern ? jsonConcern.name : 'NO'); - console.log('[VIZ TEST] JSON Concern attributes:', jsonConcern?.attributes); - console.log('[VIZ TEST] JSON Concern.attributes.doc:', jsonConcern?.attributes?.doc); - - assert.ok(jsonConcern, 'JSON Concern should be found'); - assert.ok(jsonConcern.attributes, 'JSON Concern should have attributes object'); - assert.ok(jsonConcern.attributes.doc, 'JSON Concern should have doc in attributes'); - assert.ok(jsonConcern.attributes.doc.includes('maintenance') || jsonConcern.attributes.doc.includes('technicians'), 'Doc content should be preserved in JSON'); - - console.log('[VIZ TEST] ✅ SUCCESS: Doc attribute preserved through entire visualization flow!'); - }); - - test('Doc extraction in collectNodeContent simulation', async () => { - // This test simulates the webview's collectNodeContent function - const content = `package SmartHome { - part def HomeownersAssociation; - concern 'Minimize maintenance complexity' { - doc - /* - * Reduce maintenance complexity to minimize - * the need for specialized technicians. - */ - stakeholder homeowners : HomeownersAssociation; - } -}`; - - const document = await createTestDocument(content); - const resolutionResult = await parser.parseWithSemanticResolution(document); - const sysmlElements = parser.convertEnrichedToSysMLElements(resolutionResult.elements); - - // Convert to JSON (same as visualization panel) - function convertElementsToJSON(elements: SysMLElement[]): any[] { - return elements.map(element => { - const attributes: Record = {}; - if (element.attributes) { - element.attributes.forEach((value, key) => { - attributes[key] = value; - }); - } - return { - name: element.name, - type: element.type, - attributes, - children: convertElementsToJSON(element.children) - }; - }); - } - - const jsonElements = convertElementsToJSON(sysmlElements); - - // Define categories exactly as webview does - const GENERAL_VIEW_CATEGORIES = [ - { id: 'parts', label: 'Parts', keywords: ['part'] }, - { id: 'attributes', label: 'Attributes', keywords: ['attribute', 'attr'] }, - { id: 'ports', label: 'Ports', keywords: ['port'] }, - { id: 'actions', label: 'Actions', keywords: ['action'] }, - { id: 'states', label: 'States', keywords: ['state'] }, - { id: 'requirements', label: 'Requirements', keywords: ['requirement', 'req'] }, - { id: 'interfaces', label: 'Interfaces', keywords: ['interface'] }, - { id: 'usecases', label: 'Use Cases', keywords: ['use case', 'usecase'] }, - { id: 'concerns', label: 'Concerns', keywords: ['concern', 'viewpoint', 'stakeholder', 'frame'] }, - { id: 'items', label: 'Items', keywords: ['item'] }, - { id: 'other', label: 'Other', keywords: [] } - ]; - - const expandedGeneralCategories = new Set(GENERAL_VIEW_CATEGORIES.map(c => c.id)); - const PACKAGE_TYPES = new Set(['package', 'lib', 'library']); - - function getCategoryForType(typeLower: string): string { - for (const cat of GENERAL_VIEW_CATEGORIES) { - if (cat.keywords.some(kw => typeLower.includes(kw))) { - return cat.id; - } - } - return 'other'; - } - - // Simulate findTopLevelElements - const topLevelElements: any[] = []; - function findTopLevelElements(elements: any[], depth: number) { - if (!elements || !Array.isArray(elements)) return; - elements.forEach((el) => { - if (!el || !el.name) return; - const typeLower = (el.type || '').toLowerCase().trim(); - - // Skip packages - if (PACKAGE_TYPES.has(typeLower) || typeLower.includes('package')) { - if (el.children) findTopLevelElements(el.children, depth); - return; - } - - const category = getCategoryForType(typeLower); - console.log(`[SIMULATE] Element: ${el.name}, type: ${typeLower}, category: ${category}, expanded: ${expandedGeneralCategories.has(category)}, depth: ${depth}`); - - if (!expandedGeneralCategories.has(category)) { - console.log(`[SIMULATE] ⚠️ ${el.name} filtered out - category not expanded`); - return; - } - - if (depth <= 1) { - topLevelElements.push(el); - console.log(`[SIMULATE] ✅ ${el.name} added to topLevelElements`); - } else { - console.log(`[SIMULATE] ⚠️ ${el.name} filtered out - depth ${depth} > 1`); - } - }); - } - - findTopLevelElements(jsonElements, 0); - - console.log(`[SIMULATE] topLevelElements count: ${topLevelElements.length}`); - console.log(`[SIMULATE] topLevelElements: ${topLevelElements.map(e => e.name).join(', ')}`); - - // Find concern in topLevelElements - const concern = topLevelElements.find(el => el.type === 'concern'); - console.log(`[SIMULATE] Concern in topLevelElements: ${concern ? concern.name : 'NOT FOUND'}`); - assert.ok(concern, 'Concern should be in topLevelElements'); - - // Simulate collectNodeContent for doc extraction - function collectNodeContent(el: any) { - const docLines: any[] = []; - const typeLower = (el.type || '').toLowerCase(); - - // Extract doc from attributes (same logic as webview) - let doc = null; - if (el.attributes) { - if (typeof el.attributes.get === 'function') { - doc = el.attributes.get('doc') || el.attributes.get('documentation') || el.attributes.get('text'); - } else { - doc = el.attributes.doc || el.attributes.documentation || el.attributes.text; - } - } - if (!doc && el.documentation) doc = el.documentation; - if (!doc && el.text) doc = el.text; - - console.log(`[SIMULATE collectNodeContent] ${el.name} type: ${typeLower}, doc: ${doc ? doc.substring(0, 50) : 'NULL'}`); - - if (doc && typeof doc === 'string') { - const cleanDoc = doc.split('/*').join('').split('*/').join('').trim(); - if (cleanDoc.length > 0) { - docLines.push({ type: 'doc', text: cleanDoc }); - console.log(`[SIMULATE collectNodeContent] ✅ Doc line added for ${el.name}`); - } - } - - const sections: any[] = []; - if (docLines.length > 0) { - sections.push({ title: 'Doc', lines: docLines.slice(0, 4) }); - console.log(`[SIMULATE collectNodeContent] ✅ Doc section added for ${el.name}`); - } - - return sections; - } - - const concernSections = collectNodeContent(concern); - console.log(`[SIMULATE] Concern sections: ${concernSections.map(s => s.title).join(', ')}`); - - // Verify Doc section exists - const docSection = concernSections.find(s => s.title === 'Doc'); - assert.ok(docSection, 'Concern should have Doc section'); - assert.ok(docSection.lines.length > 0, 'Doc section should have lines'); - assert.ok(docSection.lines[0].text.includes('maintenance') || docSection.lines[0].text.includes('technicians'), 'Doc text should contain expected content'); - - console.log('[SIMULATE] ✅ Full webview rendering simulation PASSED!'); - }); - - test('Doc extraction from inline model with concerns', async () => { - // Test with inline SysML content containing concerns - const content = `package SmartHome { - part def HomeownersAssociation; - concern 'Minimize maintenance complexity' { - doc - /* - * Reduce maintenance complexity to minimize - * the need for specialized technicians. - */ - stakeholder homeowners : HomeownersAssociation; - } - concern 'Energy efficiency' { - doc - /* - * The system should optimize energy usage - * to reduce operating costs. - */ - } -}`; - - console.log('[CONCERN TEST] Content size:', content.length); - - const document = await createTestDocument(content); - const resolutionResult = await parser.parseWithSemanticResolution(document); - const sysmlElements = parser.convertEnrichedToSysMLElements(resolutionResult.elements); - - // Find all concerns with doc - function findConcernsWithDoc(elements: SysMLElement[], results: any[] = [], pathStr: string = '') { - for (const el of elements) { - const currentPath = pathStr ? `${pathStr}.${el.name}` : el.name; - if (el.type === 'concern') { - const hasDoc = el.attributes?.has('doc'); - const doc = el.attributes?.get('doc'); - console.log(`[CONCERN TEST] Found concern: "${el.name}" at ${currentPath}`); - const docPreview = doc && typeof doc === 'string' ? `${doc.substring(0, 60) }...` : 'NULL'; - console.log(`[CONCERN TEST] hasDoc: ${hasDoc}, doc: ${docPreview}`); - results.push({ name: el.name, path: currentPath, hasDoc, doc }); - } - if (el.children) { - findConcernsWithDoc(el.children, results, currentPath); - } - } - return results; - } - - const concerns = findConcernsWithDoc(sysmlElements); - console.log(`[CONCERN TEST] Total concerns found: ${concerns.length}`); - - const concernsWithDoc = concerns.filter(c => c.hasDoc); - console.log(`[CONCERN TEST] Concerns with doc: ${concernsWithDoc.length}`); - - assert.ok(concerns.length > 0, 'Should find at least one concern'); - assert.ok(concernsWithDoc.length > 0, 'At least one concern should have doc attribute'); - - console.log('[CONCERN TEST] ✅ SUCCESS!'); - }); - - test('IBD view should find internal parts from inline model', async () => { - // Test with inline SysML content containing parts and interfaces - const content = `package SmartHome { - port def PowerIP { - out item power : Power; - } - item def Power; - interface def PowerInterface { - end supplierPort : PowerIP; - end consumerPort : ~PowerIP; - } - part def SmartHome { - part controller; - part sensors; - part actuators; - part battery { - port powerPort : PowerIP; - } - part hub { - port hubPort : ~PowerIP; - } - interface bat2hub : PowerInterface connect battery.powerPort to hub.hubPort; - } -}`; - - const document = await createTestDocument(content); - const resolutionResult = await parser.parseWithSemanticResolution(document); - const sysmlElements = parser.convertEnrichedToSysMLElements(resolutionResult.elements); - - // Flatten all elements - function flattenElements(els: SysMLElement[], result: SysMLElement[] = []): SysMLElement[] { - for (const el of els) { - result.push(el); - if (el.children) { - flattenElements(el.children, result); - } - } - return result; - } - - const allElements = flattenElements(sysmlElements); - console.log(`[IBD TEST] Total flattened elements: ${allElements.length}`); - - // Log all element types - const typeGroups: Record = {}; - allElements.forEach(el => { - const t = el.type || 'unknown'; - typeGroups[t] = (typeGroups[t] || 0) + 1; - }); - console.log('[IBD TEST] Element type counts:', JSON.stringify(typeGroups, null, 2)); - - // Find parts (not part defs) - const parts = allElements.filter(el => { - if (!el.type) return false; - const typeLower = el.type.toLowerCase(); - return typeLower === 'part' || - typeLower === 'part usage' || - (typeLower.includes('part') && !typeLower.includes('def')); - }); - - console.log(`[IBD TEST] Parts found: ${parts.length}`); - parts.forEach(p => console.log(`[IBD TEST] Part: ${p.name} (type: ${p.type})`)); - - // Find ports - const ports = allElements.filter(el => { - if (!el.type) return false; - const typeLower = el.type.toLowerCase(); - return typeLower.includes('port') && !typeLower.includes('def'); - }); - - console.log(`[IBD TEST] Ports found: ${ports.length}`); - ports.forEach(p => console.log(`[IBD TEST] Port: ${p.name} (type: ${p.type})`)); - - // Find connectors/interfaces - const connectors = allElements.filter(el => { - if (!el.type) return false; - const typeLower = el.type.toLowerCase(); - return typeLower.includes('interface') || typeLower.includes('connect'); - }); - - console.log(`[IBD TEST] Connectors/Interfaces found: ${connectors.length}`); - connectors.forEach(c => console.log(`[IBD TEST] Connector: ${c.name} (type: ${c.type})`)); - - // SmartHome should have internal parts: controller, sensors, actuators, battery, hub - assert.ok(parts.length > 0, 'Should find parts in model'); - - // Check for specific parts - const partNames = parts.map(p => p.name); - console.log(`[IBD TEST] Part names: ${partNames.join(', ')}`); - - // These are internal parts of SmartHome - const expectedParts = ['controller', 'sensors', 'actuators', 'battery', 'hub']; - const foundExpected = expectedParts.filter(name => partNames.includes(name)); - console.log(`[IBD TEST] Found expected parts: ${foundExpected.join(', ')}`); - - assert.ok(foundExpected.length > 0, `Should find at least one of: ${expectedParts.join(', ')}`); - - console.log('[IBD TEST] ✅ SUCCESS!'); - }); -}); - -suite('Complex Model IBD Tests', () => { - let parser: SysMLParser; - - setup(() => { - parser = new SysMLParser(); - }); - - test('Parse complex model and find vehicles', async function() { - // Increase timeout for this test - this.timeout(30000); - - // Use inline content that tests the same structural patterns - const content = `package VehicleModel { - package Definitions { - part def Vehicle; - part def Engine; - part def Transmission; - part def Wheel; - port def DrivePort; - } - package Configurations { - package ConfigurationA { - part vehicle_a : Definitions::Vehicle { - part engine : Definitions::Engine; - part wheels : Definitions::Wheel [4]; - } - } - package ConfigurationB { - part vehicle_b : Definitions::Vehicle { - part engine : Definitions::Engine; - part transmission : Definitions::Transmission; - part wheels : Definitions::Wheel [4]; - part frontAxle; - part rearAxle; - } - } - } -}`; - const document = await createTestDocument(content); - - console.log('[VEHICLE TEST] Parsing VehicleModel...'); - console.log(`[VEHICLE TEST] Content length: ${content.length}`); - - // Parse with the parser - const hierarchicalElements = parser.parseForVisualization(document); - const elements = flattenElements(hierarchicalElements); - - console.log(`[VEHICLE TEST] Total hierarchical elements: ${hierarchicalElements.length}`); - console.log(`[VEHICLE TEST] Total flattened elements: ${elements.length}`); - - // Log top-level structure - hierarchicalElements.forEach(el => { - console.log(`[VEHICLE TEST] Top-level: ${el.name} (${el.type}) - ${el.children?.length || 0} children`); - }); - - // Find packages - const packages = elements.filter(el => el.type && el.type.toLowerCase().includes('package')); - console.log(`[VEHICLE TEST] Packages found: ${packages.length}`); - packages.slice(0, 20).forEach(p => { - console.log(`[VEHICLE TEST] Package: ${p.name}`); - }); - - // Find Configurations package specifically - const configPackage = packages.find(p => p.name === 'Configurations'); - if (configPackage) { - console.log(`[VEHICLE TEST] Found Configurations with ${configPackage.children?.length || 0} children`); - } else { - console.log('[VEHICLE TEST] Configurations NOT FOUND'); - } - - // Find all parts - const partElements = elements.filter(el => { - const typeLower = (el.type || '').toLowerCase(); - return typeLower.includes('part') && !typeLower.includes('def'); - }); - console.log(`[VEHICLE TEST] Part usages found: ${partElements.length}`); - partElements.slice(0, 30).forEach(p => { - console.log(`[VEHICLE TEST] Part: ${p.name} [${p.type}] - ${p.children?.length || 0} children`); - }); - - // Find vehicle_a and vehicle_b - const vehicleA = elements.find(el => el.name === 'vehicle_a'); - const vehicleB = elements.find(el => el.name === 'vehicle_b'); - - console.log(`[VEHICLE TEST] vehicle_a found: ${!!vehicleA}`); - console.log(`[VEHICLE TEST] vehicle_b found: ${!!vehicleB}`); - - if (vehicleA) { - console.log(`[VEHICLE TEST] vehicle_a type: ${vehicleA.type}, children: ${vehicleA.children?.length || 0}`); - } - if (vehicleB) { - console.log(`[VEHICLE TEST] vehicle_b type: ${vehicleB.type}, children: ${vehicleB.children?.length || 0}`); - } - - // Find parts with children (potential IBD containers) - const partsWithChildren = partElements.filter(p => p.children && p.children.length > 0); - console.log(`[VEHICLE TEST] Parts with children (IBD containers): ${partsWithChildren.length}`); - partsWithChildren.slice(0, 10).forEach(p => { - console.log(`[VEHICLE TEST] ${p.name}: ${p.children?.length || 0} children`); - }); - - // Assertions - assert.ok(packages.length > 0, 'Should find packages in VehicleModel'); - assert.ok(configPackage, 'Should find Configurations package'); - assert.ok(partElements.length > 0, 'Should find part usages'); - assert.ok(vehicleA || vehicleB, 'Should find vehicle_a or vehicle_b'); - assert.ok(partsWithChildren.length > 0, 'Should find parts with children for IBD view'); - - console.log('[VEHICLE TEST] ✅ SUCCESS!'); - }); -}); - -// Helper function to create test documents -async function createTestDocument(content: string): Promise { - const document = await vscode.workspace.openTextDocument({ - language: 'sysml', - content: content - }); - return document; -} - diff --git a/src/test/vscode-mock.ts b/src/test/vscode-mock.ts new file mode 100644 index 0000000..6eeab76 --- /dev/null +++ b/src/test/vscode-mock.ts @@ -0,0 +1,539 @@ +/** + * Lightweight vscode module mock for running unit tests outside the + * VS Code extension host (i.e. via mocha + ts-node). + * + * Only the APIs actually exercised by the "mockable" test files are + * implemented here. Integration tests that call real VS Code APIs + * (executeCommand, openTextDocument, etc.) still require the full + * extension host and should not be included in the `test:unit` glob. + */ + +// ─── Core value types ──────────────────────────────────────────── + +export class Position { + constructor( + public readonly line: number, + public readonly character: number + ) {} + + isEqual(other: Position): boolean { + return this.line === other.line && this.character === other.character; + } + + isBefore(other: Position): boolean { + if (this.line < other.line) return true; + if (this.line === other.line && this.character < other.character) return true; + return false; + } + + isAfter(other: Position): boolean { + return !this.isEqual(other) && !this.isBefore(other); + } + + translate(lineDelta = 0, characterDelta = 0): Position { + return new Position(this.line + lineDelta, this.character + characterDelta); + } + + with(line?: number, character?: number): Position { + return new Position(line ?? this.line, character ?? this.character); + } + + compareTo(other: Position): number { + if (this.isBefore(other)) return -1; + if (this.isAfter(other)) return 1; + return 0; + } +} + +export class Range { + public readonly start: Position; + public readonly end: Position; + + constructor(startLine: number, startCharacter: number, endLine: number, endCharacter: number); + constructor(start: Position, end: Position); + constructor( + a: number | Position, + b: number | Position, + c?: number, + d?: number + ) { + if (typeof a === 'number' && typeof b === 'number') { + this.start = new Position(a, b); + this.end = new Position(c ?? 0, d ?? 0); + } else { + this.start = a as Position; + this.end = b as Position; + } + } + + get isEmpty(): boolean { + return this.start.isEqual(this.end); + } + + get isSingleLine(): boolean { + return this.start.line === this.end.line; + } + + contains(positionOrRange: Position | Range): boolean { + if (positionOrRange instanceof Range) { + return this.contains(positionOrRange.start) && this.contains(positionOrRange.end); + } + const pos = positionOrRange; + if (pos.isBefore(this.start) || pos.isAfter(this.end)) return false; + return true; + } + + with(start?: Position, end?: Position): Range { + return new Range(start ?? this.start, end ?? this.end); + } + + intersection(other: Range): Range | undefined { + const start = this.start.isBefore(other.start) ? other.start : this.start; + const end = this.end.isBefore(other.end) ? this.end : other.end; + if (start.isAfter(end)) return undefined; + return new Range(start, end); + } + + union(other: Range): Range { + const start = this.start.isBefore(other.start) ? this.start : other.start; + const end = this.end.isAfter(other.end) ? this.end : other.end; + return new Range(start, end); + } + + isEqual(other: Range): boolean { + return this.start.isEqual(other.start) && this.end.isEqual(other.end); + } +} + +export class Selection extends Range { + public readonly anchor: Position; + public readonly active: Position; + + constructor(anchorLine: number, anchorChar: number, activeLine: number, activeChar: number); + constructor(anchor: Position, active: Position); + constructor( + a: number | Position, + b: number | Position, + c?: number, + d?: number + ) { + if (typeof a === 'number' && typeof b === 'number') { + super(a, b, c ?? 0, d ?? 0); + this.anchor = new Position(a, b); + this.active = new Position(c ?? 0, d ?? 0); + } else { + super(a as Position, b as Position); + this.anchor = a as Position; + this.active = b as Position; + } + } + + get isReversed(): boolean { + return this.anchor.isAfter(this.active); + } +} + +// ─── Uri ───────────────────────────────────────────────────────── + +export class Uri { + private constructor( + public readonly scheme: string, + public readonly authority: string, + public readonly path: string, + public readonly query: string, + public readonly fragment: string + ) {} + + get fsPath(): string { + return this.path; + } + + toString(): string { + return `${this.scheme}://${this.path}`; + } + + with(change: { scheme?: string; authority?: string; path?: string; query?: string; fragment?: string }): Uri { + return new Uri( + change.scheme ?? this.scheme, + change.authority ?? this.authority, + change.path ?? this.path, + change.query ?? this.query, + change.fragment ?? this.fragment + ); + } + + toJSON(): any { + return { scheme: this.scheme, authority: this.authority, path: this.path, query: this.query, fragment: this.fragment }; + } + + static file(path: string): Uri { + return new Uri('file', '', path, '', ''); + } + + static parse(value: string): Uri { + const match = value.match(/^([^:]+):\/\/(.*)$/); + if (match) { + return new Uri(match[1], '', match[2], '', ''); + } + return new Uri('file', '', value, '', ''); + } + + static from(components: { scheme: string; authority?: string; path?: string; query?: string; fragment?: string }): Uri { + return new Uri( + components.scheme, + components.authority ?? '', + components.path ?? '', + components.query ?? '', + components.fragment ?? '' + ); + } + + static joinPath(base: Uri, ...pathSegments: string[]): Uri { + const joined = [base.path, ...pathSegments].join('/').replace(/\/+/g, '/'); + return base.with({ path: joined }); + } +} + +// ─── Enums ─────────────────────────────────────────────────────── + +export enum EndOfLine { + LF = 1, + CRLF = 2 +} + +export enum DiagnosticSeverity { + Error = 0, + Warning = 1, + Information = 2, + Hint = 3 +} + +export enum SymbolKind { + File = 0, + Module = 1, + Namespace = 2, + Package = 3, + Class = 4, + Method = 5, + Property = 6, + Field = 7, + Constructor = 8, + Enum = 9, + Interface = 10, + Function = 11, + Variable = 12, + Constant = 13, + String = 14, + Number = 15, + Boolean = 16, + Array = 17, + Object = 18, + Key = 19, + Null = 20, + EnumMember = 21, + Struct = 22, + Event = 23, + Operator = 24, + TypeParameter = 25 +} + +export enum CompletionItemKind { + Text = 0, + Method = 1, + Function = 2, + Constructor = 3, + Field = 4, + Variable = 5, + Class = 6, + Interface = 7, + Module = 8, + Property = 9, + Unit = 10, + Value = 11, + Enum = 12, + Keyword = 13, + Snippet = 14, + Color = 15, + Reference = 17, + File = 16, + Folder = 18, + EnumMember = 19, + Constant = 20, + Struct = 21, + Event = 22, + Operator = 23, + TypeParameter = 24 +} + +export enum CodeActionKind { + Empty = '', + QuickFix = 'quickfix', + Refactor = 'refactor', + RefactorExtract = 'refactor.extract', + RefactorInline = 'refactor.inline', + RefactorRewrite = 'refactor.rewrite', + Source = 'source', + SourceOrganizeImports = 'source.organizeImports', + SourceFixAll = 'source.fixAll' +} + +export enum ConfigurationTarget { + Global = 1, + Workspace = 2, + WorkspaceFolder = 3 +} + +// ─── Document types ────────────────────────────────────────────── + +export class Diagnostic { + constructor( + public range: Range, + public message: string, + public severity: DiagnosticSeverity = DiagnosticSeverity.Error + ) {} + + public source?: string; + public code?: string | number; +} + +export class DocumentSymbol { + public children: DocumentSymbol[] = []; + + constructor( + public name: string, + public detail: string, + public kind: SymbolKind, + public range: Range, + public selectionRange: Range + ) {} +} + +export class Location { + constructor( + public uri: Uri, + public range: Range + ) {} +} + +export class CodeAction { + constructor( + public title: string, + public kind?: any + ) {} +} + +export class CompletionList { + constructor( + public items: any[] = [], + public isIncomplete = false + ) {} +} + +export class Hover { + constructor( + public contents: any, + public range?: Range + ) {} +} + +// ─── Workspace / Window stubs ──────────────────────────────────── + +export const workspace = { + openTextDocument: async (_uri: any): Promise => { + throw new Error('workspace.openTextDocument is not available in unit test mode'); + }, + getConfiguration: (_section?: string) => ({ + get: (_key: string, defaultValue?: T) => defaultValue, + has: (_key: string) => false, + inspect: (_key: string) => undefined, + update: async () => {}, + }), + onDidChangeTextDocument: () => ({ dispose: () => {} }), + onDidOpenTextDocument: () => ({ dispose: () => {} }), + onDidCloseTextDocument: () => ({ dispose: () => {} }), + onDidChangeConfiguration: () => ({ dispose: () => {} }), + workspaceFolders: undefined as any, + fs: { + readFile: async () => Buffer.from(''), + writeFile: async () => {}, + stat: async () => ({ type: 1, ctime: 0, mtime: 0, size: 0 }), + }, +}; + +export const window = { + showInformationMessage: async (..._args: any[]) => undefined, + showWarningMessage: async (..._args: any[]) => undefined, + showErrorMessage: async (..._args: any[]) => undefined, + createOutputChannel: (_name: string) => ({ + appendLine: () => {}, + append: () => {}, + show: () => {}, + hide: () => {}, + clear: () => {}, + dispose: () => {}, + }), + withProgress: async (_options: any, task: any) => task({ report: () => {} }), + activeTextEditor: undefined as any, + showTextDocument: async () => undefined, + createWebviewPanel: () => ({ + webview: { html: '', onDidReceiveMessage: () => ({ dispose: () => {} }), asWebviewUri: (u: any) => u }, + onDidDispose: () => ({ dispose: () => {} }), + reveal: () => {}, + dispose: () => {}, + }), +}; + +export const commands = { + executeCommand: async (..._args: any[]) => undefined, + getCommands: async () => [] as string[], + registerCommand: (_command: string, _callback: (...args: any[]) => any) => ({ dispose: () => {} }), +}; + +export const languages = { + getDiagnostics: (_uri?: any) => [] as Diagnostic[], + getLanguages: async () => ['sysml'] as string[], + registerCodeActionsProvider: () => ({ dispose: () => {} }), + createDiagnosticCollection: (_name?: string) => ({ + set: () => {}, + delete: () => {}, + clear: () => {}, + forEach: () => {}, + get: () => undefined, + has: () => false, + dispose: () => {}, + }), +}; + +export const extensions = { + getExtension: (_id: string) => undefined, +}; + +// ─── Event constructors ───────────────────────────────────────── + +export class EventEmitter { + private _listeners: ((...args: any[]) => any)[] = []; + + get event() { + return (listener: (...args: any[]) => any) => { + this._listeners.push(listener); + return { dispose: () => { this._listeners = this._listeners.filter(l => l !== listener); } }; + }; + } + + fire(data?: any): void { + for (const listener of this._listeners) { + listener(data); + } + } + + dispose(): void { + this._listeners = []; + } +} + +export class CancellationTokenSource { + token = { isCancellationRequested: false, onCancellationRequested: () => ({ dispose: () => {} }) }; + cancel(): void { this.token.isCancellationRequested = true; } + dispose(): void {} +} + +// ─── TreeItem (for explorer tests) ────────────────────────────── + +export enum TreeItemCollapsibleState { + None = 0, + Collapsed = 1, + Expanded = 2 +} + +export class TreeItem { + public label?: string; + public collapsibleState?: TreeItemCollapsibleState; + public iconPath?: any; + public description?: string; + public tooltip?: string; + public command?: any; + public contextValue?: string; + + constructor(label: string, collapsibleState?: TreeItemCollapsibleState) { + this.label = label; + this.collapsibleState = collapsibleState; + } +} + +// ─── MarkdownString ───────────────────────────────────────────── + +export class MarkdownString { + public value: string; + public isTrusted?: boolean; + public supportThemeIcons?: boolean; + + constructor(value = '') { + this.value = value; + } + + appendText(value: string): MarkdownString { + this.value += value; + return this; + } + + appendMarkdown(value: string): MarkdownString { + this.value += value; + return this; + } + + appendCodeblock(value: string, language?: string): MarkdownString { + this.value += `\n\`\`\`${language ?? ''}\n${value}\n\`\`\`\n`; + return this; + } +} + +// ─── TextEdit ─────────────────────────────────────────────────── + +export class TextEdit { + constructor( + public range: Range, + public newText: string + ) {} + + static replace(range: Range, newText: string): TextEdit { + return new TextEdit(range, newText); + } + + static insert(position: Position, newText: string): TextEdit { + return new TextEdit(new Range(position, position), newText); + } + + static delete(range: Range): TextEdit { + return new TextEdit(range, ''); + } +} + +export class WorkspaceEdit { + private _edits: Map = new Map(); + + replace(uri: Uri, range: Range, newText: string): void { + const key = uri.toString(); + if (!this._edits.has(key)) this._edits.set(key, []); + this._edits.get(key)?.push(TextEdit.replace(range, newText)); + } + + insert(uri: Uri, position: Position, newText: string): void { + const key = uri.toString(); + if (!this._edits.has(key)) this._edits.set(key, []); + this._edits.get(key)?.push(TextEdit.insert(position, newText)); + } + + delete(uri: Uri, range: Range): void { + const key = uri.toString(); + if (!this._edits.has(key)) this._edits.set(key, []); + this._edits.get(key)?.push(TextEdit.delete(range)); + } + + has(uri: Uri): boolean { + return this._edits.has(uri.toString()); + } + + get size(): number { + return this._edits.size; + } +} diff --git a/src/types/sysml-v2-lsp.d.ts b/src/types/sysml-v2-lsp.d.ts index 6978f4b..cb79def 100644 --- a/src/types/sysml-v2-lsp.d.ts +++ b/src/types/sysml-v2-lsp.d.ts @@ -8,9 +8,6 @@ declare module 'sysml-v2-lsp' { /** Absolute path to the bundled language server entry point (dist/server/server.js). */ export const serverPath: string; - /** Absolute path to the bundled parser worker module used internally by the server. */ - export const workerPath: string; - /** Absolute path to the bundled MCP server entry point (stdio transport). */ export const mcpServerPath: string; } diff --git a/src/types/sysmlTypes.ts b/src/types/sysmlTypes.ts new file mode 100644 index 0000000..30c7837 --- /dev/null +++ b/src/types/sysmlTypes.ts @@ -0,0 +1,99 @@ +/** + * Core SysML element types used by the model explorer, visualization panel, + * and other extension components. + * + * These types use VS Code runtime types (`vscode.Range`, `Map`) and are the + * canonical internal representation. For LSP-transport DTOs see + * `../providers/sysmlModelTypes.ts`. + */ + +import * as vscode from 'vscode'; + +export interface SysMLElement { + type: string; + name: string; + range: vscode.Range; + children: SysMLElement[]; + attributes: Map; + relationships: Relationship[]; + errors?: string[]; +} + +export interface Relationship { + type: string; + target: string; + source: string; + name?: string; +} + +export interface SequenceDiagram { + name: string; + participants: Participant[]; + messages: Message[]; + range: vscode.Range; +} + +export interface Participant { + name: string; + type: string; + range: vscode.Range; +} + +export interface Message { + name: string; + from: string; + to: string; + payload: string; + occurrence: number; + range: vscode.Range; +} + +export interface ActivityDiagram { + name: string; + actions: ActivityAction[]; + decisions: DecisionNode[]; + flows: ControlFlow[]; + states: ActivityState[]; + range: vscode.Range; +} + +export interface ActivityAction { + name: string; + type: 'action' | 'start' | 'end' | 'fork' | 'join' | 'composite' | 'initial' | 'final' | 'merge' | 'decision'; + kind?: string; + inputs?: string[]; + outputs?: string[]; + condition?: string; + subActions?: ActivityAction[]; + isDefinition?: boolean; + range?: vscode.Range; + parent?: string; + children?: string[]; +} + +export interface DecisionNode { + name: string; + condition: string; + branches: { + condition: string; + target: string; + }[]; + range: vscode.Range; +} + +export interface ControlFlow { + from: string; + to: string; + condition?: string; + guard?: string; + range: vscode.Range; +} + +export interface ActivityState { + name: string; + type: 'initial' | 'final' | 'intermediate'; + entryActions?: string[]; + exitActions?: string[]; + doActivity?: string; + range: vscode.Range; +} diff --git a/src/visualization/visualizationPanel.ts b/src/visualization/visualizationPanel.ts index 5f7f4ab..053bc4a 100644 --- a/src/visualization/visualizationPanel.ts +++ b/src/visualization/visualizationPanel.ts @@ -1,5 +1,7 @@ import * as vscode from 'vscode'; -import { SysMLElement, SysMLParser } from '../parser/sysmlParser'; +import { LspModelProvider, toVscodeRange } from '../providers/lspModelProvider'; +import type { SysMLElementDTO } from '../providers/sysmlModelTypes'; +import type { SysMLElement } from '../types/sysmlTypes'; export class VisualizationPanel { public static currentPanel: VisualizationPanel | undefined; @@ -12,23 +14,37 @@ export class VisualizationPanel { private _lastContentHash: string = ''; // Cache content hash to skip unchanged updates private _pendingUpdate: ReturnType | undefined; // Coalesce rapid updates private _needsUpdateWhenVisible: boolean = false; // Deferred update when panel is hidden + private _lastViewColumn: vscode.ViewColumn | undefined; // Track view column to detect panel moves + private _fileUris: vscode.Uri[] = []; // All source file URIs (for folder-level visualization) private constructor( panel: vscode.WebviewPanel, extensionUri: vscode.Uri, - private _parser: SysMLParser, + private _document: vscode.TextDocument, - private _document: vscode.TextDocument + private _lspModelProvider: LspModelProvider, + fileUris?: vscode.Uri[], ) { + this._fileUris = fileUris ?? []; this._panel = panel; this._panel.onDidDispose(() => this.dispose(), null, this._disposables); - // When the panel becomes visible again, flush any deferred update + this._lastViewColumn = panel.viewColumn; + + // When the panel becomes visible again or is moved (e.g. dragged to + // a floating window), force a re-render so the visualizer recovers. this._panel.onDidChangeViewState(() => { - if (this._panel.visible && this._needsUpdateWhenVisible) { - this._needsUpdateWhenVisible = false; - this.updateVisualization(true); + const columnChanged = this._panel.viewColumn !== this._lastViewColumn; + this._lastViewColumn = this._panel.viewColumn; + + if (this._panel.visible) { + if (this._needsUpdateWhenVisible || columnChanged) { + this._needsUpdateWhenVisible = false; + // Reset content hash so the update is not skipped + this._lastContentHash = ''; + this.updateVisualization(true); + } } }, null, this._disposables); @@ -71,6 +87,11 @@ export class VisualizationPanel { // Update our stored view state with the current webview state this._currentView = message.view; break; + case 'webviewReady': + // Webview (re)initialized — push current model data + this._lastContentHash = ''; + this.updateVisualization(true); + break; } }, null, @@ -80,7 +101,7 @@ export class VisualizationPanel { this.updateVisualization(); } - public static createOrShow(extensionUri: vscode.Uri, parser: SysMLParser, document: vscode.TextDocument, customTitle?: string) { + public static createOrShow(extensionUri: vscode.Uri, document: vscode.TextDocument, customTitle?: string, lspModelProvider?: LspModelProvider, fileUris?: vscode.Uri[]): void { // Determine the best column layout for side-by-side viewing const activeColumn = vscode.window.activeTextEditor?.viewColumn; let visualizerColumn: vscode.ViewColumn; @@ -100,14 +121,31 @@ export class VisualizationPanel { // If panel exists, update title and reveal it VisualizationPanel.currentPanel._panel.title = title; VisualizationPanel.currentPanel._panel.reveal(visualizerColumn); - // Only update if the document has actually changed - if (VisualizationPanel.currentPanel._document !== document) { + if (lspModelProvider) { + VisualizationPanel.currentPanel._lspModelProvider = lspModelProvider; + } + // Track whether file URIs changed (folder→folder or file→folder) + let fileUrisChanged = false; + if (fileUris) { + const oldSet = new Set(VisualizationPanel.currentPanel._fileUris.map(u => u.toString())); + const newSet = new Set(fileUris.map(u => u.toString())); + fileUrisChanged = oldSet.size !== newSet.size + || [...newSet].some(u => !oldSet.has(u)); + VisualizationPanel.currentPanel._fileUris = fileUris; + } + // Update if the document changed OR the set of file URIs changed + if (VisualizationPanel.currentPanel._document !== document || fileUrisChanged) { VisualizationPanel.currentPanel._document = document; - VisualizationPanel.currentPanel.updateVisualization(); + VisualizationPanel.currentPanel._lastContentHash = ''; // force re-parse + VisualizationPanel.currentPanel.updateVisualization(true); } return; } + if (!lspModelProvider) { + return; // Cannot create panel without an LSP model provider + } + const panel = vscode.window.createWebviewPanel( 'sysmlVisualizer', title, @@ -122,7 +160,7 @@ export class VisualizationPanel { } ); - VisualizationPanel.currentPanel = new VisualizationPanel(panel, extensionUri, parser, document); + VisualizationPanel.currentPanel = new VisualizationPanel(panel, extensionUri, document, lspModelProvider, fileUris); } public exportVisualization(format: string, scale: number = 2) { @@ -172,98 +210,93 @@ export class VisualizationPanel { await this._doUpdateVisualization(); } - private _doUpdateVisualization() { - // Use fast parse for visualization - skip semantic resolution for speed - // Semantic resolution is expensive and not needed for diagram rendering - const elements = this._parser.parse(this._document); - - const relationships = this._parser.getRelationships(); - const sequenceDiagrams = this._parser.getSequenceDiagrams(); - - // Get activity diagrams from parser - const activityDiagrams = this._parser.getActivityDiagrams(this._document); - - const jsonElements = this.convertElementsToJSON(elements); - - // CRITICAL: Remove circular references before JSON serialization - // The collectAllElements function may have added parentElement object references - // which create circular structures that break JSON.stringify() - // eslint-disable-next-line @typescript-eslint/no-explicit-any - function cleanCircularRefs(obj: any): any { - if (!obj || typeof obj !== 'object') return obj; - - // Remove parentElement property that creates circular references - if (obj.parentElement) { - delete obj.parentElement; - } - - // Recursively clean arrays - if (Array.isArray(obj)) { - obj.forEach(item => cleanCircularRefs(item)); - } else { - // Recursively clean object properties - Object.keys(obj).forEach(key => { - if (typeof obj[key] === 'object' && obj[key] !== null) { - cleanCircularRefs(obj[key]); - } - }); - } - - return obj; - } - - // Clean all data structures before sending to webview - cleanCircularRefs(jsonElements); - cleanCircularRefs(relationships); - cleanCircularRefs(sequenceDiagrams); - cleanCircularRefs(activityDiagrams); + private async _doUpdateVisualization() { + try { + // Determine which URIs to query: if we have multiple source + // file URIs (folder-level visualization) query each of them; + // otherwise fall back to the single document URI. + const urisToQuery = this._fileUris.length > 0 + ? this._fileUris.map(u => u.toString()) + : [this._document.uri.toString()]; + + const scopes: ('elements' | 'relationships' | 'sequenceDiagrams' | 'activityDiagrams')[] = + ['elements', 'relationships', 'sequenceDiagrams', 'activityDiagrams']; + + // Fetch models for all URIs in parallel + const results = await Promise.all( + urisToQuery.map(uri => this._lspModelProvider.getModel(uri, scopes)), + ); - this._panel.webview.postMessage({ - command: 'update', - elements: jsonElements, - relationships: relationships, - sequenceDiagrams: sequenceDiagrams, - activityDiagrams: activityDiagrams, - currentView: this._currentView // Send the stored view state - }); + // Merge results from all files + const allElements: SysMLElementDTO[] = []; + const allRelationships: unknown[] = []; + const allSequenceDiagrams: unknown[] = []; + const allActivityDiagrams: unknown[] = []; + + for (const result of results) { + if (result.elements) { allElements.push(...result.elements); } + if (result.relationships) { allRelationships.push(...(result.relationships as unknown[])); } + if (result.sequenceDiagrams) { allSequenceDiagrams.push(...(result.sequenceDiagrams as unknown[])); } + if (result.activityDiagrams) { allActivityDiagrams.push(...(result.activityDiagrams as unknown[])); } + } + + // DTOs are already plain JSON — convert elements to the + // shape the webview expects (add id / properties / typing). + const jsonElements = this.convertDTOElementsToJSON(allElements); + + this._panel.webview.postMessage({ + command: 'update', + elements: jsonElements, + relationships: allRelationships, + sequenceDiagrams: allSequenceDiagrams, + activityDiagrams: allActivityDiagrams, + currentView: this._currentView, + }); + } catch { /* LSP model request failed — silently ignore */ } } - private convertElementsToJSON(elements: SysMLElement[]): Array<{ - name: string; - type: string; - attributes: Record; - children: Array<{name: string; type: string; attributes: Record; children: unknown; relationships: import('../parser/sysmlParser').Relationship[]}>; - relationships: import('../parser/sysmlParser').Relationship[]; - }> { - return elements.map(element => { - const attributes: Record = {}; - if (element.attributes) { - element.attributes.forEach((value, key) => { - attributes[key] = value; - }); - } - - // Sanitize relationships to remove circular references - // Only keep the essential string properties, not object references - const sanitizedRelationships = (element.relationships || []).map(rel => ({ - type: rel.type, - source: rel.source, - target: rel.target, - // Don't include sourceElement or targetElement which might be object references - })); + /** + * Convert LSP DTO elements into the JSON shape the webview expects. + * DTOs already use Record attributes (no Map → Record conversion needed) + * and have no circular parentElement references. + * + * `typing` is derived from the DTO's `attributes` (partType / portType) + * or from a `typing` relationship — matching the ANTLR parser's + * `(element as any).typing` property that the webview views rely on. + */ + private convertDTOElementsToJSON(elements: SysMLElementDTO[], parentName?: string): unknown[] { + // Filter out self-referencing package children: the LSP server + // sometimes includes the root package as its own child. + const filtered = parentName + ? elements.filter(el => !(el.type === 'package' && el.name === parentName)) + : elements; + + return filtered.map(el => { + const attrs = el.attributes ?? {}; + const rels = el.relationships ?? []; + + // Resolve typing the same way the ANTLR parser does: + // 1. partType / portType attribute (set by the LSP server) + // 2. First 'typing' relationship target + const typing: string | undefined = + (attrs['partType'] as string | undefined) ?? + (attrs['portType'] as string | undefined) ?? + rels.find(r => r.type === 'typing')?.target ?? + undefined; return { - name: element.name, - type: element.type, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - id: (element as any).id || element.name, - attributes, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - properties: (element as any).properties || {}, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - typing: (element as any).typing, - children: this.convertElementsToJSON(element.children), - relationships: sanitizedRelationships + name: el.name, + type: el.type, + id: el.name, + attributes: attrs, + properties: {}, + typing, + children: this.convertDTOElementsToJSON(el.children ?? [], el.name), + relationships: rels.map(r => ({ + type: r.type, + source: r.source, + target: r.target, + })), }; }); } @@ -303,24 +336,22 @@ export class VisualizationPanel { let element: SysMLElement | undefined; - // If parent context is provided, search within that parent first - if (parentContext) { - const resolutionResult = await this._parser.parseWithSemanticResolution(this._document); - const allElements = this._parser.convertEnrichedToSysMLElements(resolutionResult.elements); - element = this.findElementInParent(elementName, parentContext, allElements); - } - - // Fall back to regular search if not found in parent context - if (!element) { - element = this._parser.findElement(elementName); - } - - // If still not found, try searching recursively through the tree - if (!element) { - // Parse document to get all elements for recursive search - const resolutionResult = await this._parser.parseWithSemanticResolution(this._document); - const allElements = this._parser.convertEnrichedToSysMLElements(resolutionResult.elements); - element = this.findElementRecursive(elementName, allElements); + const dto = await this._lspModelProvider.findElement( + this._document.uri.toString(), + elementName, + parentContext, + ); + if (dto) { + // Wrap DTO in a minimal SysMLElement-compatible shape for + // the navigation code below (only range is needed). + element = { + type: dto.type, + name: dto.name, + range: toVscodeRange(dto.range), + children: [], + attributes: new Map(), + relationships: [], + }; } if (element) { @@ -423,14 +454,21 @@ export class VisualizationPanel { return; } - // Find the element to rename - let element = this._parser.findElement(oldName); - - if (!element) { - // Try recursive search - const resolutionResult = await this._parser.parseWithSemanticResolution(this._document); - const allElements = this._parser.convertEnrichedToSysMLElements(resolutionResult.elements); - element = this.findElementRecursive(oldName, allElements); + // Find the element to rename via LSP + let element: SysMLElement | undefined; + const dto = await this._lspModelProvider.findElement( + this._document.uri.toString(), + oldName, + ); + if (dto) { + element = { + type: dto.type, + name: dto.name, + range: toVscodeRange(dto.range), + children: [], + attributes: new Map(), + relationships: [], + }; } if (!element || !element.range) { @@ -542,6 +580,11 @@ export class VisualizationPanel { return this._document; } + /** Update the LspModelProvider. */ + public setLspModelProvider(provider: LspModelProvider): void { + this._lspModelProvider = provider; + } + public changeView(viewId: string): void { this._panel.webview.postMessage({ command: 'changeView', @@ -551,9 +594,25 @@ export class VisualizationPanel { } public notifyFileChanged(uri: vscode.Uri) { - // Instant update - content hash check in updateVisualization prevents redundant work - if (this._document.uri.toString() === uri.toString()) { - this.updateVisualization(); + // Always force — the LSP server parses asynchronously, so the + // model data may have changed even when the document text hasn't + // (e.g. after a sysml/status 'end' notification). + const uriStr = uri.toString(); + const docUri = this._document.uri.toString(); + const isTracked = docUri === uriStr + || this._fileUris.some(u => u.toString() === uriStr); + + if (isTracked) { + // Debounce: coalesce multiple notifications from + // onDidChangeTextDocument, onDidSaveTextDocument, and the + // file-system watcher into a single visualizer refresh. + if (this._fileChangeDebounceTimer) { + clearTimeout(this._fileChangeDebounceTimer); + } + this._fileChangeDebounceTimer = setTimeout(() => { + this._fileChangeDebounceTimer = undefined; + this.updateVisualization(true); + }, 400); } } @@ -2117,15 +2176,98 @@ export class VisualizationPanel { const allActions = [ ...(diagram.actions || []).map(a => ({ ...a, - id: a.id || a.name + id: a.id || a.name, + // Direct children of the diagram root are + // top-level — clear parent so the renderer + // does not filter them out. + parent: (a.parent === diagram.name) ? undefined : a.parent })), ...decisionsAsActions ]; + // Build a set of known action IDs + const actionIds = new Set(allActions.map(a => a.id || a.name)); + + // Synthesize missing control nodes from flows + // This handles the case where LSP returns flows referencing + // merge/fork/join nodes that aren't in the actions list + const flows = diagram.flows || []; + const flowNodeNames = new Set(); + const incomingFlowCount = new Map(); + const outgoingFlowCount = new Map(); + + flows.forEach(f => { + if (f.from) { + flowNodeNames.add(f.from); + outgoingFlowCount.set(f.from, (outgoingFlowCount.get(f.from) || 0) + 1); + } + if (f.to) { + flowNodeNames.add(f.to); + incomingFlowCount.set(f.to, (incomingFlowCount.get(f.to) || 0) + 1); + } + }); + + // Add synthesized control nodes for any flow endpoints not in actions + flowNodeNames.forEach(nodeName => { + if (!actionIds.has(nodeName)) { + // Determine node type from flow patterns: + // - Multiple incoming flows → merge node + // - Multiple outgoing flows → fork or decision + // - Name hints (merge, fork, join, decision, check) + const incoming = incomingFlowCount.get(nodeName) || 0; + const outgoing = outgoingFlowCount.get(nodeName) || 0; + const nameLower = nodeName.toLowerCase(); + + let nodeType = 'action'; + let nodeKind = 'action'; + + if (nameLower.includes('merge') || nameLower.includes('join') || nameLower.endsWith('check')) { + nodeType = 'merge'; + nodeKind = 'merge'; + } else if (nameLower.includes('fork')) { + nodeType = 'fork'; + nodeKind = 'fork'; + } else if (nameLower.includes('decision') || nameLower.includes('decide')) { + nodeType = 'decision'; + nodeKind = 'decision'; + } else if (incoming > 1) { + // Multiple incoming flows → likely a merge/join + nodeType = 'merge'; + nodeKind = 'merge'; + } else if (outgoing > 1) { + // Multiple outgoing flows → fork (or decision if guards present) + const hasGuards = flows.some(f => f.from === nodeName && (f.guard || f.condition)); + if (hasGuards) { + nodeType = 'decision'; + nodeKind = 'decision'; + } else { + nodeType = 'fork'; + nodeKind = 'fork'; + } + } + + allActions.push({ + name: nodeName, + id: nodeName, + type: nodeType, + kind: nodeKind + }); + actionIds.add(nodeName); + } + }); + + // Defensive: filter out self-referencing flows + // and flows pointing to non-existent actions. + const cleanFlows = flows.filter(f => + f.from !== f.to && + actionIds.has(f.from) && + actionIds.has(f.to) + ); + return { name: diagram.name, actions: allActions, - flows: diagram.flows || [], + flows: cleanFlows, decisions: diagram.decisions || [], states: diagram.states || [] }; @@ -2199,9 +2341,150 @@ export class VisualizationPanel { case 'sequence': // Sequence Diagram View needs sequence diagrams + if (data.sequenceDiagrams && data.sequenceDiagrams.length > 0) { + return { + ...data, + sequenceDiagrams: data.sequenceDiagrams + }; + } + + // Fallback: synthesise sequence diagrams from elements. + // Two strategies: + // 1. Elements whose names suggest sequential behaviour + // (sequence, interaction, workflow, scenario, process) + // that have part children as participants. + // 2. Action defs/usages with child actions (sequential + // flow) — mirrors the ANTLR parser's + // isSequentialBehaviorElement / extractActionSequence. + + // Strategy 1: name/type-based candidates with part children + const seqCandidates = allElements.filter(el => { + if (!el.type || !el.children || el.children.length === 0) return false; + const nameLower = (el.name || '').toLowerCase(); + const typeLower = el.type.toLowerCase(); + const hasSequenceName = /sequence|interaction|workflow|scenario|process/.test(nameLower); + const isInteraction = typeLower.includes('interaction'); + if (!hasSequenceName && !isInteraction) return false; + const hasParts = el.children.some(c => c.type && c.type.toLowerCase().includes('part')); + return hasParts; + }); + + // Strategy 2: action defs/usages that contain child actions + // (sequential behaviour — first/then/done flow) + const actionSeqCandidates = allElements.filter(el => { + if (!el.type || !el.children || el.children.length === 0) return false; + const typeLower = el.type.toLowerCase(); + const isAction = typeLower === 'action def' || typeLower === 'action definition' + || typeLower === 'action' || typeLower === 'action usage'; + if (!isAction) return false; + // Must have at least one child action (sequential steps) + const hasChildActions = el.children.some(c => { + if (!c.type) return false; + const ct = c.type.toLowerCase(); + return ct === 'action' || ct === 'action usage' || ct === 'action def'; + }); + return hasChildActions; + }); + + // Helper: collect participants from an element's children + // (actors, parts, items, ports) + function collectParticipants(el) { + const parts = []; + function walk(children) { + for (const c of children) { + if (!c.type) continue; + const t = c.type.toLowerCase(); + if (t === 'actor' || t === 'actor usage' || t === 'actor def') { + if (!parts.find(p => p.name === c.name)) { + parts.push({ name: c.name, type: 'actor' }); + } + } else if (t === 'part' || t === 'part usage' || t === 'part def' + || t === 'item' || t === 'item usage' || t === 'item def') { + if (!parts.find(p => p.name === c.name)) { + parts.push({ name: c.name, type: c.typing || 'component' }); + } + } else if (t === 'port' || t === 'port usage') { + if (!parts.find(p => p.name === c.name)) { + parts.push({ name: c.name, type: 'port' }); + } + } + if (c.children && c.children.length > 0) walk(c.children); + } + } + walk(el.children || []); + // Fallback: if no participants found, add a generic 'system' + if (parts.length === 0) { + parts.push({ name: 'system', type: 'system' }); + } + return parts; + } + + // Helper: build messages from child actions + function buildMessages(el, participants) { + const msgs = []; + let occ = 1; + function walk(children) { + for (const c of children) { + if (!c.type) continue; + const t = c.type.toLowerCase(); + if (t === 'action' || t === 'action usage' || t === 'action def') { + // Infer from/to using participant name matching (like ANTLR parser) + const cName = (c.name || '').toLowerCase(); + let from = participants[0]?.name || 'system'; + let to = participants.length > 1 ? participants[1].name : (participants[0]?.name || 'system'); + + // Try matching action name to participant names + for (const p of participants) { + const pLower = p.name.toLowerCase(); + if (cName.includes(pLower) || pLower.includes(cName)) { + to = p.name; + break; + } + } + // Prefer actor as 'from' if available + const actorP = participants.find(p => p.type === 'actor'); + if (actorP) from = actorP.name; + + msgs.push({ + name: c.name, + from, + to, + payload: c.name, + occurrence: occ++ + }); + // Recurse into nested action children + if (c.children && c.children.length > 0) walk(c.children); + } + } + } + walk(el.children || []); + return msgs; + } + + // Merge both strategies (deduplicate by name) + const allCandidatesMap = new Map(); + for (const c of seqCandidates) allCandidatesMap.set(c.name, c); + for (const c of actionSeqCandidates) { + if (!allCandidatesMap.has(c.name)) allCandidatesMap.set(c.name, c); + } + const allSeqCandidates = Array.from(allCandidatesMap.values()); + + if (allSeqCandidates.length > 0) { + const synthesisedDiagrams = allSeqCandidates.map(candidate => { + const participants = collectParticipants(candidate); + const messages = buildMessages(candidate, participants); + return { name: candidate.name, participants, messages }; + }); + + return { + ...data, + sequenceDiagrams: synthesisedDiagrams + }; + } + return { ...data, - sequenceDiagrams: data.sequenceDiagrams || [] + sequenceDiagrams: [] }; case 'usecase': @@ -2227,11 +2510,15 @@ export class VisualizationPanel { const actors = Array.from(actorsByName.values()); // Filter use cases - prefer definitions over usages to avoid duplicates - const allUseCases = allElements.filter(el => el.type && ( - el.type.includes('use case') || - el.type.includes('usecase') || - el.type.includes('UseCase') - )); + // Exclude 'include use case' usages — those represent <> relationships + const allUseCases = allElements.filter(el => { + if (!el.type) return false; + const typeLower = el.type.toLowerCase(); + if (typeLower === 'include use case') return false; + return typeLower.includes('use case') || + typeLower.includes('usecase') || + typeLower.includes('UseCase'); + }); // Group use cases by name (case-insensitive) and prefer definitions const useCasesByName = new Map(); @@ -2305,6 +2592,19 @@ export class VisualizationPanel { label: objectiveText }); } + + // Handle 'include use case' children — generate <> relationships + const isIncludeUseCase = childType === 'include use case'; + if (isIncludeUseCase) { + // The typing/specialization gives us the included use case + const includedUC = child.typing || child.name; + useCaseRelationships.push({ + source: useCase.name, + target: includedUC, + type: 'include', + label: '' + }); + } }); } }); @@ -2438,10 +2738,11 @@ export class VisualizationPanel { // Also add the actor usages to the actors list if they reference undefined actors // This ensures we show all actors even if they're only defined as usages + // LSP server emits actors with kind 'actor'; ANTLR uses 'actor usage' const actorUsages = allElements.filter(el => { if (!el.type) return false; const typeLower = el.type.toLowerCase(); - return typeLower === 'actor usage'; + return typeLower === 'actor usage' || typeLower === 'actor'; }); // Add unique actor usages that don't have matching definitions @@ -13114,6 +13415,11 @@ export class VisualizationPanel { } }); }); + + // Signal to the extension host that the webview is (re)initialized + // so it can push the current model data (e.g. after being dragged + // to a floating window which may recreate the iframe). + vscode.postMessage({ command: 'webviewReady' }); `; From 259f6f519380e5c2fc0dd80fe9b20b94c7620500 Mon Sep 17 00:00:00 2001 From: Jamie D Date: Sun, 22 Feb 2026 21:53:55 +0000 Subject: [PATCH 2/3] feat: add clearTimeout to global variables in ESLint configuration --- eslint.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.js b/eslint.config.js index aeb6bd5..605981d 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -28,6 +28,7 @@ module.exports = [ exports: 'readonly', global: 'readonly', setTimeout: 'readonly', + clearTimeout: 'readonly', AbortSignal: 'readonly', AbortController: 'readonly', DOMException: 'readonly', From dc5340b0d079229bf69dfa99d54eb7e7dcdd2bb6 Mon Sep 17 00:00:00 2001 From: Jamie D Date: Sun, 22 Feb 2026 22:01:10 +0000 Subject: [PATCH 3/3] feat: ensure extension activation before running LSP-dependent tests --- src/test/lspClient.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/lspClient.test.ts b/src/test/lspClient.test.ts index 3c30e66..2e56570 100644 --- a/src/test/lspClient.test.ts +++ b/src/test/lspClient.test.ts @@ -14,6 +14,15 @@ function sleep(ms: number): Promise { suite('LSP Client Integration Tests', () => { + // Ensure the extension is activated before running LSP-dependent tests + suiteSetup(async function () { + this.timeout(10000); + const ext = vscode.extensions.getExtension('jamied.sysml-v2-support'); + if (ext && !ext.isActive) { + await ext.activate(); + } + }); + test('Language server commands are registered', async function () { this.timeout(5000); const commands = await vscode.commands.getCommands(true);