aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-02-29 02:24:06 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-04-07 14:55:46 +0200
commit71fc54a96bf33dde7895ade0bd280887553125b0 (patch)
tree5b475f117ba9e999d9df8699d0bea77555e45bb5
parentfeat(query): left join for data variables (diff)
downloadrefinery-71fc54a96bf33dde7895ade0bd280887553125b0.tar.gz
refinery-71fc54a96bf33dde7895ade0bd280887553125b0.tar.zst
refinery-71fc54a96bf33dde7895ade0bd280887553125b0.zip
refactor(language): assignment and cast expression
Also reorganizes operator names for easier future extension.
-rw-r--r--subprojects/frontend/src/language/problem.grammar11
-rw-r--r--subprojects/frontend/src/language/problemLanguageSupport.ts2
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java15
-rw-r--r--subprojects/language-model/problem.aird431
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.ecore15
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.genmodel15
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/Problem.xtext31
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/resource/state/DerivedVariableComputer.java19
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/resource/state/ImplicitVariableScope.java18
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java30
10 files changed, 404 insertions, 183 deletions
diff --git a/subprojects/frontend/src/language/problem.grammar b/subprojects/frontend/src/language/problem.grammar
index 32f76f6a..0f6ea3e1 100644
--- a/subprojects/frontend/src/language/problem.grammar
+++ b/subprojects/frontend/src/language/problem.grammar
@@ -9,6 +9,7 @@
9@external prop implicitCompletion from './props' 9@external prop implicitCompletion from './props'
10 10
11@precedence { 11@precedence {
12 cast,
12 prefix, 13 prefix,
13 exponential @right, 14 exponential @right,
14 multiplicative @left, 15 multiplicative @left,
@@ -16,6 +17,7 @@
16 range @left, 17 range @left,
17 lattice @left, 18 lattice @left,
18 comparison @left, 19 comparison @left,
20 assignment,
19 feature @cut 21 feature @cut
20} 22}
21 23
@@ -97,14 +99,17 @@ Parameter { Modality? RelationName? VariableName }
97// Being looser with token sequencing enables more consistent syntactic highlighting. 99// Being looser with token sequencing enables more consistent syntactic highlighting.
98Conjunction { ("," | NextConjunction[@dynamicPrecedence=-10] { Expr })+ } 100Conjunction { ("," | NextConjunction[@dynamicPrecedence=-10] { Expr })+ }
99 101
100Case { Conjunction ("->" Expr)? } 102// Case { Conjunction ("->" Expr)? }
101 103
102OrOp { ";" } 104OrOp { ";" }
103 105
104Expr { 106Expr {
105 UnaryExpr | BinaryExpr | Aggregation | VariableName | Atom | Constant | "(" Expr ")" 107 AssignmentExpr | UnaryExpr | BinaryExpr | CastExpr | Aggregation |
108 VariableName | Atom | Constant | "(" Expr ")"
106} 109}
107 110
111AssignmentExpr { !assignment VariableName kw<"is"> Expr }
112
108BinaryExpr { 113BinaryExpr {
109 Expr !comparison ComparisonOp Expr | 114 Expr !comparison ComparisonOp Expr |
110 Expr !lattice (LatticeMeet | "\\/") Expr | 115 Expr !lattice (LatticeMeet | "\\/") Expr |
@@ -118,6 +123,8 @@ UnaryExpr {
118 !prefix ("+" | "-" | "!" | kw<"count"> | Modality) Expr 123 !prefix ("+" | "-" | "!" | kw<"count"> | Modality) Expr
119} 124}
120 125
126CastExpr { !cast Expr kw<"as"> DatatypeName }
127
121Aggregation { 128Aggregation {
122 AggregationOp "{" Expr "|" Expr "}" 129 AggregationOp "{" Expr "|" Expr "}"
123} 130}
diff --git a/subprojects/frontend/src/language/problemLanguageSupport.ts b/subprojects/frontend/src/language/problemLanguageSupport.ts
index 9500fbf2..3d25d699 100644
--- a/subprojects/frontend/src/language/problemLanguageSupport.ts
+++ b/subprojects/frontend/src/language/problemLanguageSupport.ts
@@ -33,7 +33,7 @@ const parserWithMetadata = parser.configure({
33 'default error contained containment': t.modifier, 33 'default error contained containment': t.modifier,
34 'true false unknown error': t.keyword, 34 'true false unknown error': t.keyword,
35 'may must current count': t.operatorKeyword, 35 'may must current count': t.operatorKeyword,
36 'sum prod min max in': t.operatorKeyword, 36 'sum prod min max in is': t.operatorKeyword,
37 // 'new delete': t.keyword, 37 // 'new delete': t.keyword,
38 NotOp: t.operator, 38 NotOp: t.operator,
39 UnknownOp: t.operator, 39 UnknownOp: t.operator,
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java
index a09a475b..8b2542f3 100644
--- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java
@@ -125,6 +125,13 @@ public class ProblemCrossrefProposalProvider extends IdeCrossrefProposalProvider
125 return oppositeShouldBeVisible(candidateReferenceDeclaration, context); 125 return oppositeShouldBeVisible(candidateReferenceDeclaration, context);
126 } 126 }
127 127
128 if (eReference.equals(ProblemPackage.Literals.VARIABLE_OR_NODE_EXPR__VARIABLE_OR_NODE)) {
129 var assignedVariable = getAssignedVariable(context.getCurrentModel());
130 if (assignedVariable != null && Objects.equals(assignedVariable, candidate.getEObjectOrProxy())) {
131 return false;
132 }
133 }
134
128 var builtinSymbolsOption = desugarer.getBuiltinSymbols(context.getRootModel()); 135 var builtinSymbolsOption = desugarer.getBuiltinSymbols(context.getRootModel());
129 if (builtinSymbolsOption.isEmpty()) { 136 if (builtinSymbolsOption.isEmpty()) {
130 return true; 137 return true;
@@ -135,6 +142,14 @@ public class ProblemCrossrefProposalProvider extends IdeCrossrefProposalProvider
135 candidateEObjectOrProxy); 142 candidateEObjectOrProxy);
136 } 143 }
137 144
145 private VariableOrNode getAssignedVariable(EObject context) {
146 var assignmentExpr = EcoreUtil2.getContainerOfType(context, AssignmentExpr.class);
147 if (assignmentExpr.getLeft() instanceof VariableOrNodeExpr variableOrNodeExpr) {
148 return variableOrNodeExpr.getVariableOrNode();
149 }
150 return null;
151 }
152
138 private boolean importedModuleShouldBeVisible(IEObjectDescription candidate, ContentAssistContext context) { 153 private boolean importedModuleShouldBeVisible(IEObjectDescription candidate, ContentAssistContext context) {
139 var moduleKind = candidate.getUserData(ProblemResourceDescriptionStrategy.MODULE_KIND); 154 var moduleKind = candidate.getUserData(ProblemResourceDescriptionStrategy.MODULE_KIND);
140 if (!ModuleKind.MODULE.getName().equals(moduleKind)) { 155 if (!ModuleKind.MODULE.getName().equals(moduleKind)) {
diff --git a/subprojects/language-model/problem.aird b/subprojects/language-model/problem.aird
index 37516af1..c253facb 100644
--- a/subprojects/language-model/problem.aird
+++ b/subprojects/language-model/problem.aird
@@ -11,7 +11,7 @@
11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
12 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> 12 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/>
13 </ownedRepresentationDescriptors> 13 </ownedRepresentationDescriptors>
14 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_z1bOYF3lEe2LuOZzJ_LhLg" name="expressions" repPath="#_z1YyIF3lEe2LuOZzJ_LhLg" changeId="1706657349781"> 14 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_z1bOYF3lEe2LuOZzJ_LhLg" name="expressions" repPath="#_z1YyIF3lEe2LuOZzJ_LhLg" changeId="1709214207759">
15 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 15 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
16 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> 16 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/>
17 </ownedRepresentationDescriptors> 17 </ownedRepresentationDescriptors>
@@ -2699,7 +2699,7 @@
2699 <styles xmi:type="notation:FilteringStyle" xmi:id="_8bUtNl3lEe2LuOZzJ_LhLg"/> 2699 <styles xmi:type="notation:FilteringStyle" xmi:id="_8bUtNl3lEe2LuOZzJ_LhLg"/>
2700 </children> 2700 </children>
2701 <styles xmi:type="notation:ShapeStyle" xmi:id="_8bUtMV3lEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8" italic="true"/> 2701 <styles xmi:type="notation:ShapeStyle" xmi:id="_8bUtMV3lEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8" italic="true"/>
2702 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8bUtMl3lEe2LuOZzJ_LhLg" x="548" y="168"/> 2702 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8bUtMl3lEe2LuOZzJ_LhLg" x="540" y="168"/>
2703 </children> 2703 </children>
2704 <children xmi:type="notation:Node" xmi:id="_9ZUmgF3lEe2LuOZzJ_LhLg" type="2003" element="_9Ys7cF3lEe2LuOZzJ_LhLg"> 2704 <children xmi:type="notation:Node" xmi:id="_9ZUmgF3lEe2LuOZzJ_LhLg" type="2003" element="_9Ys7cF3lEe2LuOZzJ_LhLg">
2705 <children xmi:type="notation:Node" xmi:id="_9ZVNkF3lEe2LuOZzJ_LhLg" type="5007"/> 2705 <children xmi:type="notation:Node" xmi:id="_9ZVNkF3lEe2LuOZzJ_LhLg" type="5007"/>
@@ -2708,7 +2708,7 @@
2708 <styles xmi:type="notation:FilteringStyle" xmi:id="_9ZVNk13lEe2LuOZzJ_LhLg"/> 2708 <styles xmi:type="notation:FilteringStyle" xmi:id="_9ZVNk13lEe2LuOZzJ_LhLg"/>
2709 </children> 2709 </children>
2710 <styles xmi:type="notation:ShapeStyle" xmi:id="_9ZUmgV3lEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2710 <styles xmi:type="notation:ShapeStyle" xmi:id="_9ZUmgV3lEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2711 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9ZUmgl3lEe2LuOZzJ_LhLg" x="360" y="168" width="135" height="100"/> 2711 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9ZUmgl3lEe2LuOZzJ_LhLg" x="352" y="168" width="135" height="100"/>
2712 </children> 2712 </children>
2713 <children xmi:type="notation:Node" xmi:id="_bTgeJl3tEe2LuOZzJ_LhLg" type="2003" element="_bTLuAF3tEe2LuOZzJ_LhLg"> 2713 <children xmi:type="notation:Node" xmi:id="_bTgeJl3tEe2LuOZzJ_LhLg" type="2003" element="_bTLuAF3tEe2LuOZzJ_LhLg">
2714 <children xmi:type="notation:Node" xmi:id="_bTgeKV3tEe2LuOZzJ_LhLg" type="5007"/> 2714 <children xmi:type="notation:Node" xmi:id="_bTgeKV3tEe2LuOZzJ_LhLg" type="5007"/>
@@ -2717,7 +2717,7 @@
2717 <styles xmi:type="notation:FilteringStyle" xmi:id="_bTgeLF3tEe2LuOZzJ_LhLg"/> 2717 <styles xmi:type="notation:FilteringStyle" xmi:id="_bTgeLF3tEe2LuOZzJ_LhLg"/>
2718 </children> 2718 </children>
2719 <styles xmi:type="notation:ShapeStyle" xmi:id="_bTgeJ13tEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2719 <styles xmi:type="notation:ShapeStyle" xmi:id="_bTgeJ13tEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2720 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bTgeKF3tEe2LuOZzJ_LhLg" x="1956" y="168" width="120" height="100"/> 2720 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bTgeKF3tEe2LuOZzJ_LhLg" x="2127" y="168" width="120" height="100"/>
2721 </children> 2721 </children>
2722 <children xmi:type="notation:Node" xmi:id="_meWJcF3uEe2LuOZzJ_LhLg" type="2003" element="_mdrbEF3uEe2LuOZzJ_LhLg"> 2722 <children xmi:type="notation:Node" xmi:id="_meWJcF3uEe2LuOZzJ_LhLg" type="2003" element="_mdrbEF3uEe2LuOZzJ_LhLg">
2723 <children xmi:type="notation:Node" xmi:id="_meWwgF3uEe2LuOZzJ_LhLg" type="5007"/> 2723 <children xmi:type="notation:Node" xmi:id="_meWwgF3uEe2LuOZzJ_LhLg" type="5007"/>
@@ -2768,19 +2768,11 @@
2768 <styles xmi:type="notation:FontStyle" xmi:id="_n5Y5MV3wEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2768 <styles xmi:type="notation:FontStyle" xmi:id="_n5Y5MV3wEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2769 <layoutConstraint xmi:type="notation:Location" xmi:id="_n5Y5Ml3wEe2LuOZzJ_LhLg"/> 2769 <layoutConstraint xmi:type="notation:Location" xmi:id="_n5Y5Ml3wEe2LuOZzJ_LhLg"/>
2770 </children> 2770 </children>
2771 <children xmi:type="notation:Node" xmi:id="_SoEXkGgrEe24RpwpWgpkFQ" type="3010" element="_Sn1HAGgrEe24RpwpWgpkFQ">
2772 <styles xmi:type="notation:FontStyle" xmi:id="_SoEXkWgrEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
2773 <layoutConstraint xmi:type="notation:Location" xmi:id="_SoEXkmgrEe24RpwpWgpkFQ"/>
2774 </children>
2775 <children xmi:type="notation:Node" xmi:id="_TrvbEGgrEe24RpwpWgpkFQ" type="3010" element="_TrhYoGgrEe24RpwpWgpkFQ">
2776 <styles xmi:type="notation:FontStyle" xmi:id="_TrvbEWgrEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
2777 <layoutConstraint xmi:type="notation:Location" xmi:id="_TrvbEmgrEe24RpwpWgpkFQ"/>
2778 </children>
2779 <styles xmi:type="notation:SortingStyle" xmi:id="_ccRVpV3wEe2LuOZzJ_LhLg"/> 2771 <styles xmi:type="notation:SortingStyle" xmi:id="_ccRVpV3wEe2LuOZzJ_LhLg"/>
2780 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccRVpl3wEe2LuOZzJ_LhLg"/> 2772 <styles xmi:type="notation:FilteringStyle" xmi:id="_ccRVpl3wEe2LuOZzJ_LhLg"/>
2781 </children> 2773 </children>
2782 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccRVoV3wEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2774 <styles xmi:type="notation:ShapeStyle" xmi:id="_ccRVoV3wEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2783 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccRVol3wEe2LuOZzJ_LhLg" x="1788" y="450" width="120" height="153"/> 2775 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ccRVol3wEe2LuOZzJ_LhLg" x="1788" y="450" width="120" height="117"/>
2784 </children> 2776 </children>
2785 <children xmi:type="notation:Node" xmi:id="_R7b9sF38Ee2LuOZzJ_LhLg" type="2003" element="_R7XFMF38Ee2LuOZzJ_LhLg"> 2777 <children xmi:type="notation:Node" xmi:id="_R7b9sF38Ee2LuOZzJ_LhLg" type="2003" element="_R7XFMF38Ee2LuOZzJ_LhLg">
2786 <children xmi:type="notation:Node" xmi:id="_R7b9s138Ee2LuOZzJ_LhLg" type="5007"/> 2778 <children xmi:type="notation:Node" xmi:id="_R7b9s138Ee2LuOZzJ_LhLg" type="5007"/>
@@ -2798,7 +2790,7 @@
2798 <styles xmi:type="notation:FilteringStyle" xmi:id="_WGzK5l38Ee2LuOZzJ_LhLg"/> 2790 <styles xmi:type="notation:FilteringStyle" xmi:id="_WGzK5l38Ee2LuOZzJ_LhLg"/>
2799 </children> 2791 </children>
2800 <styles xmi:type="notation:ShapeStyle" xmi:id="_WGzK4V38Ee2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2792 <styles xmi:type="notation:ShapeStyle" xmi:id="_WGzK4V38Ee2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2801 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzK4l38Ee2LuOZzJ_LhLg" x="548" y="452"/> 2793 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzK4l38Ee2LuOZzJ_LhLg" x="540" y="452"/>
2802 </children> 2794 </children>
2803 <children xmi:type="notation:Node" xmi:id="_fx_SQF4GEe2LuOZzJ_LhLg" type="2003" element="_fxsXUF4GEe2LuOZzJ_LhLg"> 2795 <children xmi:type="notation:Node" xmi:id="_fx_SQF4GEe2LuOZzJ_LhLg" type="2003" element="_fxsXUF4GEe2LuOZzJ_LhLg">
2804 <children xmi:type="notation:Node" xmi:id="_fx_SQ14GEe2LuOZzJ_LhLg" type="5007"/> 2796 <children xmi:type="notation:Node" xmi:id="_fx_SQ14GEe2LuOZzJ_LhLg" type="5007"/>
@@ -2858,7 +2850,7 @@
2858 <styles xmi:type="notation:FilteringStyle" xmi:id="_87Ju5l4IEe2LuOZzJ_LhLg"/> 2850 <styles xmi:type="notation:FilteringStyle" xmi:id="_87Ju5l4IEe2LuOZzJ_LhLg"/>
2859 </children> 2851 </children>
2860 <styles xmi:type="notation:ShapeStyle" xmi:id="_87Ju4V4IEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8" italic="true"/> 2852 <styles xmi:type="notation:ShapeStyle" xmi:id="_87Ju4V4IEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8" italic="true"/>
2861 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_87Ju4l4IEe2LuOZzJ_LhLg" x="2628" y="168"/> 2853 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_87Ju4l4IEe2LuOZzJ_LhLg" x="2880" y="168"/>
2862 </children> 2854 </children>
2863 <children xmi:type="notation:Node" xmi:id="_JYXdgF4JEe2LuOZzJ_LhLg" type="2003" element="_JYQIwF4JEe2LuOZzJ_LhLg"> 2855 <children xmi:type="notation:Node" xmi:id="_JYXdgF4JEe2LuOZzJ_LhLg" type="2003" element="_JYQIwF4JEe2LuOZzJ_LhLg">
2864 <children xmi:type="notation:Node" xmi:id="_JYXdg14JEe2LuOZzJ_LhLg" type="5007"/> 2856 <children xmi:type="notation:Node" xmi:id="_JYXdg14JEe2LuOZzJ_LhLg" type="5007"/>
@@ -2871,7 +2863,7 @@
2871 <styles xmi:type="notation:FilteringStyle" xmi:id="_JYXdhl4JEe2LuOZzJ_LhLg"/> 2863 <styles xmi:type="notation:FilteringStyle" xmi:id="_JYXdhl4JEe2LuOZzJ_LhLg"/>
2872 </children> 2864 </children>
2873 <styles xmi:type="notation:ShapeStyle" xmi:id="_JYXdgV4JEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2865 <styles xmi:type="notation:ShapeStyle" xmi:id="_JYXdgV4JEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2874 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JYXdgl4JEe2LuOZzJ_LhLg" x="2292" y="312"/> 2866 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JYXdgl4JEe2LuOZzJ_LhLg" x="2628" y="312"/>
2875 </children> 2867 </children>
2876 <children xmi:type="notation:Node" xmi:id="_JYYEkF4JEe2LuOZzJ_LhLg" type="2003" element="_JYQIw14JEe2LuOZzJ_LhLg"> 2868 <children xmi:type="notation:Node" xmi:id="_JYYEkF4JEe2LuOZzJ_LhLg" type="2003" element="_JYQIw14JEe2LuOZzJ_LhLg">
2877 <children xmi:type="notation:Node" xmi:id="_JYYEk14JEe2LuOZzJ_LhLg" type="5007"/> 2869 <children xmi:type="notation:Node" xmi:id="_JYYEk14JEe2LuOZzJ_LhLg" type="5007"/>
@@ -2884,7 +2876,7 @@
2884 <styles xmi:type="notation:FilteringStyle" xmi:id="_JYYEll4JEe2LuOZzJ_LhLg"/> 2876 <styles xmi:type="notation:FilteringStyle" xmi:id="_JYYEll4JEe2LuOZzJ_LhLg"/>
2885 </children> 2877 </children>
2886 <styles xmi:type="notation:ShapeStyle" xmi:id="_JYYEkV4JEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2878 <styles xmi:type="notation:ShapeStyle" xmi:id="_JYYEkV4JEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2887 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JYYEkl4JEe2LuOZzJ_LhLg" x="2441" y="312"/> 2879 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JYYEkl4JEe2LuOZzJ_LhLg" x="2777" y="312"/>
2888 </children> 2880 </children>
2889 <children xmi:type="notation:Node" xmi:id="_JYYEl14JEe2LuOZzJ_LhLg" type="2003" element="_JYQv0l4JEe2LuOZzJ_LhLg"> 2881 <children xmi:type="notation:Node" xmi:id="_JYYEl14JEe2LuOZzJ_LhLg" type="2003" element="_JYQv0l4JEe2LuOZzJ_LhLg">
2890 <children xmi:type="notation:Node" xmi:id="_JYYEml4JEe2LuOZzJ_LhLg" type="5007"/> 2882 <children xmi:type="notation:Node" xmi:id="_JYYEml4JEe2LuOZzJ_LhLg" type="5007"/>
@@ -2897,7 +2889,7 @@
2897 <styles xmi:type="notation:FilteringStyle" xmi:id="_JYYEnV4JEe2LuOZzJ_LhLg"/> 2889 <styles xmi:type="notation:FilteringStyle" xmi:id="_JYYEnV4JEe2LuOZzJ_LhLg"/>
2898 </children> 2890 </children>
2899 <styles xmi:type="notation:ShapeStyle" xmi:id="_JYYEmF4JEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 2891 <styles xmi:type="notation:ShapeStyle" xmi:id="_JYYEmF4JEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
2900 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JYYEmV4JEe2LuOZzJ_LhLg" x="2784" y="312"/> 2892 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JYYEmV4JEe2LuOZzJ_LhLg" x="2964" y="312"/>
2901 </children> 2893 </children>
2902 <children xmi:type="notation:Node" xmi:id="_9AqPEF4KEe2m7IaHDkh2Xg" type="2003" element="_9AeB0F4KEe2m7IaHDkh2Xg"> 2894 <children xmi:type="notation:Node" xmi:id="_9AqPEF4KEe2m7IaHDkh2Xg" type="2003" element="_9AeB0F4KEe2m7IaHDkh2Xg">
2903 <children xmi:type="notation:Node" xmi:id="_9ArdMF4KEe2m7IaHDkh2Xg" type="5007"/> 2895 <children xmi:type="notation:Node" xmi:id="_9ArdMF4KEe2m7IaHDkh2Xg" type="5007"/>
@@ -2915,7 +2907,7 @@
2915 <styles xmi:type="notation:FilteringStyle" xmi:id="_4qq0Vl4MEe2m7IaHDkh2Xg"/> 2907 <styles xmi:type="notation:FilteringStyle" xmi:id="_4qq0Vl4MEe2m7IaHDkh2Xg"/>
2916 </children> 2908 </children>
2917 <styles xmi:type="notation:ShapeStyle" xmi:id="_4qq0UV4MEe2m7IaHDkh2Xg" fontName="Noto Sans" fontHeight="8" italic="true"/> 2909 <styles xmi:type="notation:ShapeStyle" xmi:id="_4qq0UV4MEe2m7IaHDkh2Xg" fontName="Noto Sans" fontHeight="8" italic="true"/>
2918 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4qq0Ul4MEe2m7IaHDkh2Xg" x="548" y="312"/> 2910 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4qq0Ul4MEe2m7IaHDkh2Xg" x="540" y="312"/>
2919 </children> 2911 </children>
2920 <children xmi:type="notation:Node" xmi:id="_GNwrgGTUEe2qdtyPWAtoxA" type="2003" element="_GNovsGTUEe2qdtyPWAtoxA"> 2912 <children xmi:type="notation:Node" xmi:id="_GNwrgGTUEe2qdtyPWAtoxA" type="2003" element="_GNovsGTUEe2qdtyPWAtoxA">
2921 <children xmi:type="notation:Node" xmi:id="_GNwrg2TUEe2qdtyPWAtoxA" type="5007"/> 2913 <children xmi:type="notation:Node" xmi:id="_GNwrg2TUEe2qdtyPWAtoxA" type="5007"/>
@@ -2928,7 +2920,7 @@
2928 <styles xmi:type="notation:FilteringStyle" xmi:id="_GNwrhmTUEe2qdtyPWAtoxA"/> 2920 <styles xmi:type="notation:FilteringStyle" xmi:id="_GNwrhmTUEe2qdtyPWAtoxA"/>
2929 </children> 2921 </children>
2930 <styles xmi:type="notation:ShapeStyle" xmi:id="_GNwrgWTUEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/> 2922 <styles xmi:type="notation:ShapeStyle" xmi:id="_GNwrgWTUEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/>
2931 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNwrgmTUEe2qdtyPWAtoxA" x="1956" y="312" width="123"/> 2923 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNwrgmTUEe2qdtyPWAtoxA" x="2124" y="312" width="123"/>
2932 </children> 2924 </children>
2933 <children xmi:type="notation:Node" xmi:id="_M-upAGTUEe2qdtyPWAtoxA" type="2003" element="_M-ZR0GTUEe2qdtyPWAtoxA"> 2925 <children xmi:type="notation:Node" xmi:id="_M-upAGTUEe2qdtyPWAtoxA" type="2003" element="_M-ZR0GTUEe2qdtyPWAtoxA">
2934 <children xmi:type="notation:Node" xmi:id="_M-upA2TUEe2qdtyPWAtoxA" type="5007"/> 2926 <children xmi:type="notation:Node" xmi:id="_M-upA2TUEe2qdtyPWAtoxA" type="5007"/>
@@ -2994,7 +2986,7 @@
2994 <styles xmi:type="notation:FilteringStyle" xmi:id="_QkXS9mTUEe2qdtyPWAtoxA"/> 2986 <styles xmi:type="notation:FilteringStyle" xmi:id="_QkXS9mTUEe2qdtyPWAtoxA"/>
2995 </children> 2987 </children>
2996 <styles xmi:type="notation:ShapeStyle" xmi:id="_QkXS8WTUEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/> 2988 <styles xmi:type="notation:ShapeStyle" xmi:id="_QkXS8WTUEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/>
2997 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkXS8mTUEe2qdtyPWAtoxA" x="1958" y="448" height="215"/> 2989 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkXS8mTUEe2qdtyPWAtoxA" x="2126" y="448" height="215"/>
2998 </children> 2990 </children>
2999 <children xmi:type="notation:Node" xmi:id="_36XqIGTuEe2qdtyPWAtoxA" type="2003" element="_36CS8GTuEe2qdtyPWAtoxA"> 2991 <children xmi:type="notation:Node" xmi:id="_36XqIGTuEe2qdtyPWAtoxA" type="2003" element="_36CS8GTuEe2qdtyPWAtoxA">
3000 <children xmi:type="notation:Node" xmi:id="_36YRMGTuEe2qdtyPWAtoxA" type="5007"/> 2992 <children xmi:type="notation:Node" xmi:id="_36YRMGTuEe2qdtyPWAtoxA" type="5007"/>
@@ -3025,7 +3017,7 @@
3025 <styles xmi:type="notation:FilteringStyle" xmi:id="_LC6oVmTvEe2qdtyPWAtoxA"/> 3017 <styles xmi:type="notation:FilteringStyle" xmi:id="_LC6oVmTvEe2qdtyPWAtoxA"/>
3026 </children> 3018 </children>
3027 <styles xmi:type="notation:ShapeStyle" xmi:id="_LC6oUWTvEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/> 3019 <styles xmi:type="notation:ShapeStyle" xmi:id="_LC6oUWTvEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/>
3028 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC6oUmTvEe2qdtyPWAtoxA" x="168" y="168" width="124"/> 3020 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC6oUmTvEe2qdtyPWAtoxA" x="180" y="168" width="124"/>
3029 </children> 3021 </children>
3030 <children xmi:type="notation:Node" xmi:id="_Z0bU0GTvEe2qdtyPWAtoxA" type="2003" element="_Z0MrUGTvEe2qdtyPWAtoxA"> 3022 <children xmi:type="notation:Node" xmi:id="_Z0bU0GTvEe2qdtyPWAtoxA" type="2003" element="_Z0MrUGTvEe2qdtyPWAtoxA">
3031 <children xmi:type="notation:Node" xmi:id="_Z0bU02TvEe2qdtyPWAtoxA" type="5007"/> 3023 <children xmi:type="notation:Node" xmi:id="_Z0bU02TvEe2qdtyPWAtoxA" type="5007"/>
@@ -3034,7 +3026,7 @@
3034 <styles xmi:type="notation:FilteringStyle" xmi:id="_Z0bU1mTvEe2qdtyPWAtoxA"/> 3026 <styles xmi:type="notation:FilteringStyle" xmi:id="_Z0bU1mTvEe2qdtyPWAtoxA"/>
3035 </children> 3027 </children>
3036 <styles xmi:type="notation:ShapeStyle" xmi:id="_Z0bU0WTvEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/> 3028 <styles xmi:type="notation:ShapeStyle" xmi:id="_Z0bU0WTvEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/>
3037 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z0bU0mTvEe2qdtyPWAtoxA" x="170" y="312" width="120" height="100"/> 3029 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z0bU0mTvEe2qdtyPWAtoxA" x="182" y="312" width="120" height="100"/>
3038 </children> 3030 </children>
3039 <children xmi:type="notation:Node" xmi:id="_DNRsUGTwEe2qdtyPWAtoxA" type="2003" element="_DM_YcGTwEe2qdtyPWAtoxA"> 3031 <children xmi:type="notation:Node" xmi:id="_DNRsUGTwEe2qdtyPWAtoxA" type="2003" element="_DM_YcGTwEe2qdtyPWAtoxA">
3040 <children xmi:type="notation:Node" xmi:id="_DNRsU2TwEe2qdtyPWAtoxA" type="5007"/> 3032 <children xmi:type="notation:Node" xmi:id="_DNRsU2TwEe2qdtyPWAtoxA" type="5007"/>
@@ -3081,16 +3073,7 @@
3081 <styles xmi:type="notation:FilteringStyle" xmi:id="_3ahdpmgpEe24RpwpWgpkFQ"/> 3073 <styles xmi:type="notation:FilteringStyle" xmi:id="_3ahdpmgpEe24RpwpWgpkFQ"/>
3082 </children> 3074 </children>
3083 <styles xmi:type="notation:ShapeStyle" xmi:id="_3ahdoWgpEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/> 3075 <styles xmi:type="notation:ShapeStyle" xmi:id="_3ahdoWgpEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
3084 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3ahdomgpEe24RpwpWgpkFQ" x="2124" y="312" width="120" height="100"/> 3076 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3ahdomgpEe24RpwpWgpkFQ" x="2292" y="312" width="120" height="100"/>
3085 </children>
3086 <children xmi:type="notation:Node" xmi:id="_zs6moGgtEe24RpwpWgpkFQ" type="2003" element="_zsr9IGgtEe24RpwpWgpkFQ">
3087 <children xmi:type="notation:Node" xmi:id="_zs7NsGgtEe24RpwpWgpkFQ" type="5007"/>
3088 <children xmi:type="notation:Node" xmi:id="_zs7NsWgtEe24RpwpWgpkFQ" type="7004">
3089 <styles xmi:type="notation:SortingStyle" xmi:id="_zs7NsmgtEe24RpwpWgpkFQ"/>
3090 <styles xmi:type="notation:FilteringStyle" xmi:id="_zs7Ns2gtEe24RpwpWgpkFQ"/>
3091 </children>
3092 <styles xmi:type="notation:ShapeStyle" xmi:id="_zs6moWgtEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
3093 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zs6momgtEe24RpwpWgpkFQ" x="2628" y="312" width="120" height="100"/>
3094 </children> 3077 </children>
3095 <children xmi:type="notation:Node" xmi:id="_ZjfaEGkGEe24rIYSlCjKHA" type="2003" element="_Zi8AcGkGEe24rIYSlCjKHA"> 3078 <children xmi:type="notation:Node" xmi:id="_ZjfaEGkGEe24rIYSlCjKHA" type="2003" element="_Zi8AcGkGEe24rIYSlCjKHA">
3096 <children xmi:type="notation:Node" xmi:id="_ZjkSkGkGEe24rIYSlCjKHA" type="5007"/> 3079 <children xmi:type="notation:Node" xmi:id="_ZjkSkGkGEe24rIYSlCjKHA" type="5007"/>
@@ -3103,7 +3086,7 @@
3103 <styles xmi:type="notation:FilteringStyle" xmi:id="_ZjkSk2kGEe24rIYSlCjKHA"/> 3086 <styles xmi:type="notation:FilteringStyle" xmi:id="_ZjkSk2kGEe24rIYSlCjKHA"/>
3104 </children> 3087 </children>
3105 <styles xmi:type="notation:ShapeStyle" xmi:id="_ZjfaEWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/> 3088 <styles xmi:type="notation:ShapeStyle" xmi:id="_ZjfaEWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3106 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZjfaEmkGEe24rIYSlCjKHA" x="2952" y="312" width="120" height="100"/> 3089 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZjfaEmkGEe24rIYSlCjKHA" x="3132" y="312" width="120" height="100"/>
3107 </children> 3090 </children>
3108 <children xmi:type="notation:Node" xmi:id="_fdU7QGkGEe24rIYSlCjKHA" type="2003" element="_fdLKQGkGEe24rIYSlCjKHA"> 3091 <children xmi:type="notation:Node" xmi:id="_fdU7QGkGEe24rIYSlCjKHA" type="2003" element="_fdLKQGkGEe24rIYSlCjKHA">
3109 <children xmi:type="notation:Node" xmi:id="_fdViUGkGEe24rIYSlCjKHA" type="5007"/> 3092 <children xmi:type="notation:Node" xmi:id="_fdViUGkGEe24rIYSlCjKHA" type="5007"/>
@@ -3128,7 +3111,55 @@
3128 <styles xmi:type="notation:FilteringStyle" xmi:id="_fdViU2kGEe24rIYSlCjKHA"/> 3111 <styles xmi:type="notation:FilteringStyle" xmi:id="_fdViU2kGEe24rIYSlCjKHA"/>
3129 </children> 3112 </children>
3130 <styles xmi:type="notation:ShapeStyle" xmi:id="_fdU7QWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/> 3113 <styles xmi:type="notation:ShapeStyle" xmi:id="_fdU7QWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3131 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fdU7QmkGEe24rIYSlCjKHA" x="2952" y="446"/> 3114 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fdU7QmkGEe24rIYSlCjKHA" x="3132" y="449"/>
3115 </children>
3116 <children xmi:type="notation:Node" xmi:id="_IYGPgNZUEe69IbObpvsypA" type="2003" element="_IXrYwNZUEe69IbObpvsypA">
3117 <children xmi:type="notation:Node" xmi:id="_IYGPg9ZUEe69IbObpvsypA" type="5007"/>
3118 <children xmi:type="notation:Node" xmi:id="_IYGPhNZUEe69IbObpvsypA" type="7004">
3119 <children xmi:type="notation:Node" xmi:id="_W0tqENZUEe69IbObpvsypA" type="3010" element="_W0CUoNZUEe69IbObpvsypA">
3120 <styles xmi:type="notation:FontStyle" xmi:id="_W0tqEdZUEe69IbObpvsypA" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
3121 <layoutConstraint xmi:type="notation:Location" xmi:id="_W0tqEtZUEe69IbObpvsypA"/>
3122 </children>
3123 <styles xmi:type="notation:SortingStyle" xmi:id="_IYGPhdZUEe69IbObpvsypA"/>
3124 <styles xmi:type="notation:FilteringStyle" xmi:id="_IYGPhtZUEe69IbObpvsypA"/>
3125 </children>
3126 <styles xmi:type="notation:ShapeStyle" xmi:id="_IYGPgdZUEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3127 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IYGPgtZUEe69IbObpvsypA" x="1956" y="312" width="120" height="100"/>
3128 </children>
3129 <children xmi:type="notation:Node" xmi:id="_Nm2zYNZUEe69IbObpvsypA" type="2003" element="_Nmg1INZUEe69IbObpvsypA">
3130 <children xmi:type="notation:Node" xmi:id="_Nm2zY9ZUEe69IbObpvsypA" type="5007"/>
3131 <children xmi:type="notation:Node" xmi:id="_Nm3acNZUEe69IbObpvsypA" type="7004">
3132 <children xmi:type="notation:Node" xmi:id="_TQ7aQNZUEe69IbObpvsypA" type="3010" element="_TQOPoNZUEe69IbObpvsypA">
3133 <styles xmi:type="notation:FontStyle" xmi:id="_TQ7aQdZUEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3134 <layoutConstraint xmi:type="notation:Location" xmi:id="_TQ7aQtZUEe69IbObpvsypA"/>
3135 </children>
3136 <children xmi:type="notation:Node" xmi:id="_UGDrcNZUEe69IbObpvsypA" type="3010" element="_UFttMNZUEe69IbObpvsypA">
3137 <styles xmi:type="notation:FontStyle" xmi:id="_UGDrcdZUEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3138 <layoutConstraint xmi:type="notation:Location" xmi:id="_UGDrctZUEe69IbObpvsypA"/>
3139 </children>
3140 <styles xmi:type="notation:SortingStyle" xmi:id="_Nm3acdZUEe69IbObpvsypA"/>
3141 <styles xmi:type="notation:FilteringStyle" xmi:id="_Nm3actZUEe69IbObpvsypA"/>
3142 </children>
3143 <styles xmi:type="notation:ShapeStyle" xmi:id="_Nm2zYdZUEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3144 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nm2zYtZUEe69IbObpvsypA" x="1956" y="449" width="120" height="100"/>
3145 </children>
3146 <children xmi:type="notation:Node" xmi:id="_FTa2MNZXEe69IbObpvsypA" type="2003" element="_FTH7QNZXEe69IbObpvsypA">
3147 <children xmi:type="notation:Node" xmi:id="_FTbdQNZXEe69IbObpvsypA" type="5007"/>
3148 <children xmi:type="notation:Node" xmi:id="_FTbdQdZXEe69IbObpvsypA" type="7004">
3149 <styles xmi:type="notation:SortingStyle" xmi:id="_FTbdQtZXEe69IbObpvsypA"/>
3150 <styles xmi:type="notation:FilteringStyle" xmi:id="_FTbdQ9ZXEe69IbObpvsypA"/>
3151 </children>
3152 <styles xmi:type="notation:ShapeStyle" xmi:id="_FTa2MdZXEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3153 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FTa2MtZXEe69IbObpvsypA" x="12" y="168" width="120" height="100"/>
3154 </children>
3155 <children xmi:type="notation:Node" xmi:id="_c0t34NcIEe6pjNxdSs0E0Q" type="2003" element="_c0BUUNcIEe6pjNxdSs0E0Q">
3156 <children xmi:type="notation:Node" xmi:id="_c0ywYNcIEe6pjNxdSs0E0Q" type="5007"/>
3157 <children xmi:type="notation:Node" xmi:id="_c0zXcNcIEe6pjNxdSs0E0Q" type="7004">
3158 <styles xmi:type="notation:SortingStyle" xmi:id="_c0zXcdcIEe6pjNxdSs0E0Q"/>
3159 <styles xmi:type="notation:FilteringStyle" xmi:id="_c0zXctcIEe6pjNxdSs0E0Q"/>
3160 </children>
3161 <styles xmi:type="notation:ShapeStyle" xmi:id="_c0ue8NcIEe6pjNxdSs0E0Q" fontName="Noto Sans" fontHeight="8"/>
3162 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c0ue8dcIEe6pjNxdSs0E0Q" x="2460" y="312" width="120" height="100"/>
3132 </children> 3163 </children>
3133 <styles xmi:type="notation:DiagramStyle" xmi:id="_z1ff0l3lEe2LuOZzJ_LhLg"/> 3164 <styles xmi:type="notation:DiagramStyle" xmi:id="_z1ff0l3lEe2LuOZzJ_LhLg"/>
3134 <edges xmi:type="notation:Edge" xmi:id="_C-b04F3mEe2LuOZzJ_LhLg" type="4001" element="_C9_I8F3mEe2LuOZzJ_LhLg" source="_9ZUmgF3lEe2LuOZzJ_LhLg" target="_8bUtMF3lEe2LuOZzJ_LhLg"> 3165 <edges xmi:type="notation:Edge" xmi:id="_C-b04F3mEe2LuOZzJ_LhLg" type="4001" element="_C9_I8F3mEe2LuOZzJ_LhLg" source="_9ZUmgF3lEe2LuOZzJ_LhLg" target="_8bUtMF3lEe2LuOZzJ_LhLg">
@@ -3165,33 +3196,33 @@
3165 </edges> 3196 </edges>
3166 <edges xmi:type="notation:Edge" xmi:id="_oAifgF3vEe2LuOZzJ_LhLg" type="4001" element="_oARZ0l3vEe2LuOZzJ_LhLg" source="_bTgeJl3tEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3197 <edges xmi:type="notation:Edge" xmi:id="_oAifgF3vEe2LuOZzJ_LhLg" type="4001" element="_oARZ0l3vEe2LuOZzJ_LhLg" source="_bTgeJl3tEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3167 <children xmi:type="notation:Node" xmi:id="_oAifhF3vEe2LuOZzJ_LhLg" type="6001"> 3198 <children xmi:type="notation:Node" xmi:id="_oAifhF3vEe2LuOZzJ_LhLg" type="6001">
3168 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oAifhV3vEe2LuOZzJ_LhLg" x="-281" y="-38"/> 3199 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oAifhV3vEe2LuOZzJ_LhLg" x="-367" y="-38"/>
3169 </children> 3200 </children>
3170 <children xmi:type="notation:Node" xmi:id="_oAifhl3vEe2LuOZzJ_LhLg" type="6002"> 3201 <children xmi:type="notation:Node" xmi:id="_oAifhl3vEe2LuOZzJ_LhLg" type="6002">
3171 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oAifh13vEe2LuOZzJ_LhLg" x="-26" y="-68"/> 3202 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oAifh13vEe2LuOZzJ_LhLg" x="-52" y="-68"/>
3172 </children> 3203 </children>
3173 <children xmi:type="notation:Node" xmi:id="_oAifiF3vEe2LuOZzJ_LhLg" type="6003"> 3204 <children xmi:type="notation:Node" xmi:id="_oAifiF3vEe2LuOZzJ_LhLg" type="6003">
3174 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oAifiV3vEe2LuOZzJ_LhLg" x="-324" y="-10"/> 3205 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oAifiV3vEe2LuOZzJ_LhLg" x="-298" y="-10"/>
3175 </children> 3206 </children>
3176 <styles xmi:type="notation:ConnectorStyle" xmi:id="_oAifgV3vEe2LuOZzJ_LhLg" routing="Rectilinear"/> 3207 <styles xmi:type="notation:ConnectorStyle" xmi:id="_oAifgV3vEe2LuOZzJ_LhLg" routing="Rectilinear"/>
3177 <styles xmi:type="notation:FontStyle" xmi:id="_oAifgl3vEe2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 3208 <styles xmi:type="notation:FontStyle" xmi:id="_oAifgl3vEe2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3178 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oAifg13vEe2LuOZzJ_LhLg" points="[6, 0, 803, 50]$[6, -96, 803, -46]$[-715, -96, 82, -46]"/> 3209 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oAifg13vEe2LuOZzJ_LhLg" points="[6, 0, 974, 50]$[6, -96, 974, -46]$[-886, -96, 82, -46]"/>
3179 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oAifil3vEe2LuOZzJ_LhLg" id="(0.3050847457627119,0.0)"/> 3210 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oAifil3vEe2LuOZzJ_LhLg" id="(0.3050847457627119,0.0)"/>
3180 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oAifi13vEe2LuOZzJ_LhLg" id="(0.3050847457627119,1.0)"/> 3211 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oAifi13vEe2LuOZzJ_LhLg" id="(0.3050847457627119,1.0)"/>
3181 </edges> 3212 </edges>
3182 <edges xmi:type="notation:Edge" xmi:id="_qyMHwF3vEe2LuOZzJ_LhLg" type="4001" element="_qx9eWF3vEe2LuOZzJ_LhLg" source="_bTgeJl3tEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3213 <edges xmi:type="notation:Edge" xmi:id="_qyMHwF3vEe2LuOZzJ_LhLg" type="4001" element="_qx9eWF3vEe2LuOZzJ_LhLg" source="_bTgeJl3tEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3183 <children xmi:type="notation:Node" xmi:id="_qyMHxF3vEe2LuOZzJ_LhLg" type="6001"> 3214 <children xmi:type="notation:Node" xmi:id="_qyMHxF3vEe2LuOZzJ_LhLg" type="6001">
3184 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qyMHxV3vEe2LuOZzJ_LhLg" x="-354" y="-62"/> 3215 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qyMHxV3vEe2LuOZzJ_LhLg" x="-440" y="-62"/>
3185 </children> 3216 </children>
3186 <children xmi:type="notation:Node" xmi:id="_qyMHxl3vEe2LuOZzJ_LhLg" type="6002"> 3217 <children xmi:type="notation:Node" xmi:id="_qyMHxl3vEe2LuOZzJ_LhLg" type="6002">
3187 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qyMHx13vEe2LuOZzJ_LhLg" x="-10" y="-83"/> 3218 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qyMHx13vEe2LuOZzJ_LhLg" x="-36" y="-83"/>
3188 </children> 3219 </children>
3189 <children xmi:type="notation:Node" xmi:id="_qyMHyF3vEe2LuOZzJ_LhLg" type="6003"> 3220 <children xmi:type="notation:Node" xmi:id="_qyMHyF3vEe2LuOZzJ_LhLg" type="6003">
3190 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qyMHyV3vEe2LuOZzJ_LhLg" x="-330" y="-10"/> 3221 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qyMHyV3vEe2LuOZzJ_LhLg" x="-304" y="-10"/>
3191 </children> 3222 </children>
3192 <styles xmi:type="notation:ConnectorStyle" xmi:id="_qyMHwV3vEe2LuOZzJ_LhLg" routing="Rectilinear"/> 3223 <styles xmi:type="notation:ConnectorStyle" xmi:id="_qyMHwV3vEe2LuOZzJ_LhLg" routing="Rectilinear"/>
3193 <styles xmi:type="notation:FontStyle" xmi:id="_qyMHwl3vEe2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 3224 <styles xmi:type="notation:FontStyle" xmi:id="_qyMHwl3vEe2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3194 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qyMHw13vEe2LuOZzJ_LhLg" points="[0, 0, 797, 50]$[0, -120, 797, -70]$[-751, -120, 46, -70]"/> 3225 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qyMHw13vEe2LuOZzJ_LhLg" points="[0, 0, 968, 50]$[0, -120, 968, -70]$[-922, -120, 46, -70]"/>
3195 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qyMHyl3vEe2LuOZzJ_LhLg" id="(0.6101694915254238,0.0)"/> 3226 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qyMHyl3vEe2LuOZzJ_LhLg" id="(0.6101694915254238,0.0)"/>
3196 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qyMHy13vEe2LuOZzJ_LhLg" id="(0.6101694915254238,1.0)"/> 3227 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qyMHy13vEe2LuOZzJ_LhLg" id="(0.6101694915254238,1.0)"/>
3197 </edges> 3228 </edges>
@@ -3213,33 +3244,33 @@
3213 </edges> 3244 </edges>
3214 <edges xmi:type="notation:Edge" xmi:id="_v0nf0F3vEe2LuOZzJ_LhLg" type="4001" element="_v0WaHF3vEe2LuOZzJ_LhLg" source="_bTgeJl3tEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3245 <edges xmi:type="notation:Edge" xmi:id="_v0nf0F3vEe2LuOZzJ_LhLg" type="4001" element="_v0WaHF3vEe2LuOZzJ_LhLg" source="_bTgeJl3tEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3215 <children xmi:type="notation:Node" xmi:id="_v0nf1F3vEe2LuOZzJ_LhLg" type="6001"> 3246 <children xmi:type="notation:Node" xmi:id="_v0nf1F3vEe2LuOZzJ_LhLg" type="6001">
3216 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v0nf1V3vEe2LuOZzJ_LhLg" x="5" y="-10"/> 3247 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v0nf1V3vEe2LuOZzJ_LhLg" x="-7" y="-10"/>
3217 </children> 3248 </children>
3218 <children xmi:type="notation:Node" xmi:id="_v0nf1l3vEe2LuOZzJ_LhLg" type="6002"> 3249 <children xmi:type="notation:Node" xmi:id="_v0nf1l3vEe2LuOZzJ_LhLg" type="6002">
3219 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v0nf113vEe2LuOZzJ_LhLg" x="-6" y="10"/> 3250 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v0nf113vEe2LuOZzJ_LhLg" x="-18" y="10"/>
3220 </children> 3251 </children>
3221 <children xmi:type="notation:Node" xmi:id="_v0nf2F3vEe2LuOZzJ_LhLg" type="6003"> 3252 <children xmi:type="notation:Node" xmi:id="_v0nf2F3vEe2LuOZzJ_LhLg" type="6003">
3222 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v0nf2V3vEe2LuOZzJ_LhLg" x="18" y="10"/> 3253 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v0nf2V3vEe2LuOZzJ_LhLg" x="6" y="10"/>
3223 </children> 3254 </children>
3224 <styles xmi:type="notation:ConnectorStyle" xmi:id="_v0nf0V3vEe2LuOZzJ_LhLg" routing="Tree"/> 3255 <styles xmi:type="notation:ConnectorStyle" xmi:id="_v0nf0V3vEe2LuOZzJ_LhLg" routing="Tree"/>
3225 <styles xmi:type="notation:FontStyle" xmi:id="_v0nf0l3vEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/> 3256 <styles xmi:type="notation:FontStyle" xmi:id="_v0nf0l3vEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8"/>
3226 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v0nf013vEe2LuOZzJ_LhLg" points="[0, -2, 758, 99]$[0, -38, 758, 63]$[-764, -38, -6, 63]$[-764, -52, -6, 49]"/> 3257 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v0nf013vEe2LuOZzJ_LhLg" points="[0, -2, 758, 99]$[0, -26, 758, 75]$[-764, -26, -6, 75]$[-764, -52, -6, 49]"/>
3227 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v0nf2l3vEe2LuOZzJ_LhLg" id="(0.1694915254237288,0.02040816326530612)"/> 3258 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v0nf2l3vEe2LuOZzJ_LhLg" id="(0.1694915254237288,0.02040816326530612)"/>
3228 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v0nf213vEe2LuOZzJ_LhLg" id="(0.5,0.5)"/> 3259 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v0nf213vEe2LuOZzJ_LhLg" id="(0.5,0.5)"/>
3229 </edges> 3260 </edges>
3230 <edges xmi:type="notation:Edge" xmi:id="_WGzx8F38Ee2LuOZzJ_LhLg" type="4001" element="_WGxVyF38Ee2LuOZzJ_LhLg" source="_R7b9sF38Ee2LuOZzJ_LhLg" target="_WGzK4F38Ee2LuOZzJ_LhLg"> 3261 <edges xmi:type="notation:Edge" xmi:id="_WGzx8F38Ee2LuOZzJ_LhLg" type="4001" element="_WGxVyF38Ee2LuOZzJ_LhLg" source="_R7b9sF38Ee2LuOZzJ_LhLg" target="_WGzK4F38Ee2LuOZzJ_LhLg">
3231 <children xmi:type="notation:Node" xmi:id="_WGzx9F38Ee2LuOZzJ_LhLg" type="6001"> 3262 <children xmi:type="notation:Node" xmi:id="_WGzx9F38Ee2LuOZzJ_LhLg" type="6001">
3232 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzx9V38Ee2LuOZzJ_LhLg" x="80" y="45"/> 3263 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzx9V38Ee2LuOZzJ_LhLg" x="76" y="45"/>
3233 </children> 3264 </children>
3234 <children xmi:type="notation:Node" xmi:id="_WGzx9l38Ee2LuOZzJ_LhLg" type="6002"> 3265 <children xmi:type="notation:Node" xmi:id="_WGzx9l38Ee2LuOZzJ_LhLg" type="6002">
3235 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzx9138Ee2LuOZzJ_LhLg" x="-27" y="10"/> 3266 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzx9138Ee2LuOZzJ_LhLg" x="-28" y="10"/>
3236 </children> 3267 </children>
3237 <children xmi:type="notation:Node" xmi:id="_WGzx-F38Ee2LuOZzJ_LhLg" type="6003"> 3268 <children xmi:type="notation:Node" xmi:id="_WGzx-F38Ee2LuOZzJ_LhLg" type="6003">
3238 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzx-V38Ee2LuOZzJ_LhLg" x="-44" y="158"/> 3269 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGzx-V38Ee2LuOZzJ_LhLg" x="-51" y="158"/>
3239 </children> 3270 </children>
3240 <styles xmi:type="notation:ConnectorStyle" xmi:id="_WGzx8V38Ee2LuOZzJ_LhLg" routing="Rectilinear"/> 3271 <styles xmi:type="notation:ConnectorStyle" xmi:id="_WGzx8V38Ee2LuOZzJ_LhLg" routing="Rectilinear"/>
3241 <styles xmi:type="notation:FontStyle" xmi:id="_WGzx8l38Ee2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 3272 <styles xmi:type="notation:FontStyle" xmi:id="_WGzx8l38Ee2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3242 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WGzx8138Ee2LuOZzJ_LhLg" points="[-1, 49, 166, -235]$[-1, 291, 166, 7]$[-108, 291, 59, 7]"/> 3273 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WGzx8138Ee2LuOZzJ_LhLg" points="[-1, 49, 174, -235]$[-1, 291, 174, 7]$[-116, 291, 59, 7]"/>
3243 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WG0ZAF38Ee2LuOZzJ_LhLg" id="(0.472,0.5)"/> 3274 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WG0ZAF38Ee2LuOZzJ_LhLg" id="(0.472,0.5)"/>
3244 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WG0ZAV38Ee2LuOZzJ_LhLg" id="(0.5,0.5)"/> 3275 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WG0ZAV38Ee2LuOZzJ_LhLg" id="(0.5,0.5)"/>
3245 </edges> 3276 </edges>
@@ -3261,17 +3292,17 @@
3261 </edges> 3292 </edges>
3262 <edges xmi:type="notation:Edge" xmi:id="_ObvisF4HEe2LuOZzJ_LhLg" type="4001" element="_ObhgTF4HEe2LuOZzJ_LhLg" source="_3BISYF4GEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3293 <edges xmi:type="notation:Edge" xmi:id="_ObvisF4HEe2LuOZzJ_LhLg" type="4001" element="_ObhgTF4HEe2LuOZzJ_LhLg" source="_3BISYF4GEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3263 <children xmi:type="notation:Node" xmi:id="_ObvitF4HEe2LuOZzJ_LhLg" type="6001"> 3294 <children xmi:type="notation:Node" xmi:id="_ObvitF4HEe2LuOZzJ_LhLg" type="6001">
3264 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ObvitV4HEe2LuOZzJ_LhLg" x="-187" y="-37"/> 3295 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ObvitV4HEe2LuOZzJ_LhLg" x="-181" y="-37"/>
3265 </children> 3296 </children>
3266 <children xmi:type="notation:Node" xmi:id="_Obvitl4HEe2LuOZzJ_LhLg" type="6002"> 3297 <children xmi:type="notation:Node" xmi:id="_Obvitl4HEe2LuOZzJ_LhLg" type="6002">
3267 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Obvit14HEe2LuOZzJ_LhLg" x="111" y="10"/> 3298 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Obvit14HEe2LuOZzJ_LhLg" x="113" y="10"/>
3268 </children> 3299 </children>
3269 <children xmi:type="notation:Node" xmi:id="_ObviuF4HEe2LuOZzJ_LhLg" type="6003"> 3300 <children xmi:type="notation:Node" xmi:id="_ObviuF4HEe2LuOZzJ_LhLg" type="6003">
3270 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ObviuV4HEe2LuOZzJ_LhLg" x="20" y="10"/> 3301 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ObviuV4HEe2LuOZzJ_LhLg" x="18" y="10"/>
3271 </children> 3302 </children>
3272 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ObvisV4HEe2LuOZzJ_LhLg" routing="Rectilinear"/> 3303 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ObvisV4HEe2LuOZzJ_LhLg" routing="Rectilinear"/>
3273 <styles xmi:type="notation:FontStyle" xmi:id="_Obvisl4HEe2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 3304 <styles xmi:type="notation:FontStyle" xmi:id="_Obvisl4HEe2LuOZzJ_LhLg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3274 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Obvis14HEe2LuOZzJ_LhLg" points="[29, 0, -247, 194]$[29, -240, -247, -46]$[204, -240, -72, -46]"/> 3305 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Obvis14HEe2LuOZzJ_LhLg" points="[29, 0, -247, 194]$[29, -228, -247, -34]$[204, -228, -72, -34]"/>
3275 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Obviul4HEe2LuOZzJ_LhLg" id="(0.2482758620689655,0.0)"/> 3306 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Obviul4HEe2LuOZzJ_LhLg" id="(0.2482758620689655,0.0)"/>
3276 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Obviu14HEe2LuOZzJ_LhLg" id="(0.6101694915254238,1.0)"/> 3307 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Obviu14HEe2LuOZzJ_LhLg" id="(0.6101694915254238,1.0)"/>
3277 </edges> 3308 </edges>
@@ -3341,17 +3372,17 @@
3341 </edges> 3372 </edges>
3342 <edges xmi:type="notation:Edge" xmi:id="_q0sN4F4KEe2m7IaHDkh2Xg" type="4001" element="_q0dkhF4KEe2m7IaHDkh2Xg" source="_3BISYF4GEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3373 <edges xmi:type="notation:Edge" xmi:id="_q0sN4F4KEe2m7IaHDkh2Xg" type="4001" element="_q0dkhF4KEe2m7IaHDkh2Xg" source="_3BISYF4GEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3343 <children xmi:type="notation:Node" xmi:id="_q0sN5F4KEe2m7IaHDkh2Xg" type="6001"> 3374 <children xmi:type="notation:Node" xmi:id="_q0sN5F4KEe2m7IaHDkh2Xg" type="6001">
3344 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q0sN5V4KEe2m7IaHDkh2Xg" x="-14" y="25"/> 3375 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q0sN5V4KEe2m7IaHDkh2Xg" x="-26" y="13"/>
3345 </children> 3376 </children>
3346 <children xmi:type="notation:Node" xmi:id="_q0sN5l4KEe2m7IaHDkh2Xg" type="6002"> 3377 <children xmi:type="notation:Node" xmi:id="_q0sN5l4KEe2m7IaHDkh2Xg" type="6002">
3347 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q0sN514KEe2m7IaHDkh2Xg" x="-9" y="10"/> 3378 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q0sN514KEe2m7IaHDkh2Xg" x="-9" y="10"/>
3348 </children> 3379 </children>
3349 <children xmi:type="notation:Node" xmi:id="_q0s08F4KEe2m7IaHDkh2Xg" type="6003"> 3380 <children xmi:type="notation:Node" xmi:id="_q0s08F4KEe2m7IaHDkh2Xg" type="6003">
3350 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q0s08V4KEe2m7IaHDkh2Xg" x="-42" y="10"/> 3381 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q0s08V4KEe2m7IaHDkh2Xg" x="-54" y="10"/>
3351 </children> 3382 </children>
3352 <styles xmi:type="notation:ConnectorStyle" xmi:id="_q0sN4V4KEe2m7IaHDkh2Xg" routing="Tree"/> 3383 <styles xmi:type="notation:ConnectorStyle" xmi:id="_q0sN4V4KEe2m7IaHDkh2Xg" routing="Tree"/>
3353 <styles xmi:type="notation:FontStyle" xmi:id="_q0sN4l4KEe2m7IaHDkh2Xg" fontName="Noto Sans" fontHeight="8"/> 3384 <styles xmi:type="notation:FontStyle" xmi:id="_q0sN4l4KEe2m7IaHDkh2Xg" fontName="Noto Sans" fontHeight="8"/>
3354 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q0sN414KEe2m7IaHDkh2Xg" points="[0, -27, -155, 202]$[0, -207, -155, 22]$[174, -207, 19, 22]$[174, -221, 19, 8]"/> 3385 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q0sN414KEe2m7IaHDkh2Xg" points="[0, -27, -155, 202]$[0, -195, -155, 34]$[174, -195, 19, 34]$[174, -221, 19, 8]"/>
3355 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q0s08l4KEe2m7IaHDkh2Xg" id="(0.8206896551724138,0.2755102040816326)"/> 3386 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q0s08l4KEe2m7IaHDkh2Xg" id="(0.8206896551724138,0.2755102040816326)"/>
3356 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q0s0814KEe2m7IaHDkh2Xg" id="(0.288135593220339,0.9183673469387755)"/> 3387 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q0s0814KEe2m7IaHDkh2Xg" id="(0.288135593220339,0.9183673469387755)"/>
3357 </edges> 3388 </edges>
@@ -3389,17 +3420,17 @@
3389 </edges> 3420 </edges>
3390 <edges xmi:type="notation:Edge" xmi:id="_Y-UMwF4LEe2m7IaHDkh2Xg" type="4001" element="_Y-E8MF4LEe2m7IaHDkh2Xg" source="_3BISYF4GEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3421 <edges xmi:type="notation:Edge" xmi:id="_Y-UMwF4LEe2m7IaHDkh2Xg" type="4001" element="_Y-E8MF4LEe2m7IaHDkh2Xg" source="_3BISYF4GEe2LuOZzJ_LhLg" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3391 <children xmi:type="notation:Node" xmi:id="_Y-UMxF4LEe2m7IaHDkh2Xg" type="6001"> 3422 <children xmi:type="notation:Node" xmi:id="_Y-UMxF4LEe2m7IaHDkh2Xg" type="6001">
3392 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-UMxV4LEe2m7IaHDkh2Xg" x="-160" y="47"/> 3423 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-UMxV4LEe2m7IaHDkh2Xg" x="-154" y="47"/>
3393 </children> 3424 </children>
3394 <children xmi:type="notation:Node" xmi:id="_Y-UMxl4LEe2m7IaHDkh2Xg" type="6002"> 3425 <children xmi:type="notation:Node" xmi:id="_Y-UMxl4LEe2m7IaHDkh2Xg" type="6002">
3395 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-UMx14LEe2m7IaHDkh2Xg" x="152" y="88"/> 3426 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-UMx14LEe2m7IaHDkh2Xg" x="142" y="88"/>
3396 </children> 3427 </children>
3397 <children xmi:type="notation:Node" xmi:id="_Y-UMyF4LEe2m7IaHDkh2Xg" type="6003"> 3428 <children xmi:type="notation:Node" xmi:id="_Y-UMyF4LEe2m7IaHDkh2Xg" type="6003">
3398 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-UMyV4LEe2m7IaHDkh2Xg" x="28" y="10"/> 3429 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-UMyV4LEe2m7IaHDkh2Xg" x="27" y="10"/>
3399 </children> 3430 </children>
3400 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Y-UMwV4LEe2m7IaHDkh2Xg" routing="Rectilinear"/> 3431 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Y-UMwV4LEe2m7IaHDkh2Xg" routing="Rectilinear"/>
3401 <styles xmi:type="notation:FontStyle" xmi:id="_Y-UMwl4LEe2m7IaHDkh2Xg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 3432 <styles xmi:type="notation:FontStyle" xmi:id="_Y-UMwl4LEe2m7IaHDkh2Xg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3402 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y-UMw14LEe2m7IaHDkh2Xg" points="[-49, -16, -144, 240]$[-49, -232, -144, 24]$[95, -232, 0, 24]"/> 3433 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y-UMw14LEe2m7IaHDkh2Xg" points="[-49, -16, -144, 240]$[-49, -220, -144, 36]$[95, -220, 0, 36]"/>
3403 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y-UMyl4LEe2m7IaHDkh2Xg" id="(1.0,0.16326530612244897)"/> 3434 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y-UMyl4LEe2m7IaHDkh2Xg" id="(1.0,0.16326530612244897)"/>
3404 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y-UMy14LEe2m7IaHDkh2Xg" id="(0.0,0.5306122448979592)"/> 3435 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y-UMy14LEe2m7IaHDkh2Xg" id="(0.0,0.5306122448979592)"/>
3405 </edges> 3436 </edges>
@@ -3464,7 +3495,7 @@
3464 <styles xmi:type="notation:ConnectorStyle" xmi:id="_mZrI4V9vEe2rXNsIDUvqhw" routing="Tree"/> 3495 <styles xmi:type="notation:ConnectorStyle" xmi:id="_mZrI4V9vEe2rXNsIDUvqhw" routing="Tree"/>
3465 <styles xmi:type="notation:FontStyle" xmi:id="_mZrI4l9vEe2rXNsIDUvqhw" fontName="Noto Sans" fontHeight="8"/> 3496 <styles xmi:type="notation:FontStyle" xmi:id="_mZrI4l9vEe2rXNsIDUvqhw" fontName="Noto Sans" fontHeight="8"/>
3466 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mZrI419vEe2rXNsIDUvqhw" points="[36, 0, 214, 95]$[36, -28, 214, 67]$[-156, -28, 22, 67]$[-156, -46, 22, 49]"/> 3497 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mZrI419vEe2rXNsIDUvqhw" points="[36, 0, 214, 95]$[36, -28, 214, 67]$[-156, -28, 22, 67]$[-156, -46, 22, 49]"/>
3467 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mZrv8F9vEe2rXNsIDUvqhw" id="(0.2482758620689655,0.0)"/> 3498 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mZrv8F9vEe2rXNsIDUvqhw" id="(0.2,0.08163265306122448)"/>
3468 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mZrv8V9vEe2rXNsIDUvqhw" id="(0.5,0.5)"/> 3499 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mZrv8V9vEe2rXNsIDUvqhw" id="(0.5,0.5)"/>
3469 </edges> 3500 </edges>
3470 <edges xmi:type="notation:Edge" xmi:id="_Us6csGTUEe2qdtyPWAtoxA" type="4001" element="_UstBaGTUEe2qdtyPWAtoxA" source="_M-upAGTUEe2qdtyPWAtoxA" target="_bTgeJl3tEe2LuOZzJ_LhLg"> 3501 <edges xmi:type="notation:Edge" xmi:id="_Us6csGTUEe2qdtyPWAtoxA" type="4001" element="_UstBaGTUEe2qdtyPWAtoxA" source="_M-upAGTUEe2qdtyPWAtoxA" target="_bTgeJl3tEe2LuOZzJ_LhLg">
@@ -3533,17 +3564,17 @@
3533 </edges> 3564 </edges>
3534 <edges xmi:type="notation:Edge" xmi:id="_LC7PYGTvEe2qdtyPWAtoxA" type="4001" element="_LC4MOmTvEe2qdtyPWAtoxA" source="_LC6oUGTvEe2qdtyPWAtoxA" target="_3xZUsF3lEe2LuOZzJ_LhLg"> 3565 <edges xmi:type="notation:Edge" xmi:id="_LC7PYGTvEe2qdtyPWAtoxA" type="4001" element="_LC4MOmTvEe2qdtyPWAtoxA" source="_LC6oUGTvEe2qdtyPWAtoxA" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3535 <children xmi:type="notation:Node" xmi:id="_LC7PZGTvEe2qdtyPWAtoxA" type="6001"> 3566 <children xmi:type="notation:Node" xmi:id="_LC7PZGTvEe2qdtyPWAtoxA" type="6001">
3536 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC7PZWTvEe2qdtyPWAtoxA" x="10" y="-10"/> 3567 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC7PZWTvEe2qdtyPWAtoxA" x="-365" y="36"/>
3537 </children> 3568 </children>
3538 <children xmi:type="notation:Node" xmi:id="_LC7PZmTvEe2qdtyPWAtoxA" type="6002"> 3569 <children xmi:type="notation:Node" xmi:id="_LC7PZmTvEe2qdtyPWAtoxA" type="6002">
3539 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC7PZ2TvEe2qdtyPWAtoxA" x="17" y="10"/> 3570 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC7PZ2TvEe2qdtyPWAtoxA" x="-10" y="10"/>
3540 </children> 3571 </children>
3541 <children xmi:type="notation:Node" xmi:id="_LC7PaGTvEe2qdtyPWAtoxA" type="6003"> 3572 <children xmi:type="notation:Node" xmi:id="_LC7PaGTvEe2qdtyPWAtoxA" type="6003">
3542 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC7PaWTvEe2qdtyPWAtoxA" x="3" y="10"/> 3573 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LC7PaWTvEe2qdtyPWAtoxA" x="-2" y="10"/>
3543 </children> 3574 </children>
3544 <styles xmi:type="notation:ConnectorStyle" xmi:id="_LC7PYWTvEe2qdtyPWAtoxA" routing="Rectilinear"/> 3575 <styles xmi:type="notation:ConnectorStyle" xmi:id="_LC7PYWTvEe2qdtyPWAtoxA" routing="Rectilinear"/>
3545 <styles xmi:type="notation:FontStyle" xmi:id="_LC7PYmTvEe2qdtyPWAtoxA" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 3576 <styles xmi:type="notation:FontStyle" xmi:id="_LC7PYmTvEe2qdtyPWAtoxA" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3546 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LC7PY2TvEe2qdtyPWAtoxA" points="[43, -49, -988, 99]$[43, -169, -988, -21]$[972, -169, -59, -21]"/> 3577 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LC7PY2TvEe2qdtyPWAtoxA" points="[43, -49, -976, 99]$[43, -149, -976, -1]$[960, -149, -59, -1]"/>
3547 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LC7PamTvEe2qdtyPWAtoxA" id="(0.1557377049180328,0.5)"/> 3578 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LC7PamTvEe2qdtyPWAtoxA" id="(0.1557377049180328,0.5)"/>
3548 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LC7Pa2TvEe2qdtyPWAtoxA" id="(0.5,0.5)"/> 3579 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LC7Pa2TvEe2qdtyPWAtoxA" id="(0.5,0.5)"/>
3549 </edges> 3580 </edges>
@@ -3627,22 +3658,6 @@
3627 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_syrYYGgtEe24RpwpWgpkFQ" id="(0.5,0.5)"/> 3658 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_syrYYGgtEe24RpwpWgpkFQ" id="(0.5,0.5)"/>
3628 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qYvsm2gtEe24RpwpWgpkFQ" id="(0.0,0.6122448979591837)"/> 3659 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qYvsm2gtEe24RpwpWgpkFQ" id="(0.0,0.6122448979591837)"/>
3629 </edges> 3660 </edges>
3630 <edges xmi:type="notation:Edge" xmi:id="_3zjE0GgtEe24RpwpWgpkFQ" type="4001" element="_3zQKBGgtEe24RpwpWgpkFQ" source="_zs6moGgtEe24RpwpWgpkFQ" target="_87Ju4F4IEe2LuOZzJ_LhLg">
3631 <children xmi:type="notation:Node" xmi:id="_3zjr4GgtEe24RpwpWgpkFQ" type="6001">
3632 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3zjr4WgtEe24RpwpWgpkFQ" y="-10"/>
3633 </children>
3634 <children xmi:type="notation:Node" xmi:id="_3zjr4mgtEe24RpwpWgpkFQ" type="6002">
3635 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3zjr42gtEe24RpwpWgpkFQ" y="10"/>
3636 </children>
3637 <children xmi:type="notation:Node" xmi:id="_3zjr5GgtEe24RpwpWgpkFQ" type="6003">
3638 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3zjr5WgtEe24RpwpWgpkFQ" y="10"/>
3639 </children>
3640 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3zjE0WgtEe24RpwpWgpkFQ" routing="Tree"/>
3641 <styles xmi:type="notation:FontStyle" xmi:id="_3zjE0mgtEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
3642 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3zjE02gtEe24RpwpWgpkFQ" points="[0, 0, 86, 120]$[-86, -120, 0, 0]"/>
3643 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3zjr5mgtEe24RpwpWgpkFQ" id="(0.8135593220338984,0.0)"/>
3644 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3zjr52gtEe24RpwpWgpkFQ" id="(0.5,0.5)"/>
3645 </edges>
3646 <edges xmi:type="notation:Edge" xmi:id="_dTGfYGkGEe24rIYSlCjKHA" type="4001" element="_dSnXTmkGEe24rIYSlCjKHA" source="_ZjfaEGkGEe24rIYSlCjKHA" target="_87Ju4F4IEe2LuOZzJ_LhLg"> 3661 <edges xmi:type="notation:Edge" xmi:id="_dTGfYGkGEe24rIYSlCjKHA" type="4001" element="_dSnXTmkGEe24rIYSlCjKHA" source="_ZjfaEGkGEe24rIYSlCjKHA" target="_87Ju4F4IEe2LuOZzJ_LhLg">
3647 <children xmi:type="notation:Node" xmi:id="_dTHGcGkGEe24rIYSlCjKHA" type="6001"> 3662 <children xmi:type="notation:Node" xmi:id="_dTHGcGkGEe24rIYSlCjKHA" type="6001">
3648 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dTHGcWkGEe24rIYSlCjKHA" y="-10"/> 3663 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dTHGcWkGEe24rIYSlCjKHA" y="-10"/>
@@ -3659,6 +3674,86 @@
3659 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTKJwGkGEe24rIYSlCjKHA" id="(0.6101694915254238,0.0)"/> 3674 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTKJwGkGEe24rIYSlCjKHA" id="(0.6101694915254238,0.0)"/>
3660 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTKJwWkGEe24rIYSlCjKHA" id="(0.5,0.5)"/> 3675 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTKJwWkGEe24rIYSlCjKHA" id="(0.5,0.5)"/>
3661 </edges> 3676 </edges>
3677 <edges xmi:type="notation:Edge" xmi:id="_LPzccNZUEe69IbObpvsypA" type="4001" element="_LPX-3NZUEe69IbObpvsypA" source="_IYGPgNZUEe69IbObpvsypA" target="_bTgeJl3tEe2LuOZzJ_LhLg">
3678 <children xmi:type="notation:Node" xmi:id="_LPzcdNZUEe69IbObpvsypA" type="6001">
3679 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LPzcddZUEe69IbObpvsypA" y="-10"/>
3680 </children>
3681 <children xmi:type="notation:Node" xmi:id="_LPzcdtZUEe69IbObpvsypA" type="6002">
3682 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LPzcd9ZUEe69IbObpvsypA" y="10"/>
3683 </children>
3684 <children xmi:type="notation:Node" xmi:id="_LPzceNZUEe69IbObpvsypA" type="6003">
3685 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LPzcedZUEe69IbObpvsypA" y="10"/>
3686 </children>
3687 <styles xmi:type="notation:ConnectorStyle" xmi:id="_LPzccdZUEe69IbObpvsypA" routing="Tree"/>
3688 <styles xmi:type="notation:FontStyle" xmi:id="_LPzcctZUEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3689 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LPzcc9ZUEe69IbObpvsypA" points="[0, 0, -84, 46]$[84, -46, 0, 0]"/>
3690 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LPzcetZUEe69IbObpvsypA" id="(0.711864406779661,0.0)"/>
3691 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LPzce9ZUEe69IbObpvsypA" id="(0.5,0.5)"/>
3692 </edges>
3693 <edges xmi:type="notation:Edge" xmi:id="_JiwkcNZXEe69IbObpvsypA" type="4001" element="_JicbhNZXEe69IbObpvsypA" source="_FTa2MNZXEe69IbObpvsypA" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3694 <children xmi:type="notation:Node" xmi:id="_JixLgNZXEe69IbObpvsypA" type="6001">
3695 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JixLgdZXEe69IbObpvsypA" x="-457" y="56"/>
3696 </children>
3697 <children xmi:type="notation:Node" xmi:id="_JixLgtZXEe69IbObpvsypA" type="6002">
3698 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JixLg9ZXEe69IbObpvsypA" x="51" y="10"/>
3699 </children>
3700 <children xmi:type="notation:Node" xmi:id="_JixLhNZXEe69IbObpvsypA" type="6003">
3701 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JixLhdZXEe69IbObpvsypA" x="-17" y="10"/>
3702 </children>
3703 <styles xmi:type="notation:ConnectorStyle" xmi:id="_JiwkcdZXEe69IbObpvsypA" routing="Rectilinear"/>
3704 <styles xmi:type="notation:FontStyle" xmi:id="_JiwkctZXEe69IbObpvsypA" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3705 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Jiwkc9ZXEe69IbObpvsypA" points="[-82, -49, -1111, 99]$[-82, -169, -1111, -21]$[1029, -169, 0, -21]"/>
3706 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JixLhtZXEe69IbObpvsypA" id="(1.0,0.5)"/>
3707 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JixLh9ZXEe69IbObpvsypA" id="(0.0,0.5)"/>
3708 </edges>
3709 <edges xmi:type="notation:Edge" xmi:id="_NggzcNZXEe69IbObpvsypA" type="4001" element="_NgNRjtZXEe69IbObpvsypA" source="_FTa2MNZXEe69IbObpvsypA" target="_Z0bU0GTvEe2qdtyPWAtoxA">
3710 <children xmi:type="notation:Node" xmi:id="_NggzdNZXEe69IbObpvsypA" type="6001">
3711 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NggzddZXEe69IbObpvsypA" x="14" y="18"/>
3712 </children>
3713 <children xmi:type="notation:Node" xmi:id="_NggzdtZXEe69IbObpvsypA" type="6002">
3714 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nggzd9ZXEe69IbObpvsypA" x="4" y="10"/>
3715 </children>
3716 <children xmi:type="notation:Node" xmi:id="_NggzeNZXEe69IbObpvsypA" type="6003">
3717 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NggzedZXEe69IbObpvsypA" x="-46" y="10"/>
3718 </children>
3719 <styles xmi:type="notation:ConnectorStyle" xmi:id="_NggzcdZXEe69IbObpvsypA" routing="Rectilinear"/>
3720 <styles xmi:type="notation:FontStyle" xmi:id="_NggzctZXEe69IbObpvsypA" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
3721 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nggzc9ZXEe69IbObpvsypA" points="[0, 0, -98, -118]$[0, 94, -98, -24]$[98, 94, 0, -24]"/>
3722 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NghagNZXEe69IbObpvsypA" id="(0.6101694915254238,1.0)"/>
3723 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NghagdZXEe69IbObpvsypA" id="(0.0,0.7346938775510204)"/>
3724 </edges>
3725 <edges xmi:type="notation:Edge" xmi:id="_Pu3hYNZXEe69IbObpvsypA" type="4001" element="_PulNvNZXEe69IbObpvsypA" source="_FTa2MNZXEe69IbObpvsypA" target="_3xZUsF3lEe2LuOZzJ_LhLg">
3726 <children xmi:type="notation:Node" xmi:id="_Pu4Ic9ZXEe69IbObpvsypA" type="6001">
3727 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pu4IdNZXEe69IbObpvsypA" y="-10"/>
3728 </children>
3729 <children xmi:type="notation:Node" xmi:id="_Pu4IddZXEe69IbObpvsypA" type="6002">
3730 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pu4IdtZXEe69IbObpvsypA" y="10"/>
3731 </children>
3732 <children xmi:type="notation:Node" xmi:id="_Pu4Id9ZXEe69IbObpvsypA" type="6003">
3733 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pu4IeNZXEe69IbObpvsypA" y="10"/>
3734 </children>
3735 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Pu4IcNZXEe69IbObpvsypA" routing="Tree"/>
3736 <styles xmi:type="notation:FontStyle" xmi:id="_Pu4IcdZXEe69IbObpvsypA" fontName="Noto Sans" fontHeight="8"/>
3737 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Pu4IctZXEe69IbObpvsypA" points="[0, -24, -1197, 88]$[0, -48, -1197, 64]$[1250, -48, 53, 64]$[1250, -74, 53, 38]"/>
3738 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pu4IedZXEe69IbObpvsypA" id="(0.6949152542372882,0.24489795918367346)"/>
3739 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pu4IetZXEe69IbObpvsypA" id="(0.0,0.6122448979591837)"/>
3740 </edges>
3741 <edges xmi:type="notation:Edge" xmi:id="_fkQnUNcIEe6pjNxdSs0E0Q" type="4001" element="_fj2Xo9cIEe6pjNxdSs0E0Q" source="_c0t34NcIEe6pjNxdSs0E0Q" target="_bTgeJl3tEe2LuOZzJ_LhLg">
3742 <children xmi:type="notation:Node" xmi:id="_fkR1cNcIEe6pjNxdSs0E0Q" type="6001">
3743 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fkR1cdcIEe6pjNxdSs0E0Q" y="-10"/>
3744 </children>
3745 <children xmi:type="notation:Node" xmi:id="_fkWG4NcIEe6pjNxdSs0E0Q" type="6002">
3746 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fkWG4dcIEe6pjNxdSs0E0Q" y="10"/>
3747 </children>
3748 <children xmi:type="notation:Node" xmi:id="_fkWt8NcIEe6pjNxdSs0E0Q" type="6003">
3749 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fkWt8dcIEe6pjNxdSs0E0Q" y="10"/>
3750 </children>
3751 <styles xmi:type="notation:ConnectorStyle" xmi:id="_fkROYNcIEe6pjNxdSs0E0Q" routing="Tree"/>
3752 <styles xmi:type="notation:FontStyle" xmi:id="_fkROYdcIEe6pjNxdSs0E0Q" fontName="Noto Sans" fontHeight="8"/>
3753 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fkROYtcIEe6pjNxdSs0E0Q" points="[0, 0, 373, 120]$[-373, -120, 0, 0]"/>
3754 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fkYjINcIEe6pjNxdSs0E0Q" id="(0.5,0.0)"/>
3755 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fkYjIdcIEe6pjNxdSs0E0Q" id="(0.5,0.5)"/>
3756 </edges>
3662 </data> 3757 </data>
3663 </ownedAnnotationEntries> 3758 </ownedAnnotationEntries>
3664 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_z1k_YV3lEe2LuOZzJ_LhLg" source="DANNOTATION_CUSTOMIZATION_KEY"> 3759 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_z1k_YV3lEe2LuOZzJ_LhLg" source="DANNOTATION_CUSTOMIZATION_KEY">
@@ -3674,7 +3769,7 @@
3674 </computedStyleDescriptions> 3769 </computedStyleDescriptions>
3675 </data> 3770 </data>
3676 </ownedAnnotationEntries> 3771 </ownedAnnotationEntries>
3677 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_3wvNYF3lEe2LuOZzJ_LhLg" name="Expr" tooltipText="" incomingEdges="_FMB-xl3vEe2LuOZzJ_LhLg _oARZ0l3vEe2LuOZzJ_LhLg _qx9eWF3vEe2LuOZzJ_LhLg _uSiCAF3vEe2LuOZzJ_LhLg _v0WaHF3vEe2LuOZzJ_LhLg _ObhgTF4HEe2LuOZzJ_LhLg _q0dkhF4KEe2m7IaHDkh2Xg _Y-E8MF4LEe2m7IaHDkh2Xg _Y-qe-F63Ee2rXNsIDUvqhw _LC4MOmTvEe2qdtyPWAtoxA _MW7_mGTwEe2qdtyPWAtoxA _qYZuyGgtEe24RpwpWgpkFQ" width="12" height="10"> 3772 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_3wvNYF3lEe2LuOZzJ_LhLg" name="Expr" tooltipText="" incomingEdges="_FMB-xl3vEe2LuOZzJ_LhLg _oARZ0l3vEe2LuOZzJ_LhLg _qx9eWF3vEe2LuOZzJ_LhLg _uSiCAF3vEe2LuOZzJ_LhLg _v0WaHF3vEe2LuOZzJ_LhLg _ObhgTF4HEe2LuOZzJ_LhLg _q0dkhF4KEe2m7IaHDkh2Xg _Y-E8MF4LEe2m7IaHDkh2Xg _Y-qe-F63Ee2rXNsIDUvqhw _LC4MOmTvEe2qdtyPWAtoxA _MW7_mGTwEe2qdtyPWAtoxA _qYZuyGgtEe24RpwpWgpkFQ _JicbhNZXEe69IbObpvsypA _PulNvNZXEe69IbObpvsypA" width="12" height="10">
3678 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/> 3773 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/>
3679 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/> 3774 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/>
3680 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 3775 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -3723,7 +3818,7 @@
3723 </ownedStyle> 3818 </ownedStyle>
3724 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 3819 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
3725 </ownedDiagramElements> 3820 </ownedDiagramElements>
3726 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_bTLuAF3tEe2LuOZzJ_LhLg" name="BinaryExpr" tooltipText="" outgoingEdges="_oARZ0l3vEe2LuOZzJ_LhLg _qx9eWF3vEe2LuOZzJ_LhLg _v0WaHF3vEe2LuOZzJ_LhLg" incomingEdges="_UstBaGTUEe2qdtyPWAtoxA _Vb3NYGTUEe2qdtyPWAtoxA _45D4QmgpEe24RpwpWgpkFQ" width="12" height="10"> 3821 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_bTLuAF3tEe2LuOZzJ_LhLg" name="BinaryExpr" tooltipText="" outgoingEdges="_oARZ0l3vEe2LuOZzJ_LhLg _qx9eWF3vEe2LuOZzJ_LhLg _v0WaHF3vEe2LuOZzJ_LhLg" incomingEdges="_UstBaGTUEe2qdtyPWAtoxA _Vb3NYGTUEe2qdtyPWAtoxA _45D4QmgpEe24RpwpWgpkFQ _LPX-3NZUEe69IbObpvsypA _fj2Xo9cIEe6pjNxdSs0E0Q" width="12" height="10">
3727 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//BinaryExpr"/> 3822 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//BinaryExpr"/>
3728 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//BinaryExpr"/> 3823 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//BinaryExpr"/>
3729 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 3824 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -3887,22 +3982,6 @@
3887 </ownedStyle> 3982 </ownedStyle>
3888 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> 3983 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3889 </ownedElements> 3984 </ownedElements>
3890 <ownedElements xmi:type="diagram:DNodeListElement" uid="_Sn1HAGgrEe24RpwpWgpkFQ" name="MEET" tooltipText="">
3891 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//BinaryOp/MEET"/>
3892 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//BinaryOp/MEET"/>
3893 <ownedStyle xmi:type="diagram:BundledImage" uid="_Sn1HAWgrEe24RpwpWgpkFQ" labelAlignment="LEFT">
3894 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3895 </ownedStyle>
3896 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3897 </ownedElements>
3898 <ownedElements xmi:type="diagram:DNodeListElement" uid="_TrhYoGgrEe24RpwpWgpkFQ" name="JOIN" tooltipText="">
3899 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//BinaryOp/JOIN"/>
3900 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//BinaryOp/JOIN"/>
3901 <ownedStyle xmi:type="diagram:BundledImage" uid="_TrhYoWgrEe24RpwpWgpkFQ" labelAlignment="LEFT">
3902 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
3903 </ownedStyle>
3904 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
3905 </ownedElements>
3906 </ownedDiagramElements> 3985 </ownedDiagramElements>
3907 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_R7XFMF38Ee2LuOZzJ_LhLg" name="ExistentialQuantifier" tooltipText="" outgoingEdges="_WGxVyF38Ee2LuOZzJ_LhLg" incomingEdges="_C0JQzV4LEe2m7IaHDkh2Xg _ZLAvTl9vEe2rXNsIDUvqhw" width="12" height="10"> 3986 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_R7XFMF38Ee2LuOZzJ_LhLg" name="ExistentialQuantifier" tooltipText="" outgoingEdges="_WGxVyF38Ee2LuOZzJ_LhLg" incomingEdges="_C0JQzV4LEe2m7IaHDkh2Xg _ZLAvTl9vEe2rXNsIDUvqhw" width="12" height="10">
3908 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ExistentialQuantifier"/> 3987 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ExistentialQuantifier"/>
@@ -4059,7 +4138,7 @@
4059 </ownedStyle> 4138 </ownedStyle>
4060 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 4139 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
4061 </ownedDiagramElements> 4140 </ownedDiagramElements>
4062 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_86zJkF4IEe2LuOZzJ_LhLg" name="Constant" tooltipText="" outgoingEdges="_qYZuyGgtEe24RpwpWgpkFQ" incomingEdges="_JYWPtF4JEe2LuOZzJ_LhLg _JYW2c14JEe2LuOZzJ_LhLg _JYW2el4JEe2LuOZzJ_LhLg _3zQKBGgtEe24RpwpWgpkFQ _dSnXTmkGEe24rIYSlCjKHA" width="12" height="10"> 4141 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_86zJkF4IEe2LuOZzJ_LhLg" name="Constant" tooltipText="" outgoingEdges="_qYZuyGgtEe24RpwpWgpkFQ" incomingEdges="_JYWPtF4JEe2LuOZzJ_LhLg _JYW2c14JEe2LuOZzJ_LhLg _JYW2el4JEe2LuOZzJ_LhLg _dSnXTmkGEe24rIYSlCjKHA" width="12" height="10">
4063 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/> 4142 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/>
4064 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/> 4143 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/>
4065 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 4144 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -4524,7 +4603,7 @@
4524 </ownedStyle> 4603 </ownedStyle>
4525 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 4604 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
4526 </ownedDiagramElements> 4605 </ownedDiagramElements>
4527 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Z0MrUGTvEe2qdtyPWAtoxA" name="Relation" tooltipText="" incomingEdges="_cBUqNmTvEe2qdtyPWAtoxA" width="12" height="10"> 4606 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Z0MrUGTvEe2qdtyPWAtoxA" name="Relation" tooltipText="" incomingEdges="_cBUqNmTvEe2qdtyPWAtoxA _NgNRjtZXEe69IbObpvsypA" width="12" height="10">
4528 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/> 4607 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/>
4529 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/> 4608 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/>
4530 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 4609 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -4671,29 +4750,6 @@
4671 </ownedStyle> 4750 </ownedStyle>
4672 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> 4751 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4673 </ownedDiagramElements> 4752 </ownedDiagramElements>
4674 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_zsr9IGgtEe24RpwpWgpkFQ" name="InfConstant" tooltipText="" outgoingEdges="_3zQKBGgtEe24RpwpWgpkFQ" width="12" height="10">
4675 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//InfConstant"/>
4676 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//InfConstant"/>
4677 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4678 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4679 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4680 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zsr9IWgtEe24RpwpWgpkFQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4681 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4682 </ownedStyle>
4683 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4684 </ownedDiagramElements>
4685 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3zQKBGgtEe24RpwpWgpkFQ" sourceNode="_zsr9IGgtEe24RpwpWgpkFQ" targetNode="_86zJkF4IEe2LuOZzJ_LhLg">
4686 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//InfConstant"/>
4687 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//InfConstant"/>
4688 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3zQKBWgtEe24RpwpWgpkFQ" targetArrow="InputClosedArrow" routingStyle="tree">
4689 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
4690 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_3zQKBmgtEe24RpwpWgpkFQ" showIcon="false">
4691 <labelFormat>italic</labelFormat>
4692 </beginLabelStyle>
4693 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3zQKB2gtEe24RpwpWgpkFQ" showIcon="false"/>
4694 </ownedStyle>
4695 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4696 </ownedDiagramElements>
4697 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Zi8AcGkGEe24rIYSlCjKHA" name="LogicConstant" tooltipText="" outgoingEdges="_dSnXTmkGEe24rIYSlCjKHA" width="12" height="10"> 4753 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Zi8AcGkGEe24rIYSlCjKHA" name="LogicConstant" tooltipText="" outgoingEdges="_dSnXTmkGEe24rIYSlCjKHA" width="12" height="10">
4698 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/> 4754 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/>
4699 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/> 4755 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/>
@@ -4768,6 +4824,129 @@
4768 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> 4824 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4769 </ownedElements> 4825 </ownedElements>
4770 </ownedDiagramElements> 4826 </ownedDiagramElements>
4827 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_IXrYwNZUEe69IbObpvsypA" name="LatticeBinaryExpr" tooltipText="" outgoingEdges="_LPX-3NZUEe69IbObpvsypA" width="12" height="10">
4828 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LatticeBinaryExpr"/>
4829 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LatticeBinaryExpr"/>
4830 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4831 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4832 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4833 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Xu1JDdZUEe69IbObpvsypA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4834 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4835 </ownedStyle>
4836 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4837 <ownedElements xmi:type="diagram:DNodeListElement" uid="_W0CUoNZUEe69IbObpvsypA" name="op : LatticeBinaryOp = MEET" tooltipText="">
4838 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//LatticeBinaryExpr/op"/>
4839 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//LatticeBinaryExpr/op"/>
4840 <ownedStyle xmi:type="diagram:BundledImage" uid="_Xu2XFNZUEe69IbObpvsypA" labelAlignment="LEFT">
4841 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4842 </ownedStyle>
4843 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4844 </ownedElements>
4845 </ownedDiagramElements>
4846 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_LPX-3NZUEe69IbObpvsypA" sourceNode="_IXrYwNZUEe69IbObpvsypA" targetNode="_bTLuAF3tEe2LuOZzJ_LhLg">
4847 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LatticeBinaryExpr"/>
4848 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LatticeBinaryExpr"/>
4849 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Xu6BstZUEe69IbObpvsypA" targetArrow="InputClosedArrow" routingStyle="tree">
4850 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
4851 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_Xu6Bs9ZUEe69IbObpvsypA" showIcon="false">
4852 <labelFormat>italic</labelFormat>
4853 </beginLabelStyle>
4854 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Xu6BtNZUEe69IbObpvsypA" showIcon="false"/>
4855 </ownedStyle>
4856 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4857 </ownedDiagramElements>
4858 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Nmg1INZUEe69IbObpvsypA" name="LatticeBinaryOp" tooltipText="" width="12" height="10">
4859 <target xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//LatticeBinaryOp"/>
4860 <semanticElements xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//LatticeBinaryOp"/>
4861 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4862 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4863 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4864 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Nmg1IdZUEe69IbObpvsypA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
4865 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
4866 </ownedStyle>
4867 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
4868 <ownedElements xmi:type="diagram:DNodeListElement" uid="_TQOPoNZUEe69IbObpvsypA" name="MEET" tooltipText="">
4869 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LatticeBinaryOp/MEET"/>
4870 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LatticeBinaryOp/MEET"/>
4871 <ownedStyle xmi:type="diagram:BundledImage" uid="_TQO2sNZUEe69IbObpvsypA" labelAlignment="LEFT">
4872 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4873 </ownedStyle>
4874 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4875 </ownedElements>
4876 <ownedElements xmi:type="diagram:DNodeListElement" uid="_UFttMNZUEe69IbObpvsypA" name="JOIN" tooltipText="">
4877 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LatticeBinaryOp/JOIN"/>
4878 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LatticeBinaryOp/JOIN"/>
4879 <ownedStyle xmi:type="diagram:BundledImage" uid="_UFttMdZUEe69IbObpvsypA" labelAlignment="LEFT">
4880 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4881 </ownedStyle>
4882 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4883 </ownedElements>
4884 </ownedDiagramElements>
4885 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_FTH7QNZXEe69IbObpvsypA" name="CastExpr" tooltipText="" outgoingEdges="_JicbhNZXEe69IbObpvsypA _NgNRjtZXEe69IbObpvsypA _PulNvNZXEe69IbObpvsypA" width="12" height="10">
4886 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//CastExpr"/>
4887 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//CastExpr"/>
4888 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4889 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4890 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4891 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_FTH7QdZXEe69IbObpvsypA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4892 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4893 </ownedStyle>
4894 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4895 </ownedDiagramElements>
4896 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_JicbhNZXEe69IbObpvsypA" name="[0..1] body" sourceNode="_FTH7QNZXEe69IbObpvsypA" targetNode="_3wvNYF3lEe2LuOZzJ_LhLg">
4897 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//CastExpr/body"/>
4898 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//CastExpr/body"/>
4899 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_JidCcNZXEe69IbObpvsypA" description="_FMCl0F3vEe2LuOZzJ_LhLg" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
4900 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_JidCctZXEe69IbObpvsypA" showIcon="false"/>
4901 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_JidCcdZXEe69IbObpvsypA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
4902 </ownedStyle>
4903 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
4904 </ownedDiagramElements>
4905 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_NgNRjtZXEe69IbObpvsypA" name="[0..1] targetType" sourceNode="_FTH7QNZXEe69IbObpvsypA" targetNode="_Z0MrUGTvEe2qdtyPWAtoxA">
4906 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//CastExpr/targetType"/>
4907 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//CastExpr/targetType"/>
4908 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_NgNRj9ZXEe69IbObpvsypA" routingStyle="manhattan" strokeColor="0,0,0">
4909 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
4910 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_NgNRkdZXEe69IbObpvsypA" showIcon="false"/>
4911 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_NgNRkNZXEe69IbObpvsypA" labelSize="6" showIcon="false" labelColor="39,76,114"/>
4912 </ownedStyle>
4913 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
4914 </ownedDiagramElements>
4915 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_PulNvNZXEe69IbObpvsypA" sourceNode="_FTH7QNZXEe69IbObpvsypA" targetNode="_3wvNYF3lEe2LuOZzJ_LhLg">
4916 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//CastExpr"/>
4917 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//CastExpr"/>
4918 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_PulNvdZXEe69IbObpvsypA" targetArrow="InputClosedArrow" routingStyle="tree">
4919 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
4920 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_PulNvtZXEe69IbObpvsypA" showIcon="false">
4921 <labelFormat>italic</labelFormat>
4922 </beginLabelStyle>
4923 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_PulNv9ZXEe69IbObpvsypA" showIcon="false"/>
4924 </ownedStyle>
4925 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4926 </ownedDiagramElements>
4927 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_c0BUUNcIEe6pjNxdSs0E0Q" name="AssignmentExpr" tooltipText="" outgoingEdges="_fj2Xo9cIEe6pjNxdSs0E0Q" width="12" height="10">
4928 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssignmentExpr"/>
4929 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssignmentExpr"/>
4930 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4931 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4932 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4933 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_eWkFJtcIEe6pjNxdSs0E0Q" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4934 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4935 </ownedStyle>
4936 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4937 </ownedDiagramElements>
4938 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fj2Xo9cIEe6pjNxdSs0E0Q" sourceNode="_c0BUUNcIEe6pjNxdSs0E0Q" targetNode="_bTLuAF3tEe2LuOZzJ_LhLg">
4939 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssignmentExpr"/>
4940 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssignmentExpr"/>
4941 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_fj2XpNcIEe6pjNxdSs0E0Q" targetArrow="InputClosedArrow" routingStyle="tree">
4942 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
4943 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_fj2XpdcIEe6pjNxdSs0E0Q" showIcon="false">
4944 <labelFormat>italic</labelFormat>
4945 </beginLabelStyle>
4946 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_fj2XptcIEe6pjNxdSs0E0Q" showIcon="false"/>
4947 </ownedStyle>
4948 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4949 </ownedDiagramElements>
4771 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 4950 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
4772 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_z1aAQF3lEe2LuOZzJ_LhLg"/> 4951 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_z1aAQF3lEe2LuOZzJ_LhLg"/>
4773 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 4952 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/subprojects/language-model/src/main/resources/model/problem.ecore b/subprojects/language-model/src/main/resources/model/problem.ecore
index bac409f9..eed134fd 100644
--- a/subprojects/language-model/src/main/resources/model/problem.ecore
+++ b/subprojects/language-model/src/main/resources/model/problem.ecore
@@ -199,8 +199,6 @@
199 <eLiterals name="MUL" value="2"/> 199 <eLiterals name="MUL" value="2"/>
200 <eLiterals name="DIV" value="3"/> 200 <eLiterals name="DIV" value="3"/>
201 <eLiterals name="POW" value="4"/> 201 <eLiterals name="POW" value="4"/>
202 <eLiterals name="MEET" value="5"/>
203 <eLiterals name="JOIN" value="6"/>
204 </eClassifiers> 202 </eClassifiers>
205 <eClassifiers xsi:type="ecore:EClass" name="ArithmeticUnaryExpr" eSuperTypes="#//UnaryExpr"> 203 <eClassifiers xsi:type="ecore:EClass" name="ArithmeticUnaryExpr" eSuperTypes="#//UnaryExpr">
206 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//UnaryOp"/> 204 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//UnaryOp"/>
@@ -249,7 +247,6 @@
249 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/> 247 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/>
250 </eClassifiers> 248 </eClassifiers>
251 <eClassifiers xsi:type="ecore:EClass" name="RangeExpr" eSuperTypes="#//BinaryExpr"/> 249 <eClassifiers xsi:type="ecore:EClass" name="RangeExpr" eSuperTypes="#//BinaryExpr"/>
252 <eClassifiers xsi:type="ecore:EClass" name="InfConstant" eSuperTypes="#//Constant"/>
253 <eClassifiers xsi:type="ecore:EClass" name="LogicConstant" eSuperTypes="#//Constant"> 250 <eClassifiers xsi:type="ecore:EClass" name="LogicConstant" eSuperTypes="#//Constant">
254 <eStructuralFeatures xsi:type="ecore:EAttribute" name="logicValue" eType="#//LogicValue"/> 251 <eStructuralFeatures xsi:type="ecore:EAttribute" name="logicValue" eType="#//LogicValue"/>
255 </eClassifiers> 252 </eClassifiers>
@@ -267,4 +264,16 @@
267 <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> 264 <eStructuralFeatures xsi:type="ecore:EAttribute" name="alias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
268 </eClassifiers> 265 </eClassifiers>
269 <eClassifiers xsi:type="ecore:EClass" name="DatatypeDeclaration" eSuperTypes="#//Relation #//Statement"/> 266 <eClassifiers xsi:type="ecore:EClass" name="DatatypeDeclaration" eSuperTypes="#//Relation #//Statement"/>
267 <eClassifiers xsi:type="ecore:EClass" name="LatticeBinaryExpr" eSuperTypes="#//BinaryExpr">
268 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//LatticeBinaryOp"/>
269 </eClassifiers>
270 <eClassifiers xsi:type="ecore:EEnum" name="LatticeBinaryOp">
271 <eLiterals name="MEET"/>
272 <eLiterals name="JOIN" value="1"/>
273 </eClassifiers>
274 <eClassifiers xsi:type="ecore:EClass" name="CastExpr" eSuperTypes="#//Expr">
275 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expr" containment="true"/>
276 <eStructuralFeatures xsi:type="ecore:EReference" name="targetType" eType="#//Relation"/>
277 </eClassifiers>
278 <eClassifiers xsi:type="ecore:EClass" name="AssignmentExpr" eSuperTypes="#//BinaryExpr"/>
270</ecore:EPackage> 279</ecore:EPackage>
diff --git a/subprojects/language-model/src/main/resources/model/problem.genmodel b/subprojects/language-model/src/main/resources/model/problem.genmodel
index 29df79cf..927ec609 100644
--- a/subprojects/language-model/src/main/resources/model/problem.genmodel
+++ b/subprojects/language-model/src/main/resources/model/problem.genmodel
@@ -51,8 +51,6 @@
51 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/MUL"/> 51 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/MUL"/>
52 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/DIV"/> 52 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/DIV"/>
53 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/POW"/> 53 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/POW"/>
54 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/MEET"/>
55 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/JOIN"/>
56 </genEnums> 54 </genEnums>
57 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//AggregationOp"> 55 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//AggregationOp">
58 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//AggregationOp/SUM"/> 56 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//AggregationOp/SUM"/>
@@ -69,6 +67,10 @@
69 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//NodeKind/ATOM"/> 67 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//NodeKind/ATOM"/>
70 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//NodeKind/MULTI"/> 68 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//NodeKind/MULTI"/>
71 </genEnums> 69 </genEnums>
70 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//LatticeBinaryOp">
71 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LatticeBinaryOp/MEET"/>
72 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LatticeBinaryOp/JOIN"/>
73 </genEnums>
72 <genClasses ecoreClass="problem.ecore#//Problem"> 74 <genClasses ecoreClass="problem.ecore#//Problem">
73 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/> 75 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/>
74 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/statements"/> 76 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/statements"/>
@@ -226,7 +228,6 @@
226 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ModalExpr/modality"/> 228 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ModalExpr/modality"/>
227 </genClasses> 229 </genClasses>
228 <genClasses ecoreClass="problem.ecore#//RangeExpr"/> 230 <genClasses ecoreClass="problem.ecore#//RangeExpr"/>
229 <genClasses ecoreClass="problem.ecore#//InfConstant"/>
230 <genClasses ecoreClass="problem.ecore#//LogicConstant"> 231 <genClasses ecoreClass="problem.ecore#//LogicConstant">
231 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//LogicConstant/logicValue"/> 232 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//LogicConstant/logicValue"/>
232 </genClasses> 233 </genClasses>
@@ -235,5 +236,13 @@
235 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ImportStatement/alias"/> 236 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ImportStatement/alias"/>
236 </genClasses> 237 </genClasses>
237 <genClasses ecoreClass="problem.ecore#//DatatypeDeclaration"/> 238 <genClasses ecoreClass="problem.ecore#//DatatypeDeclaration"/>
239 <genClasses ecoreClass="problem.ecore#//LatticeBinaryExpr">
240 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//LatticeBinaryExpr/op"/>
241 </genClasses>
242 <genClasses ecoreClass="problem.ecore#//CastExpr">
243 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//CastExpr/body"/>
244 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//CastExpr/targetType"/>
245 </genClasses>
246 <genClasses ecoreClass="problem.ecore#//AssignmentExpr"/>
238 </genPackages> 247 </genPackages>
239</genmodel:GenModel> 248</genmodel:GenModel>
diff --git a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
index a2fea627..43351d3e 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
+++ b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
@@ -103,7 +103,10 @@ Parameter:
103// name=Identifier; 103// name=Identifier;
104 104
105Expr: 105Expr:
106 ComparisonExpr; 106 AssignmentExpr;
107
108AssignmentExpr returns Expr:
109 ComparisonExpr ({AssignmentExpr.left=current}"is" right=ComparisonExpr)*;
107 110
108enum ComparisonOp: 111enum ComparisonOp:
109 LESS="<" | LESS_EQ="<=" | GREATER=">" | GREATER_EQ=">=" | EQ="==" | NOT_EQ="!=" | 112 LESS="<" | LESS_EQ="<=" | GREATER=">" | GREATER_EQ=">=" | EQ="==" | NOT_EQ="!=" |
@@ -113,15 +116,16 @@ ComparisonExpr returns Expr:
113 LatticeExpr ({ComparisonExpr.left=current} 116 LatticeExpr ({ComparisonExpr.left=current}
114 op=ComparisonOp right=LatticeExpr)*; 117 op=ComparisonOp right=LatticeExpr)*;
115 118
116enum LatticeOp returns BinaryOp: 119enum LatticeBinaryOp:
117 MEET="/\\" | JOIN="\\/"; 120 MEET="/\\" | JOIN="\\/";
118 121
119LatticeExpr returns Expr: 122LatticeExpr returns Expr:
120 RangeExpr ({ArithmeticBinaryExpr.left=current} 123 RangeExpr ({LatticeBinaryExpr.left=current}
121 op=LatticeOp right=RangeExpr)*; 124 op=LatticeBinaryOp right=RangeExpr)*;
122 125
123RangeExpr returns Expr: 126RangeExpr returns Expr:
124 AdditiveExpr ({RangeExpr.left=current} ".." right=AdditiveExpr)*; 127 AdditiveExpr ({RangeExpr.left=current} ".." ("*" | right=AdditiveExpr))* |
128 {RangeExpr} "*" ".." ("*" | right=AdditiveExpr);
125 129
126enum AdditiveOp returns BinaryOp: 130enum AdditiveOp returns BinaryOp:
127 ADD="+" | SUB="-"; 131 ADD="+" | SUB="-";
@@ -145,8 +149,8 @@ ExponentialExpr returns Expr:
145 op=ExponentialOp right=ExponentialExpr)?; 149 op=ExponentialOp right=ExponentialExpr)?;
146 150
147UnaryExpr returns Expr: 151UnaryExpr returns Expr:
148 ArithmeticUnaryExpr | ModalExpr | NegationExpr | CountExpr | AggregationExpr | 152 ArithmeticUnaryExpr | ModalExpr | NegationExpr |
149 Atom | VariableOrNodeExpr | Constant | "(" Expr ")"; 153 CountExpr | AggregationExpr | CastExpr;
150 154
151enum UnaryOp: 155enum UnaryOp:
152 PLUS="+" | MINUS="-"; 156 PLUS="+" | MINUS="-";
@@ -170,7 +174,13 @@ enum AggregationOp:
170 SUM="sum" | PROD="prod" | MIN="min" | MAX="max"; 174 SUM="sum" | PROD="prod" | MIN="min" | MAX="max";
171 175
172AggregationExpr: 176AggregationExpr:
173 op=AggregationOp "{" value=Expr "|" condition=Expr "}"; 177 op=AggregationOp "{" value=Expr "|" condition=ComparisonExpr "}";
178
179CastExpr returns Expr:
180 CastExprBody ({CastExpr.body=current} "as" targetType=[Relation|QualifiedName])?;
181
182CastExprBody returns Expr:
183 Atom | VariableOrNodeExpr | Constant | "(" Expr ")";
174 184
175Atom: 185Atom:
176 relation=[Relation|QualifiedName] 186 relation=[Relation|QualifiedName]
@@ -181,7 +191,7 @@ VariableOrNodeExpr:
181 variableOrNode=[VariableOrNode|QualifiedName]; 191 variableOrNode=[VariableOrNode|QualifiedName];
182 192
183Constant: 193Constant:
184 RealConstant | IntConstant | InfConstant | StringConstant | LogicConstant; 194 RealConstant | IntConstant | StringConstant | LogicConstant;
185 195
186IntConstant: 196IntConstant:
187 intValue=INT; 197 intValue=INT;
@@ -189,9 +199,6 @@ IntConstant:
189RealConstant: 199RealConstant:
190 realValue=Real; 200 realValue=Real;
191 201
192InfConstant:
193 {InfConstant} "*";
194
195StringConstant: 202StringConstant:
196 stringValue=STRING; 203 stringValue=STRING;
197 204
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/state/DerivedVariableComputer.java b/subprojects/language/src/main/java/tools/refinery/language/resource/state/DerivedVariableComputer.java
index f0baf35f..f096264b 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/resource/state/DerivedVariableComputer.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/resource/state/DerivedVariableComputer.java
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -44,15 +44,14 @@ public class DerivedVariableComputer {
44 knownVariables.add(name); 44 knownVariables.add(name);
45 } 45 }
46 } 46 }
47 if (definition instanceof PredicateDefinition predicateDefinition) { 47 switch (definition) {
48 installDerivedPredicateDefinitionState(predicateDefinition, knownVariables); 48 case PredicateDefinition predicateDefinition ->
49 } else if (definition instanceof FunctionDefinition functionDefinition) { 49 installDerivedPredicateDefinitionState(predicateDefinition, knownVariables);
50 installDerivedFunctionDefinitionState(functionDefinition, knownVariables); 50 case FunctionDefinition functionDefinition ->
51 } else if (definition instanceof RuleDefinition ruleDefinition) { 51 installDerivedFunctionDefinitionState(functionDefinition, knownVariables);
52 installDerivedRuleDefinitionState(ruleDefinition, knownVariables); 52 case RuleDefinition ruleDefinition -> installDerivedRuleDefinitionState(ruleDefinition, knownVariables);
53 } else { 53 default -> throw new IllegalArgumentException("Unknown ParametricDefinition: " + definition);
54 throw new IllegalArgumentException("Unknown ParametricDefinition: " + definition); 54 }
55 }
56 } 55 }
57 56
58 protected void installDerivedPredicateDefinitionState(PredicateDefinition definition, Set<String> knownVariables) { 57 protected void installDerivedPredicateDefinitionState(PredicateDefinition definition, Set<String> knownVariables) {
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/state/ImplicitVariableScope.java b/subprojects/language/src/main/java/tools/refinery/language/resource/state/ImplicitVariableScope.java
index e25887ad..c8e01724 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/resource/state/ImplicitVariableScope.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/resource/state/ImplicitVariableScope.java
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -16,10 +16,7 @@ import org.eclipse.xtext.scoping.IScopeProvider;
16import tools.refinery.language.model.problem.*; 16import tools.refinery.language.model.problem.*;
17import tools.refinery.language.naming.NamingUtil; 17import tools.refinery.language.naming.NamingUtil;
18 18
19import java.util.Deque; 19import java.util.*;
20import java.util.HashSet;
21import java.util.List;
22import java.util.Set;
23 20
24public class ImplicitVariableScope { 21public class ImplicitVariableScope {
25 private final EObject root; 22 private final EObject root;
@@ -71,13 +68,12 @@ public class ImplicitVariableScope {
71 if ((hasKnownVariables && hasParent) || (!hasKnownVariables && !hasParent)) { 68 if ((hasKnownVariables && hasParent) || (!hasKnownVariables && !hasParent)) {
72 throw new IllegalStateException("Either known variables or parent must be provided, but not both"); 69 throw new IllegalStateException("Either known variables or parent must be provided, but not both");
73 } 70 }
74 if (hasKnownVariables) { 71 if (!hasKnownVariables) {
75 return; 72 if (parent.knownVariables == null) {
76 } 73 throw new IllegalStateException("Parent scope must be processed before current scope");
77 if (parent.knownVariables == null) { 74 }
78 throw new IllegalStateException("Parent scope must be processed before current scope"); 75 knownVariables = new HashSet<>(parent.knownVariables);
79 } 76 }
80 knownVariables = new HashSet<>(parent.knownVariables);
81 } 77 }
82 78
83 private void processEObject(EObject eObject, IScopeProvider scopeProvider, LinkingHelper linkingHelper, 79 private void processEObject(EObject eObject, IScopeProvider scopeProvider, LinkingHelper linkingHelper,
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java
index a4437ba6..f83a7ebd 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -18,8 +18,8 @@ import org.eclipse.xtext.scoping.Scopes;
18import tools.refinery.language.model.problem.*; 18import tools.refinery.language.model.problem.*;
19import tools.refinery.language.utils.ProblemDesugarer; 19import tools.refinery.language.utils.ProblemDesugarer;
20 20
21import java.util.ArrayList; 21import java.util.Collection;
22import java.util.List; 22import java.util.LinkedHashSet;
23 23
24/** 24/**
25 * This class contains custom scoping description. 25 * This class contains custom scoping description.
@@ -58,7 +58,7 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
58 } 58 }
59 59
60 protected IScope getVariableScope(EObject context, IScope delegateScope) { 60 protected IScope getVariableScope(EObject context, IScope delegateScope) {
61 List<Variable> variables = new ArrayList<>(); 61 Collection<Variable> variables = new LinkedHashSet<>();
62 addSingletonVariableToScope(context, variables); 62 addSingletonVariableToScope(context, variables);
63 EObject currentContext = context; 63 EObject currentContext = context;
64 while (currentContext != null && !(currentContext instanceof ParametricDefinition)) { 64 while (currentContext != null && !(currentContext instanceof ParametricDefinition)) {
@@ -73,7 +73,7 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
73 return Scopes.scopeFor(variables, parentScope); 73 return Scopes.scopeFor(variables, parentScope);
74 } 74 }
75 75
76 protected void addSingletonVariableToScope(EObject context, List<Variable> variables) { 76 protected void addSingletonVariableToScope(EObject context, Collection<Variable> variables) {
77 if (context instanceof VariableOrNodeExpr expr) { 77 if (context instanceof VariableOrNodeExpr expr) {
78 Variable singletonVariable = expr.getSingletonVariable(); 78 Variable singletonVariable = expr.getSingletonVariable();
79 if (singletonVariable != null) { 79 if (singletonVariable != null) {
@@ -82,18 +82,21 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
82 } 82 }
83 } 83 }
84 84
85 protected void addExistentiallyQualifiedVariableToScope(EObject currentContext, List<Variable> variables) { 85 protected void addExistentiallyQualifiedVariableToScope(EObject currentContext, Collection<Variable> variables) {
86 if (currentContext instanceof ExistentialQuantifier quantifier) { 86 switch (currentContext) {
87 variables.addAll(quantifier.getImplicitVariables()); 87 case ExistentialQuantifier quantifier -> variables.addAll(quantifier.getImplicitVariables());
88 } else if (currentContext instanceof Match match) { 88 case Match match -> variables.addAll(match.getCondition().getImplicitVariables());
89 variables.addAll(match.getCondition().getImplicitVariables()); 89 case Consequent consequent -> {
90 } else if (currentContext instanceof Consequent consequent) {
91 for (var literal : consequent.getActions()) { 90 for (var literal : consequent.getActions()) {
92 if (literal instanceof NewAction newAction && newAction.getVariable() != null) { 91 if (literal instanceof NewAction newAction && newAction.getVariable() != null) {
93 variables.add(newAction.getVariable()); 92 variables.add(newAction.getVariable());
94 } 93 }
95 } 94 }
96 } 95 }
96 default -> {
97 // Nothing to add.
98 }
99 }
97 } 100 }
98 101
99 protected IScope getOppositeScope(EObject context) { 102 protected IScope getOppositeScope(EObject context) {
@@ -105,10 +108,7 @@ public class ProblemScopeProvider extends AbstractProblemScopeProvider {
105 if (!(relation instanceof ClassDeclaration classDeclaration)) { 108 if (!(relation instanceof ClassDeclaration classDeclaration)) {
106 return IScope.NULLSCOPE; 109 return IScope.NULLSCOPE;
107 } 110 }
108 var referenceDeclarations = classDeclaration.getFeatureDeclarations() 111 var referenceDeclarations = classDeclaration.getFeatureDeclarations();
109 .stream()
110 .filter(ReferenceDeclaration.class::isInstance)
111 .toList();
112 return Scopes.scopeFor(referenceDeclarations); 112 return Scopes.scopeFor(referenceDeclarations);
113 } 113 }
114} 114}