lutaml-xmi 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 629f979aa19a9752da8b4c75d763fc4b7cb2bb7e8c94ecf99080f6b69cc7cb91
4
- data.tar.gz: 3d43008c0fdf0cba05f2266129aaa6e2f1e3d3ca21ecde1e0226d1dd9f6e3b09
3
+ metadata.gz: 00fbd8ecac2e908005b2e8721296f5ad95c49bd164b32bc9954e8bf94d82ad18
4
+ data.tar.gz: 14e0bffadfb34e0980fba6d535576b3fff50b663c2f26f3174b1ab908a1883d2
5
5
  SHA512:
6
- metadata.gz: 35c6eaef31f0041dca19d776f6dde6150aafa50cfd7bc24c0fbab21deb5d7bd9193ba87df698ebda194c2ad58c58c6daf1880a2a09d3b961786cb786b7601b0e
7
- data.tar.gz: 70294ad01b275265d8106690cb34ee82694546f1746bbb9cae24d2b14041f2194d09025c2eea932be994b529300566519b8dd85fb9ff65d859f2e66bcfb2f9ca
6
+ metadata.gz: 432706c232ea18b66169dad9ce3a5f25612824563cde18484b3e83bab07804a503b7c145e62c67d0516e0b3ea83f38e6ed7fda461ee88b5d4a0a9a153142a300
7
+ data.tar.gz: 40d9499f0866b91bd5b04a8d2e47b0b894c82f6a129893f8b0d1f57e15ac37981d9a12c87b14f5f2acb0bbd6e4dd797ed910d28379f159bafed63e187947857d
@@ -34,17 +34,22 @@ module Lutaml
34
34
  model = xmi_doc.xpath('//uml:Model[@xmi:type="uml:Model"]').first
35
35
  {
36
36
  name: model["name"],
37
- packages: serialize_model_packages(model),
37
+ packages: serialize_model_packages(model)
38
38
  }
39
39
  end
40
40
 
41
41
  def serialize_model_packages(model)
42
42
  model.xpath('./packagedElement[@xmi:type="uml:Package"]').map do |package|
43
43
  {
44
+ xmi_id: package["xmi:id"],
44
45
  name: package["name"],
45
- packages: serialize_model_packages(package),
46
46
  classes: serialize_model_classes(package),
47
47
  enums: serialize_model_enums(package),
48
+ data_types: serialize_model_data_types(package),
49
+ diagrams: serialize_model_diagrams(package),
50
+ packages: serialize_model_packages(package),
51
+ definition: doc_node_attribute_value(package, "documentation"),
52
+ stereotype: doc_node_attribute_value(package, "stereotype")
48
53
  }
49
54
  end
50
55
  end
@@ -55,12 +60,14 @@ module Lutaml
55
60
  xmi_id: klass["xmi:id"],
56
61
  xmi_uuid: klass["xmi:uuid"],
57
62
  name: klass["name"],
63
+ package: model,
58
64
  attributes: serialize_class_attributes(klass),
59
65
  associations: serialize_model_associations(klass),
66
+ operations: serialize_class_operations(klass),
60
67
  constraints: serialize_class_constraints(klass),
61
68
  is_abstract: doc_node_attribute_value(klass, "isAbstract"),
62
69
  definition: doc_node_attribute_value(klass, "documentation"),
63
- stereotype: doc_node_attribute_value(klass, "stereotype"),
70
+ stereotype: doc_node_attribute_value(klass, "stereotype")
64
71
  }
65
72
  end
66
73
  end
@@ -69,38 +76,92 @@ module Lutaml
69
76
  model.xpath('./packagedElement[@xmi:type="uml:Enumeration"]').map do |enum|
70
77
  attributes = enum
71
78
  .xpath('.//ownedLiteral[@xmi:type="uml:EnumerationLiteral"]')
72
- .map do |attribute|
73
- {
74
- # TODO: xmi_id
75
- # xmi_id: enum['xmi:id'],
76
- type: attribute["name"],
77
- }
78
- end
79
+ .map do |value|
80
+ type = value.xpath(".//type").first || {}
81
+ {
82
+ name: value["name"],
83
+ type: lookup_entity_name(type["xmi:idref"]) || type["xmi:idref"],
84
+ definition: lookup_attribute_definition(value),
85
+ }
86
+ end
79
87
  {
80
88
  xmi_id: enum["xmi:id"],
81
89
  xmi_uuid: enum["xmi:uuid"],
82
90
  name: enum["name"],
83
- attributes: attributes,
91
+ values: attributes,
84
92
  definition: doc_node_attribute_value(enum, "documentation"),
85
93
  stereotype: doc_node_attribute_value(enum, "stereotype"),
86
94
  }
87
95
  end
88
96
  end
89
97
 
98
+ def serialize_model_data_types(model)
99
+ model.xpath('./packagedElement[@xmi:type="uml:DataType"]').map do |klass|
100
+ {
101
+ xmi_id: klass["xmi:id"],
102
+ xmi_uuid: klass["xmi:uuid"],
103
+ name: klass["name"],
104
+ attributes: serialize_class_attributes(klass),
105
+ operations: serialize_class_operations(klass),
106
+ associations: serialize_model_associations(klass),
107
+ constraints: serialize_class_constraints(klass),
108
+ is_abstract: doc_node_attribute_value(klass, "isAbstract"),
109
+ definition: doc_node_attribute_value(klass, "documentation"),
110
+ stereotype: doc_node_attribute_value(klass, "stereotype"),
111
+ }
112
+ end
113
+ end
114
+
115
+ def serialize_model_diagrams(node)
116
+ main_model.xpath(%(//diagrams/diagram/model[@package="#{node['xmi:id']}"])).map do |diagram_model|
117
+ diagram = diagram_model.parent
118
+ properties = diagram.children.find {|n| n.name == 'properties' }
119
+ {
120
+ xmi_id: diagram["xmi:id"],
121
+ name: properties["name"],
122
+ definition: properties.attributes['documentation']&.value
123
+ }
124
+ end
125
+ end
126
+
90
127
  def serialize_model_associations(klass)
91
128
  xmi_id = klass["xmi:id"]
92
129
  main_model.xpath(%(//element[@xmi:idref="#{xmi_id}"]/links/*)).map do |link|
93
- member_end, member_end_type, member_end_cardinality, member_end_attribute_name = serialize_member_type(xmi_id, link)
94
- {
95
- xmi_id: link["xmi:id"],
96
- member_end: member_end,
97
- member_end_type: member_end_type,
98
- member_end_cardinality: member_end_cardinality,
99
- member_end_attribute_name: member_end_attribute_name,
100
- }
130
+ link_member_name = link.attributes["start"].value == xmi_id ? "end" : "start"
131
+ linke_owner_name = link_member_name == "start" ? "end" : "start"
132
+ member_end, member_end_type, member_end_cardinality, member_end_attribute_name = serialize_member_type(xmi_id, link, link_member_name)
133
+ owner_end, owner_end_cardinality, owner_end_attribute_name = serialize_owned_type(xmi_id, link, linke_owner_name)
134
+ if member_end && ((member_end_type != 'aggregation') || (member_end_type == 'aggregation' && member_end_attribute_name))
135
+ doc_node_name = link_member_name == "start" ? "source" : "target"
136
+ definition_node = main_model.xpath(%(//connector[@xmi:idref="#{link['xmi:id']}"]/#{doc_node_name}/documentation)).first
137
+ definition = definition_node.attributes['value']&.value if definition_node
138
+ {
139
+ xmi_id: link["xmi:id"],
140
+ member_end: member_end,
141
+ member_end_type: member_end_type,
142
+ member_end_cardinality: member_end_cardinality,
143
+ member_end_attribute_name: member_end_attribute_name,
144
+ owner_end: owner_end,
145
+ definition: definition
146
+ }
147
+ end
101
148
  end
102
149
  end
103
150
 
151
+ def serialize_class_operations(klass)
152
+ klass.xpath('.//ownedOperation').map do |attribute|
153
+ type = attribute.xpath(".//type").first || {}
154
+ if attribute.attributes["association"].nil?
155
+ {
156
+ # TODO: xmi_id
157
+ # xmi_id: klass['xmi:id'],
158
+ name: attribute["name"],
159
+ definition: lookup_attribute_definition(attribute),
160
+ }
161
+ end
162
+ end.compact
163
+ end
164
+
104
165
  def serialize_class_constraints(klass)
105
166
  class_element_metadata(klass).xpath("./constraints/constraint").map do |constraint|
106
167
  {
@@ -110,36 +171,85 @@ module Lutaml
110
171
  end
111
172
  end
112
173
 
113
- def serialize_member_type(owned_xmi_id, link)
114
- return generalization_association(owned_xmi_id, link) if link.name == "Generalization"
174
+ def serialize_owned_type(owner_xmi_id, link, linke_owner_name)
175
+ return if link.name == 'NoteLink'
176
+ return generalization_association(owner_xmi_id, link) if link.name == "Generalization"
177
+
178
+ xmi_id = link.attributes[linke_owner_name].value
179
+ owner_end = lookup_entity_name(xmi_id) || connector_source_name(xmi_id)
180
+
181
+ if link.name == "Association"
182
+ assoc_connector = main_model.xpath(%(//connector[@xmi:idref="#{link['xmi:id']}"]/source)).first
183
+ if assoc_connector
184
+ connector_type = assoc_connector.children.find { |node| node.name == 'type' }
185
+ if connector_type && connector_type.attributes['multiplicity']
186
+ cardinality = connector_type.attributes['multiplicity']&.value&.split('..')
187
+ cardinality.unshift('1') if cardinality.length == 1
188
+ min, max = cardinality
189
+ end
190
+ connector_role = assoc_connector.children.find { |node| node.name == 'role' }
191
+ if connector_role
192
+ owned_attribute_name = connector_role.attributes["name"]&.value
193
+ end
194
+ owned_cardinality = { "min" => LOVER_VALUE_MAPPINGS[min], "max" => max }
195
+ end
196
+ else
197
+ owned_node = main_model.xpath(%(//ownedAttribute[@association]/type[@xmi:idref="#{xmi_id}"])).first
198
+ if owned_node
199
+ assoc = owned_node.parent
200
+ owned_cardinality = { "min" => cardinality_min_value(assoc), "max" => cardinality_max_value(assoc) }
201
+ owned_attribute_name = assoc.attributes["name"]&.value
202
+ end
203
+ end
115
204
 
116
- xmi_id = link.attributes["start"].value
117
- member_end = lookup_entity_name(xmi_id)
205
+ [owner_end, owned_cardinality, owned_attribute_name]
206
+ end
118
207
 
119
- member_end_node = if link.name == "Association"
120
- link_xmk_id = link["xmi:id"]
121
- main_model.xpath(%(//packagedElement[@xmi:id="#{link_xmk_id}"]//type[@xmi:idref="#{xmi_id}"])).first
122
- else
123
- main_model.xpath(%(//ownedAttribute[@association]/type[@xmi:idref="#{xmi_id}"])).first
124
- end
125
- if member_end_node
126
- assoc = member_end_node.parent
127
- member_end_cardinality = { "min" => cardinality_min_value(assoc), "max" => cardinality_max_value(assoc) }
128
- member_end_attribute_name = assoc.attributes["name"]&.value
208
+ def serialize_member_type(owner_xmi_id, link, link_member_name)
209
+ return if link.name == 'NoteLink'
210
+ return generalization_association(owner_xmi_id, link) if link.name == "Generalization"
211
+
212
+ xmi_id = link.attributes[link_member_name].value
213
+ member_end = lookup_entity_name(xmi_id) || connector_source_name(xmi_id)
214
+
215
+ if link.name == "Association"
216
+ connector_type = link_member_name == "start" ? "source" : "target"
217
+ assoc_connector = main_model.xpath(%(//connector[@xmi:idref="#{link['xmi:id']}"]/#{connector_type})).first
218
+ if assoc_connector
219
+ connector_type = assoc_connector.children.find { |node| node.name == 'type' }
220
+ if connector_type && connector_type.attributes['multiplicity']
221
+ cardinality = connector_type.attributes['multiplicity']&.value&.split('..')
222
+ cardinality.unshift('1') if cardinality.length == 1
223
+ min, max = cardinality
224
+ end
225
+ connector_role = assoc_connector.children.find { |node| node.name == 'role' }
226
+ if connector_role
227
+ member_end_attribute_name = connector_role.attributes["name"]&.value
228
+ end
229
+ member_end_cardinality = { "min" => LOVER_VALUE_MAPPINGS[min], "max" => max }
230
+ end
231
+ else
232
+ member_end_node = main_model.xpath(%(//ownedAttribute[@association]/type[@xmi:idref="#{xmi_id}"])).first
233
+ if member_end_node
234
+ assoc = member_end_node.parent
235
+ member_end_cardinality = { "min" => cardinality_min_value(assoc), "max" => cardinality_max_value(assoc) }
236
+ member_end_attribute_name = assoc.attributes["name"]&.value
237
+ end
129
238
  end
130
239
 
131
240
  [member_end, "aggregation", member_end_cardinality, member_end_attribute_name]
132
241
  end
133
242
 
134
- def generalization_association(owned_xmi_id, link)
135
- if link.attributes["start"].value == owned_xmi_id
243
+ def generalization_association(owner_xmi_id, link)
244
+ if link.attributes["start"].value == owner_xmi_id
136
245
  xmi_id = link.attributes["end"].value
137
246
  member_end_type = "inheritance"
247
+ member_end = lookup_entity_name(xmi_id) || connector_target_name(xmi_id)
138
248
  else
139
249
  xmi_id = link.attributes["start"].value
140
250
  member_end_type = "generalization"
251
+ member_end = lookup_entity_name(xmi_id) || connector_source_name(xmi_id)
141
252
  end
142
- member_end = lookup_entity_name(xmi_id)
143
253
 
144
254
  member_end_node = main_model.xpath(%(//ownedAttribute[@association]/type[@xmi:idref="#{xmi_id}"])).first
145
255
  if member_end_node
@@ -203,7 +313,7 @@ module Lutaml
203
313
  end
204
314
 
205
315
  def lookup_entity_name(xmi_id)
206
- xmi_cache[xmi_id] ||= model_node_name_by_xmi_id(xmi_id) || connector_source_name(xmi_id)
316
+ xmi_cache[xmi_id] ||= model_node_name_by_xmi_id(xmi_id)
207
317
  xmi_cache[xmi_id]
208
318
  end
209
319
 
@@ -214,6 +324,13 @@ module Lutaml
214
324
  node.attributes["name"]&.value
215
325
  end
216
326
 
327
+ def connector_target_name(xmi_id)
328
+ node = main_model.xpath(%(//target[@xmi:idref="#{xmi_id}"]/model)).first
329
+ return unless node
330
+
331
+ node.attributes["name"]&.value
332
+ end
333
+
217
334
  def model_node_name_by_xmi_id(xmi_id)
218
335
  node = main_model.xpath(%(//*[@xmi:id="#{xmi_id}"])).first
219
336
  return unless node
@@ -1,5 +1,5 @@
1
1
  module Lutaml
2
2
  module XMI
3
- VERSION = "0.1.2"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
data/lutaml-xmi.gemspec CHANGED
@@ -26,10 +26,10 @@ Gem::Specification.new do |spec|
26
26
  spec.add_runtime_dependency "hashie", "~> 4.1.0"
27
27
  spec.add_runtime_dependency "thor", "~> 1.0"
28
28
  spec.add_runtime_dependency "lutaml-uml"
29
+ spec.add_runtime_dependency "nokogiri", "~> 1.10"
29
30
 
30
31
  spec.add_development_dependency "bundler", "~> 2.0"
31
32
  spec.add_development_dependency "byebug"
32
- spec.add_development_dependency "nokogiri", "~> 1.10"
33
33
  spec.add_development_dependency "pry", "~> 0.12.2"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
35
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -1493,6 +1493,134 @@
1493
1493
  <xrefs/>
1494
1494
  <tags/>
1495
1495
  </connector>
1496
+ <diagrams>
1497
+ <diagram xmi:id="EAID_E9201FDF_B8D6_48cb_B683_3A3FE2170BDD">
1498
+ <model package="EAPK_04AA6D68_5225_400f_818D_4772E5A132EB" localID="1" owner="EAPK_04AA6D68_5225_400f_818D_4772E5A132EB" tpos="0"/>
1499
+ <properties name="Fig: DGGS Package Diagram" type="Logical" documentation="this is a documentation"/>
1500
+ <project author="Robert Gibb" version="2019" created="2019-10-21 16:18:34" modified="2020-12-05 23:55:38"/>
1501
+ <style1 value="ShowPrivate=1;ShowProtected=1;ShowPublic=1;HideRelationships=0;Locked=0;Border=0;HighlightForeign=1;PackageContents=0;SequenceNotes=0;ScalePrintImage=0;PPgs.cx=0;PPgs.cy=0;DocSize.cx=795;DocSize.cy=1138;ShowDetails=0;Orientation=P;Zoom=100;ShowTags=0;OpParams=1;VisibleAttributeDetail=0;ShowOpRetType=1;ShowIcons=1;CollabNums=0;HideProps=0;ShowReqs=0;ShowCons=0;PaperSize=9;HideParents=0;UseAlias=0;HideAtts=1;HideOps=1;HideStereo=1;HideElemStereo=1;ShowTests=0;ShowMaint=0;ConnectorNotation=UML 2.1;ExplicitNavigability=0;ShowShape=1;AllDockable=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=0;m_bElementClassifier=1;SPT=1;ShowNotes=0;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;HideConnStereotype=1;ShowFQN=1;"/>
1502
+ <style2 value="ExcludeRTF=0;DocAll=0;HideQuals=0;AttPkg=1;ShowTests=0;ShowMaint=0;SuppressFOC=1;MatrixActive=0;SwimlanesActive=1;KanbanActive=0;MatrixLineWidth=1;MatrixLineClr=0;MatrixLocked=0;TConnectorNotation=UML 2.1;TExplicitNavigability=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=0;m_bElementClassifier=1;SPT=1;MDGDgm=;STBLDgm=;ShowNotes=0;VisibleAttributeDetail=0;ShowOpRetType=1;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;HideConnStereotype=1;ShowFQN=1;SuppressedCompartments=;Theme=Monochrome for printing:119;HideFeatLink=1;SaveTag=FF8D95FE;"/>
1503
+ <swimlanes value="locked=false;orientation=0;width=0;inbar=false;names=false;color=0;bold=false;fcol=0;tcol=16777215;ofCol=-1;ufCol=-1;hl=0;ufh=0;hh=0;cls=0;bw=0;hli=0;SwimlaneFont=lfh:-10,lfw:0,lfi:0,lfu:0,lfs:0,lfface:Carlito,lfe:0,lfo:0,lfchar:1,lfop:0,lfcp:0,lfq:0,lfpf=0,lfWidth=0;"/>
1504
+ <matrixitems value="locked=false;matrixactive=false;swimlanesactive=true;kanbanactive=false;width=1;clrLine=0;"/>
1505
+ <extendedProperties/>
1506
+ <elements>
1507
+ <element geometry="Left=90;Top=890;Right=195;Bottom=949;imgL=98;imgT=906;imgR=203;imgB=965;" subject="EAID_D87CFCD1_E6FA_40b1_8DF4_582457AAE03E" seqno="1" style="NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=A614872E;"/>
1508
+ <element geometry="Left=600;Top=890;Right=686;Bottom=947;imgL=608;imgT=906;imgR=694;imgB=963;" subject="EAID_AC202A78_2895_4f28_B947_B92AF0AD3051" seqno="2" style="NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=99DF6365;"/>
1509
+ <element geometry="Left=715;Top=890;Right=809;Bottom=949;imgL=723;imgT=906;imgR=817;imgB=965;" subject="EAID_0D462D6E_4097_44ae_AAEC_FA91FD6F6988" seqno="3" style="NSL=0;BCol=-1;BFol=-1;LCol=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;LWth=0;DUID=56F0EC08;"/>
1510
+ <element geometry="Left=73;Top=283;Right=322;Bottom=324;imgL=81;imgT=299;imgR=330;imgB=340;" subject="EAID_91372B9D_392D_4e8f_8935_AF840790A1D3" seqno="4" style=" DUID=A2D3ACE3;NSL=0;bold=0;black=0;italic=0;ul=0;charset=0;LCol=3329330;BFol=0;font=Calibri;BCol=16777215;LWth=2;fontsz=90;pitch=34;DUID=414AD010;"/>
1511
+ <element geometry="Left=465;Top=706;Right=753;Bottom=746;imgL=473;imgT=722;imgR=761;imgB=762;" subject="EAID_AC035E38_542D_4eca_87EB_CE687A3C69D7" seqno="5" style=" DUID=EC55C00E;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;RzO=1;LWth=0;font=Calibri;fontsz=90;pitch=34;DUID=F8049856;"/>
1512
+ <element geometry="Left=90;Top=560;Right=347;Bottom=601;imgL=98;imgT=576;imgR=355;imgB=617;" subject="EAID_C93A8CD8_53C7_4d95_8BC7_591AE2BB7563" seqno="6" style=" DUID=7C7D5F0D;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;RzO=1;pitch=34;font=Calibri;LWth=2;fontsz=90;DUID=9AA052D2;"/>
1513
+ <element geometry="Left=90;Top=460;Right=347;Bottom=501;imgL=98;imgT=476;imgR=355;imgB=517;" subject="EAID_308C1C4A_8DC9_4e2c_88CD_2B08506CABF6" seqno="7" style=" DUID=D015E04E;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;RzO=1;pitch=34;font=Calibri;LWth=2;fontsz=90;DUID=1BDF6B75;"/>
1514
+ <element geometry="Left=60;Top=411;Right=376;Bottom=651;imgL=68;imgT=427;imgR=384;imgB=667;" subject="EAID_6FEDD31A_6F40_4ed8_9230_600BB66D2296" seqno="8" style=" DUID=28200C96;NSL=0;BCol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;BFol=0;font=Calibri;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;RzO=1;LWth=0;fontsz=90;pitch=34;DUID=225AD012;"/>
1515
+ <element geometry="Left=462;Top=524;Right=774;Bottom=587;imgL=470;imgT=540;imgR=782;imgB=603;" subject="EAID_48946985_6B5B_4ed9_B66D_C3AE45D93CA2" seqno="9" style=" DUID=FBD0AD13;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;LWth=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;pitch=34;RzO=2;font=Calibri;fontsz=90;DUID=46FDB905;"/>
1516
+ <element geometry="Left=485;Top=19;Right=790;Bottom=60;imgL=493;imgT=35;imgR=798;imgB=76;" subject="EAID_6F4DCF8C_E51D_4645_B579_A802BF70796D" seqno="10" style=" DUID=1DCA28CD;NSL=0;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;BCol=16777215;BFol=0;LWth=2;pitch=34;font=Calibri;LCol=3107669;fontsz=90;DUID=AED27AB9;"/>
1517
+ <element geometry="Left=466;Top=780;Right=754;Bottom=822;imgL=474;imgT=796;imgR=762;imgB=838;" subject="EAID_7C88ECAD_27B4_4211_83D4_ED24E5CF4E84" seqno="11" style=" DUID=1D3BA107;NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;pitch=34;font=Calibri;fontsz=90;DUID=C0A13AD6;"/>
1518
+ <element geometry="Left=465;Top=630;Right=753;Bottom=671;imgL=473;imgT=646;imgR=761;imgB=687;" subject="EAID_8EBFE6FE_6049_4b85_9A81_1EF5B098BAFB" seqno="12" style=" DUID=A705F8CF;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;pitch=34;LWth=0;font=Calibri;fontsz=90;DUID=36F9BF02;"/>
1519
+ <element geometry="Left=430;Top=483;Right=791;Bottom=859;imgL=438;imgT=499;imgR=799;imgB=875;" subject="EAID_30110D27_B617_47d1_B6F0_6F1A3E9D9AA4" seqno="13" style=" DUID=65DCE573;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;pitch=34;LWth=2;font=Calibri;fontsz=90;DUID=641BB11A;"/>
1520
+ <element geometry="Left=73;Top=186;Right=322;Bottom=227;imgL=81;imgT=202;imgR=330;imgB=243;" subject="EAID_A6E1BC79_B072_451f_AAD5_D914E44B941A" seqno="14" style=" DUID=FD6FF5AF;NSL=0;bold=0;black=0;italic=0;ul=0;charset=0;BFol=0;LWth=2;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LCol=6717674;pitch=34;font=Calibri;BCol=16777215;fontsz=90;DUID=89C9883D;"/>
1521
+ <element geometry="Left=73;Top=102;Right=322;Bottom=143;imgL=81;imgT=118;imgR=330;imgB=159;" subject="EAID_1BD723DA_7A8F_4092_8396_B9AB3C916ADE" seqno="15" style=" NSL=0;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LCol=16734039;BFol=0;pitch=34;font=Calibri;BCol=16777215;LWth=2;fontsz=90;DUID=A8EB1B43;"/>
1522
+ <element geometry="Left=485;Top=102;Right=790;Bottom=143;imgL=493;imgT=118;imgR=798;imgB=159;" subject="EAID_877217FC_8B39_4d2d_87D9_B7116CA4109E" seqno="16" style="NSL=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LCol=3329330;BFol=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=34;font=Calibri;BCol=16777215;LWth=2;fontsz=90;DUID=26308E53;"/>
1523
+ <element geometry="Left=485;Top=185;Right=790;Bottom=226;imgL=493;imgT=201;imgR=798;imgB=242;" subject="EAID_E1339BBA_2C02_4df1_ABA9_EB9DE78622CE" seqno="17" style="NSL=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LCol=3329330;BFol=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=34;font=Calibri;BCol=16777215;LWth=2;fontsz=90;DUID=29194FDD;"/>
1524
+ <element geometry="Left=73;Top=19;Right=322;Bottom=60;imgL=81;imgT=35;imgR=330;imgB=76;" subject="EAID_BACD4C75_AA34_4201_B129_E5D8533F8DC8" seqno="18" style="NSL=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LCol=3329330;BFol=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=34;font=Calibri;BCol=16777215;LWth=2;fontsz=90;DUID=16290BBA;"/>
1525
+ <element geometry="Left=485;Top=267;Right=790;Bottom=324;imgL=493;imgT=283;imgR=798;imgB=340;" subject="EAID_97DF41C5_745A_4794_8FA4_288EF531AD7D" seqno="19" style=" DUID=DFF9D1D0;NSL=0;bold=0;black=0;italic=0;ul=0;charset=0;BFol=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LCol=-1;BCol=5301246;pitch=34;font=Calibri;fontsz=90;LWth=0;DUID=E17F0DCC;"/>
1526
+ <element geometry="Left=485;Top=407;Right=792;Bottom=466;imgL=493;imgT=423;imgR=800;imgB=482;" subject="EAID_A603DED3_3EF2_4ad5_AD2C_E724773DA860" seqno="20" style=" DUID=78DE671C;bold=0;black=0;italic=0;ul=0;charset=0;pitch=34;BFol=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;OpPro=0;OpPri=0;OpPub=0;OpPkg=0;AttCustom=0;OpCustom=0;PType=0;RzO=1;LWth=2;font=Calibri;fontsz=90;DUID=E878E011;"/>
1527
+ <element geometry="Left=45;Top=366;Right=810;Bottom=880;imgL=53;imgT=382;imgR=818;imgB=896;" subject="EAID_04AA6D68_5225_400f_818D_4772E5A132EB" seqno="21" style=" DUID=407A9D7B;NSL=0;BCol=-1;BFol=-1;LCol=-1;bold=0;black=0;italic=0;ul=0;charset=0;AttPro=0;AttPri=0;AttPub=0;AttPkg=0;AttCustom=0;OpCustom=0;RzO=1;pitch=34;font=Calibri;LWth=4;fontsz=90;DUID=84120163;"/>
1528
+ <element geometry="Left=224;Top=890;Right=329;Bottom=949;imgL=232;imgT=906;imgR=337;imgB=965;" subject="EAID_1CB40178_1C4B_4fe9_9164_60277DDBE8C9" seqno="22" style="NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=0313BEC0;"/>
1529
+ <element geometry="Left=358;Top=890;Right=446;Bottom=949;imgL=366;imgT=906;imgR=454;imgB=965;" subject="EAID_83CE8700_5125_43f8_A2AC_732E0332D8B0" seqno="23" style="NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=CFADB72C;"/>
1530
+ <element geometry="Left=475;Top=890;Right=571;Bottom=949;imgL=483;imgT=906;imgR=579;imgB=965;" subject="EAID_D585DDCF_D101_47de_ABA6_1DEDFD2781FF" seqno="24" style="NSL=0;BCol=-1;BFol=-1;LCol=-1;LWth=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=B1095BCA;"/>
1531
+ <element geometry="Left=50;Top=909;Right=190;Bottom=949;imgL=58;imgT=925;imgR=198;imgB=965;" subject="EAID_84245574_3005_4626_89CE_CAF1B29F159A" seqno="25" style="LCol=16777215;DUID=57E555C3;"/>
1532
+ <element geometry=" 1908, 611, 54, 661,;EDGE=3;SX=31;SY=-5;EX=31;EY=-5;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_C7D219C2_5DDC_4e27_9DF7_C5B9AAD61BAA" style="Mode=2;Color=-1;LWidth=0;SOID=29194FDD;EOID=26308E53;Hidden=1;"/>
1533
+ <element geometry="SX=0;SY=-7;EX=0;EY=-13;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=27:-587$27:-316$;" subject="EAID_79BA4C65_14E1_4545_82D1_B940BE09BBD8" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=9AA052D2;EOID=414AD010;Hidden=0;"/>
1534
+ <element geometry="SX=0;SY=-3;EX=0;EY=-13;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=380:-483$380:-316$;" subject="EAID_68020FA0_9BD2_409d_9B77_A4A79729E6CC" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=1BDF6B75;EOID=414AD010;Hidden=0;"/>
1535
+ <element geometry="SX=-1;SY=-16;EX=-2;EY=8;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=401:-579$401:-570$;" subject="EAID_60D5446C_1B6E_42f3_80CC_1DA77A7D6098" style="Mode=1;Color=-1;LWidth=0;SOID=46FDB905;EOID=9AA052D2;Hidden=0;"/>
1536
+ <element geometry="SX=0;SY=-11;EX=0;EY=-16;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=402:-566$402:-496$;" subject="EAID_859DDADE_39C5_4448_A842_DE38F9F6924A" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=46FDB905;EOID=1BDF6B75;Hidden=0;"/>
1537
+ <element geometry="SX=0;SY=-4;EX=0;EY=-11;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=781:-654$781:-566$;" subject="EAID_ADD4CE1F_C175_410d_8653_DC9FEF4BCCA2" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=36F9BF02;EOID=46FDB905;Hidden=0;"/>
1538
+ <element geometry="SX=-168;SY=0;EX=0;EY=-15;EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=603:-561$;" subject="EAID_A66E48D5_955B_4163_82F7_53F3F5B8DC2D" style="Mode=3;Color=0;LWidth=0;TREE=OS;SOID=641BB11A;EOID=46FDB905;Hidden=1;"/>
1539
+ <element geometry="SX=0;SY=-9;EX=0;EY=-24;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=437:-735$437:-579$;" subject="EAID_BBD43D58_63B4_447c_8112_AFE932D329AF" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=F8049856;EOID=46FDB905;Hidden=0;"/>
1540
+ <element geometry="SX=23;SY=1;EX=-35;EY=-16;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_2D0A8A53_1233_43d0_AC93_AEE320786982" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=E878E011;EOID=46FDB905;Hidden=0;"/>
1541
+ <element geometry="SX=0;SY=3;EX=0;EY=-12;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=419:-552$419:-51$;" subject="EAID_AD2F75AD_A76F_4a42_A12A_A5B0D004A57F" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=46FDB905;EOID=AED27AB9;Hidden=0;"/>
1542
+ <element geometry="SX=0;SY=-7;EX=0;EY=-10;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=385:-487$385:-216$;" subject="EAID_831A9407_E7B2_41af_80EF_2B7E4C8860F0" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=1BDF6B75;EOID=89C9883D;Hidden=0;"/>
1543
+ <element geometry="SX=0;SY=-15;EX=0;EY=-7;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=17:-741$17:-129$;" subject="EAID_8349BC7D_5A79_4813_A9C8_7CA791416343" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=F8049856;EOID=A8EB1B43;Hidden=0;"/>
1544
+ <element geometry="EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_9BE0DFD4_BEA9_465a_B70C_A22E35136D6F" style="Mode=3;Color=-1;LWidth=0;SOID=16290BBA;EOID=414AD010;Hidden=1;"/>
1545
+ <element geometry="SX=0;SY=-12;EX=0;EY=-14;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=389:-492$389:-136$;" subject="EAID_FC1C2A04_5C04_4483_BD6F_316B63C1D961" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=1BDF6B75;EOID=A8EB1B43;Hidden=0;"/>
1546
+ <element geometry="EDGE=4;EX=-76;EY=0;SX=0;SY=-8;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=333:-781$;" subject="EAID_30995DCB_E854_4993_8DEE_99E0B0ABFD39" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=C0A13AD6;EOID=641BB11A;Hidden=1;"/>
1547
+ <element geometry="SX=0;SY=-13;EX=0;EY=-10;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=451:-449$451:-132$;" subject="EAID_1BACFF38_7714_4ba6_A560_D5DA1E9BBD0E" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=E878E011;EOID=26308E53;Hidden=0;"/>
1548
+ <element geometry=" 1434, 611, 696, 661,;EDGE=3;SX=-1;SY=0;EX=0;EY=-1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=73:-123$;" subject="EAID_8D5F3DB1_4D9D_4fc0_B044_272F36C71167" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=16290BBA;EOID=26308E53;Hidden=1;"/>
1549
+ <element geometry="EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_EA827FFC_A874_459d_8636_4113B59553EE" style="Mode=3;Color=-1;LWidth=0;SOID=414AD010;EOID=26308E53;Hidden=1;"/>
1550
+ <element geometry=" 1488, 218, 410, 54,;EDGE=3;SX=2;SY=9;EX=2;EY=9;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_7D9D4C1B_3E79_49bf_A50C_6E13615C6221" style="Mode=2;Color=-1;LWidth=0;SOID=16290BBA;EOID=29194FDD;Hidden=1;"/>
1551
+ <element geometry="SX=0;SY=-9;EX=0;EY=-11;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=454:-445$454:-216$;" subject="EAID_B0FCE72D_E3D0_4c2e_89E3_89241094B044" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=E878E011;EOID=29194FDD;Hidden=0;"/>
1552
+ <element geometry=" 1488, 218, 410, 54,;SX=2;SY=-7;EX=2;EY=-7;EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_2FD79E8A_8C87_4be2_AE91_ADF297622808" style="Mode=2;Color=-1;LWidth=0;SOID=29194FDD;EOID=16290BBA;Hidden=1;"/>
1553
+ <element geometry="SX=0;SY=-1;EX=0;EY=-13;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=416:-556$416:-52$;" subject="EAID_0C5D0603_FB2C_4b84_AE3A_9A945414BA2C" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=46FDB905;EOID=16290BBA;Hidden=0;"/>
1554
+ <element geometry="SX=0;SY=-11;EX=0;EY=-12;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=834:-661$834:-307$;" subject="EAID_54F3C9AD_BB0F_4c2e_9B3F_0350EF4CC994" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=36F9BF02;EOID=E17F0DCC;Hidden=0;"/>
1555
+ <element geometry="SX=0;SY=-8;EX=0;EY=2;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=838:-809$838:-293$;" subject="EAID_7BAD95D2_AC1C_4128_BBFF_362A0C1907EB" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=C0A13AD6;EOID=E17F0DCC;Hidden=0;"/>
1556
+ <element geometry="SX=0;SY=-27;EX=0;EY=-13;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=823:-322$823:-449$;" subject="EAID_CF7DC355_4D6C_4d92_AAEA_8CC59FBB2726" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=E17F0DCC;EOID=E878E011;Hidden=0;"/>
1557
+ <element geometry="SX=0;SY=-2;EX=0;EY=-19;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=781:-803$781:-669$;" subject="EAID_16E25BEA_7582_4763_B9E5_D1577608CEC2" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=C0A13AD6;EOID=36F9BF02;Hidden=0;"/>
1558
+ <element geometry="SX=0;SY=-10;EX=-91;EY=0;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=319:-633$;" subject="EAID_15B546ED_EE91_42ce_BFB9_9F12D9528240" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=36F9BF02;EOID=641BB11A;Hidden=1;"/>
1559
+ <element geometry="SX=0;SY=-10;EX=0;EY=-15;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=24:-590$24:-137$;" subject="EAID_79B744E8_144A_4a02_BD1F_84E93F0155B0" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=9AA052D2;EOID=A8EB1B43;Hidden=0;"/>
1560
+ </elements>
1561
+ </diagram>
1562
+ <diagram xmi:id="EAID_9A40024C_98DA_4a01_8F0B_CB65A4208AFA">
1563
+ <model package="EAPK_04AA6D68_5225_400f_818D_4772E5A132EB" localID="2" owner="EAPK_04AA6D68_5225_400f_818D_4772E5A132EB" tpos="1"/>
1564
+ <properties name="Fig: Context for Temporal Geometry and Topology" type="Logical"/>
1565
+ <project author="Gibb Robert" version="2019" created="2020-01-28 10:19:25" modified="2020-11-08 14:14:17"/>
1566
+ <style1 value="ShowPrivate=1;ShowProtected=1;ShowPublic=1;HideRelationships=0;Locked=0;Border=1;HighlightForeign=1;PackageContents=0;SequenceNotes=0;ScalePrintImage=1;PPgs.cx=1;PPgs.cy=1;DocSize.cx=1000;DocSize.cy=1000;ShowDetails=0;Orientation=P;Zoom=100;ShowTags=0;OpParams=1;VisibleAttributeDetail=0;ShowOpRetType=1;ShowIcons=0;CollabNums=1;HideProps=1;ShowReqs=0;ShowCons=0;PaperSize=1;HideParents=1;UseAlias=0;HideAtts=1;HideOps=1;HideStereo=0;HideElemStereo=0;ShowTests=0;ShowMaint=0;ConnectorNotation=UML 2.1;ExplicitNavigability=0;ShowShape=1;AllDockable=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=1;m_bElementClassifier=1;SPT=1;ShowNotes=0;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;"/>
1567
+ <style2 value="ExcludeRTF=0;DocAll=0;HideQuals=0;AttPkg=1;ShowTests=0;ShowMaint=0;SuppressFOC=1;MatrixActive=0;SwimlanesActive=1;KanbanActive=0;MatrixLineWidth=1;MatrixLineClr=0;MatrixLocked=0;TConnectorNotation=UML 2.1;TExplicitNavigability=0;AdvancedElementProps=1;AdvancedFeatureProps=1;AdvancedConnectorProps=1;m_bElementClassifier=1;SPT=1;MDGDgm=;STBLDgm=;ShowNotes=0;VisibleAttributeDetail=0;ShowOpRetType=1;SuppressBrackets=0;SuppConnectorLabels=0;PrintPageHeadFoot=0;ShowAsList=0;SuppressedCompartments=;Theme=:119;SaveTag=4C82CA42;"/>
1568
+ <swimlanes value="locked=false;orientation=0;width=0;inbar=false;names=false;color=0;bold=false;fcol=0;tcol=16777215;ofCol=-1;ufCol=-1;hl=1;ufh=0;hh=0;cls=0;bw=0;hli=0;SwimlaneFont=lfh:-10,lfw:0,lfi:0,lfu:0,lfs:0,lfface:Carlito,lfe:0,lfo:0,lfchar:1,lfop:0,lfcp:0,lfq:0,lfpf=0,lfWidth=0;"/>
1569
+ <matrixitems value="locked=false;matrixactive=false;swimlanesactive=true;kanbanactive=false;width=1;clrLine=0;"/>
1570
+ <extendedProperties/>
1571
+ <elements>
1572
+ <element geometry="Left=441;Top=480;Right=535;Bottom=539;imgL=451;imgT=480;imgR=545;imgB=539;" subject="EAID_0D462D6E_4097_44ae_AAEC_FA91FD6F6988" seqno="1" style="NSL=0;DUID=D60311E4;"/>
1573
+ <element geometry="Left=446;Top=274;Right=591;Bottom=314;imgL=456;imgT=274;imgR=601;imgB=314;" subject="EAID_37BF1557_0370_435d_94BB_8FCC4574561B" seqno="2" style="NSL=0;LWth=2;ImageID=0;LCol=-1;BCol=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=A3BC5E9A;"/>
1574
+ <element geometry="Left=680;Top=146;Right=825;Bottom=186;imgL=690;imgT=146;imgR=835;imgB=186;" subject="EAID_00ACADD9_EF9A_4ac8_8257_3DB6227AF948" seqno="3" style="NSL=0;LWth=2;ImageID=0;LCol=-1;BCol=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=6986BBE2;"/>
1575
+ <element geometry="Left=446;Top=146;Right=591;Bottom=186;imgL=456;imgT=146;imgR=601;imgB=186;" subject="EAID_AE0137BF_A059_4c07_B438_75C5D3A3705D" seqno="4" style="NSL=0;LWth=2;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;ImageID=0;LCol=-1;BCol=-1;DUID=4763B4B4;"/>
1576
+ <element geometry="Left=680;Top=342;Right=825;Bottom=382;imgL=690;imgT=342;imgR=835;imgB=382;" subject="EAID_66ADAA69_93B4_4837_A00D_1AE9BB6FB53B" seqno="5" style="LWth=2;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;DUID=6E5CED2A;"/>
1577
+ <element geometry="Left=563;Top=434;Right=708;Bottom=474;imgL=573;imgT=434;imgR=718;imgB=474;" subject="EAID_82DA65AB_212B_44fd_BCDC_232A2AA22542" seqno="6" style="LWth=2;DUID=A81F3A31;"/>
1578
+ <element geometry="Left=680;Top=275;Right=825;Bottom=315;imgL=690;imgT=275;imgR=835;imgB=315;" subject="EAID_60A00B1F_43C3_433b_8060_2EB473EEE6BA" seqno="7" style="LWth=2;DUID=786A6260;"/>
1579
+ <element geometry="Left=23;Top=273;Right=154;Bottom=313;imgL=33;imgT=273;imgR=164;imgB=313;" subject="EAID_01B77106_CDCD_48b5_B2C4_7F7D7BA580B0" seqno="8" style="NSL=0;BCol=-1;BFol=-1;fontsz=0;bold=0;black=0;italic=0;ul=0;charset=0;pitch=0;LCol=13434880;LWth=2;DUID=41A330B2;"/>
1580
+ <element geometry="Left=25;Top=342;Right=156;Bottom=382;imgL=35;imgT=342;imgR=166;imgB=382;" subject="EAID_F6BDF73A_8DA5_46a3_A9A3_2A7FD1A2C8F8" seqno="9" style="NSL=0;LCol=13434880;LWth=2;DUID=E4FF4727;"/>
1581
+ <element geometry="Left=165;Top=42;Right=296;Bottom=82;imgL=175;imgT=42;imgR=306;imgB=82;" subject="EAID_AC45299B_86E2_47eb_927D_7FE310183720" seqno="10" style="LCol=13434880;LWth=2;DUID=2F28AF81;"/>
1582
+ <element geometry="Left=161;Top=434;Right=292;Bottom=474;imgL=171;imgT=434;imgR=302;imgB=474;" subject="EAID_DACE19A6_B083_45f1_94BB_C21991A59743" seqno="11" style="LCol=13434880;LWth=2;DUID=E150D01C;"/>
1583
+ <element geometry="Left=256;Top=146;Right=387;Bottom=186;imgL=266;imgT=146;imgR=397;imgB=186;" subject="EAID_D945EB6B_A750_4c1e_8D82_3887CB767926" seqno="12" style="LCol=13434880;LWth=2;DUID=A06A9902;"/>
1584
+ <element geometry="Left=23;Top=145;Right=154;Bottom=185;imgL=33;imgT=145;imgR=164;imgB=185;" subject="EAID_651CCB2E_D9C9_4f7e_A86C_9F838844FB82" seqno="13" style="LCol=13434880;LWth=2;DUID=8B25BE79;"/>
1585
+ <element geometry="Left=258;Top=274;Right=389;Bottom=314;imgL=268;imgT=274;imgR=399;imgB=314;" subject="EAID_AF08B23A_D40E_4e8a_B258_60C53D27E384" seqno="14" style="LCol=13434880;LWth=2;DUID=7974BD9C;"/>
1586
+ <element geometry="Left=15;Top=35;Right=415;Bottom=482;imgL=25;imgT=35;imgR=425;imgB=482;" subject="EAID_2D12FCDB_B942_481b_B734_C7FCD5A69ED4" seqno="15" style="LCol=13434880;LWth=2;BCol=16777215;DUID=A90123E2;"/>
1587
+ <element geometry="Left=563;Top=41;Right=708;Bottom=81;imgL=573;imgT=41;imgR=718;imgB=81;" subject="EAID_F11508A8_6635_4f8f_B49D_A398A8FEF552" seqno="16" style="LWth=2;DUID=98422238;"/>
1588
+ <element geometry="Left=331;Top=480;Right=436;Bottom=539;imgL=341;imgT=480;imgR=446;imgB=539;" subject="EAID_D87CFCD1_E6FA_40b1_8DF4_582457AAE03E" seqno="17" style="NSL=0;DUID=8DA5B6F0;"/>
1589
+ <element geometry="Left=300;Top=498;Right=436;Bottom=539;imgL=310;imgT=498;imgR=446;imgB=539;" subject="EAID_4BBD93AA_D52B_4dbf_830E_D139E6D357B5" seqno="18" style="NSL=0;LCol=16777215;DUID=42AF37DB;"/>
1590
+ <element geometry="SX=-53;SY=-8;EX=-53;EY=-8;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_26E10788_3269_4006_81AB_2A129D7712EF" style="Mode=3;Color=-1;LWidth=0;SOID=98422238;EOID=A81F3A31;Hidden=1;"/>
1591
+ <element geometry="SX=7;SY=-1;EX=7;EY=-1;EDGE=3;$LLB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=41:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=CX=44:CY=14:OX=-36:OY=8:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMB=;LRT=CX=45:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;IRHS=;ILHS=;Path=;" subject="EAID_25C1510D_9559_406f_867E_2A350C45C8A5" style="Mode=3;Color=-1;LWidth=0;SOID=4763B4B4;EOID=A3BC5E9A;Hidden=0;"/>
1592
+ <element geometry="EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_4F8C2F5C_1CA1_4bef_8D51_3FD8FAB35372" style="Mode=3;Color=-1;LWidth=0;SOID=41A330B2;EOID=E4FF4727;Hidden=0;"/>
1593
+ <element geometry="SX=-8;SY=3;EX=0;EY=0;EDGE=3;$LLB=CX=17:CY=14:OX=-2:OY=-2:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=41:CY=14:OX=-3:OY=-4:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=CX=44:CY=14:OX=-34:OY=14:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMB=;LRT=CX=45:CY=14:OX=62:OY=1:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=-32:OY=3:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;IRHS=;ILHS=;Path=;" subject="EAID_418BE1AF_A85D_414f_BFE5_80D5049C6F1F" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=8B25BE79;EOID=41A330B2;Hidden=0;"/>
1594
+ <element geometry="SX=0;SY=0;EDGE=4;$LLB=CX=56:CY=14:OX=-3:OY=3:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=39:CY=14:OX=-3:OY=2:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_E84CD5B2_B1B4_44c9_9A37_84FB39C5D005" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=7974BD9C;EOID=41A330B2;Hidden=0;"/>
1595
+ <element geometry="SCTR=1;SCME=1;SX=0;SY=0;EX=0;EY=0;EDGE=2;SCTR.LEFT=153;SCTR.TOP=-293;SCTR.RIGHT=184;SCTR.BOTTOM=-278;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=154:-293$184:-293$184:-278$154:-278$;" subject="EAID_C6CF49BF_D770_45f3_9987_BB6C45B69CD3" style="Mode=3;Color=-1;LWidth=0;SOID=41A330B2;EOID=41A330B2;Hidden=1;"/>
1596
+ <element geometry="EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_0C675C03_2E90_4df7_9F5E_33654F1BC174" style="Mode=3;Color=-1;LWidth=0;SOID=98422238;EOID=2F28AF81;Hidden=1;"/>
1597
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=2;$LLB=CX=56:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=39:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_7F310A6F_F068_4c1d_8FFD_B01FE62D6D1C" style="Mode=3;Color=-1;LWidth=0;SOID=A3BC5E9A;EOID=786A6260;Hidden=0;"/>
1598
+ <element geometry="SX=4;SY=0;EX=-3;EY=0;EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=325:-109$227:-109$;" subject="EAID_7DBD7567_3726_49de_B154_DD048B3872A4" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=A06A9902;EOID=2F28AF81;Hidden=0;"/>
1599
+ <element geometry="EX=0;EY=0;SX=7;SY=0;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=525:-403$635:-403$;" subject="EAID_AD6CE071_3261_4681_B8E1_25AE657BBCD2" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=A3BC5E9A;EOID=A81F3A31;Hidden=0;"/>
1600
+ <element geometry="SX=0;SY=0;EX=1;EY=0;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=752:-403$636:-403$;" subject="EAID_3B3D9500_1668_4529_A500_03753B605AA9" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=6E5CED2A;EOID=A81F3A31;Hidden=0;"/>
1601
+ <element geometry="SX=0;SY=-1;EX=0;EY=-1;SCME=0;SCTR=0;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=CX=24:CY=14:OX=-5:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=-4:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;IRHS=;ILHS=;Path=434:-62$434:-455$;" subject="EAID_95DCF977_3EB4_46dd_B0F5_152B18F6B749" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=98422238;EOID=A81F3A31;Hidden=0;"/>
1602
+ <element geometry="SX=0;SY=4;EX=37;EY=0;EDGE=2;$LLB=CX=17:CY=14:OX=18:OY=-2:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=39:CY=14:OX=16:OY=1:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=789:-450$;" subject="EAID_AD3FB2D7_370B_45ea_A98B_40B5B296E946" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=A81F3A31;EOID=6E5CED2A;Hidden=0;"/>
1603
+ <element geometry="SX=-2;SY=0;EX=0;EY=8;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_FBC084CC_4070_4dd5_8276_8A47DE1A72CD" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=786A6260;EOID=6E5CED2A;Hidden=0;"/>
1604
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=2;$LLB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=39:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=CX=35:CY=14:OX=20:OY=26:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_BCE15BAC_CC31_4dbd_8D10_5FED82BC83D0" style="Mode=3;Color=-1;LWidth=0;SOID=4763B4B4;EOID=6986BBE2;Hidden=0;"/>
1605
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=3;$LLB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LLT=CX=41:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMT=CX=44:CY=14:OX=30:OY=7:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LMB=;LRT=CX=45:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;IRHS=;ILHS=;Path=;" subject="EAID_7EB3B4C8_5C04_473c_A4D8_DE460008BE7F" style="Mode=3;Color=-1;LWidth=0;SOID=6986BBE2;EOID=786A6260;Hidden=0;"/>
1606
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_342FB517_D9A8_493f_84CB_FF20C2C49703" style="Mode=3;Color=-1;LWidth=0;SOID=A06A9902;EOID=A06A9902;Hidden=1;"/>
1607
+ <element geometry="EDGE=1;SX=6;SY=0;EX=1;EY=0;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=524:-113$636:-113$;" subject="EAID_C764348C_3F86_457b_B81A_3CF2A18495A7" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=4763B4B4;EOID=98422238;Hidden=0;"/>
1608
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_84688F21_D758_44ab_870D_69D890029769" style="Mode=3;Color=-1;LWidth=0;SOID=A3BC5E9A;EOID=7974BD9C;Hidden=1;"/>
1609
+ <element geometry="SCTR=1;SCME=1;SX=0;SY=0;EX=0;EY=0;EDGE=2;SCTR.LEFT=388;SCTR.TOP=-299;SCTR.RIGHT=419;SCTR.BOTTOM=-284;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=389:-299$419:-299$419:-284$389:-284$;" subject="EAID_DDA4933C_60B6_4438_8A66_D43E7E158EEE" style="Mode=3;Color=-1;LWidth=0;SOID=7974BD9C;EOID=7974BD9C;Hidden=1;"/>
1610
+ <element geometry=" 1008, 560, 713, 54,;EDGE=4;SX=0;SY=-1;EX=0;EY=-1;$LLB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LLT=CX=39:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LMT=CX=35:CY=14:OX=-11:OY=15:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_CCDA7037_E124_4f24_B640_1101A2EAD20B" style="Mode=3;Color=-1;LWidth=0;SOID=A06A9902;EOID=8B25BE79;Hidden=0;"/>
1611
+ <element geometry=" 2245, 544, 525, 166,;EDGE=4;SCTR=1;SCME=1;SX=0;SY=0;EX=0;EY=0;SCTR.LEFT=-72;SCTR.TOP=-170;SCTR.RIGHT=96;SCTR.BOTTOM=-153;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=23:-153$-72:-153$-72:-170$23:-170$;" subject="EAID_25E1654C_081D_40e4_BAD6_D7CFCDA4D7CF" style="Mode=3;Color=-1;LWidth=0;SOID=8B25BE79;EOID=8B25BE79;Hidden=1;"/>
1612
+ <element geometry="SX=0;SY=0;EX=-3;EY=0;EDGE=1;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=88:-109$227:-109$;" subject="EAID_C489F217_9243_4465_A2E7_0031EEE43FF7" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=8B25BE79;EOID=2F28AF81;Hidden=0;"/>
1613
+ <element geometry=" 304, 851, 54, 458,;EDGE=1;SX=1;SY=18;EX=3;EY=-19;$LLB=CX=17:CY=14:OX=-25:OY=2:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LLT=CX=45:CY=14:OX=56:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LMT=CX=44:CY=14:OX=27:OY=9:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LMB=;LRT=CX=41:CY=14:OX=57:OY=-2:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=-31:OY=-4:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;IRHS=;ILHS=;Path=;" subject="EAID_4CD5EE6F_45C8_4128_963A_1E1174556192" style="Mode=3;Color=-1;LWidth=0;SOID=7974BD9C;EOID=A06A9902;Hidden=0;"/>
1614
+ <element geometry="EDGE=1;SX=-3;SY=0;EX=0;EY=0;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=749:-113$635:-113$;" subject="EAID_2DD1F079_8C74_49d3_82B5_984A3AE10DF5" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=6986BBE2;EOID=98422238;Hidden=0;"/>
1615
+ <element geometry="EDGE=2;SX=0;SY=-3;EX=0;EY=1;$LLB=;LLT=;LMT=;LMB=;LRT=CX=37:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=0:OY=0:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=1:DIR=0:ROT=0;IRHS=;ILHS=;Path=402:-65$402:-453$;" subject="EAID_ECA16392_6B77_4555_8D79_386CD1E0E920" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=2F28AF81;EOID=E150D01C;Hidden=0;"/>
1616
+ <element geometry="SX=3;SY=0;EX=2;EY=0;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=326:-405$228:-405$;" subject="EAID_D8EC6DF9_2F7E_4011_8AF9_399FB8FDD5C3" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=7974BD9C;EOID=E150D01C;Hidden=0;"/>
1617
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=2;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_C745CC59_CA14_4859_9264_F77798F25D24" style="Mode=3;Color=-1;LWidth=0;SOID=E150D01C;EOID=E150D01C;Hidden=1;"/>
1618
+ <element geometry="SX=-22;SY=0;EX=0;EY=2;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=CX=39:CY=14:OX=-13:OY=3:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;LRB=CX=17:CY=14:OX=-17:OY=-1:HDN=0:BLD=0:ITA=0:UND=0:CLR=-1:ALN=0:DIR=0:ROT=0;IRHS=;ILHS=;Path=68:-452$;" subject="EAID_BE3E23F1_C488_4145_ABE9_5316AA296387" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=E4FF4727;EOID=E150D01C;Hidden=0;"/>
1619
+ <element geometry="SX=1;SY=0;EX=2;EY=0;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=91:-405$228:-405$;" subject="EAID_F30CF839_83A9_4154_B274_6AA69EFFF811" style="Mode=3;Color=-1;LWidth=0;TREE=OS;SOID=E4FF4727;EOID=E150D01C;Hidden=0;"/>
1620
+ <element geometry="SX=8;SY=-21;EX=8;EY=-21;EDGE=4;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_E250C61E_661C_4f55_8BDF_2467B454E385" style="Mode=3;Color=-1;LWidth=0;SOID=A81F3A31;EOID=E150D01C;Hidden=1;"/>
1621
+ <element geometry="SX=0;SY=0;EX=0;EY=0;EDGE=3;$LLB=;LLT=;LMT=;LMB=;LRT=;LRB=;IRHS=;ILHS=;Path=;" subject="EAID_DC71C19F_9309_41ec_954B_B0B1847F386F" style="Mode=3;Color=-1;LWidth=0;SOID=2F28AF81;EOID=8B25BE79;Hidden=1;"/>
1622
+ </elements>
1623
+ </diagram>
1496
1624
  </xmi:Extension>
1497
1625
  <thecustomprofile:Bibliography base_Class="EAID_D832D6D8_0518_43f7_9166_7A4E3E8605AA"/>
1498
1626
  <thecustomprofile:BasicDoc base_Class="EAID_10AD8D60_9972_475a_AB7E_FA40212D5297"/>
@@ -88,9 +88,8 @@ RSpec.describe Lutaml::XMI::Parsers::XML do
88
88
  end
89
89
  let(:expected_association_names) do
90
90
  %w[
91
- TemporalGeometricPrimitive
91
+ Primitive
92
92
  TemporalGeometry
93
- TemporalTopologicalPrimitive
94
93
  Interval
95
94
  Instant
96
95
  ]
@@ -133,11 +132,13 @@ RSpec.describe Lutaml::XMI::Parsers::XML do
133
132
  inheritance = klass.associations.find { |entity| entity.member_end == 'TemporalGeometry' }
134
133
  expect(inheritance.member_end_type).to eq('inheritance')
135
134
  expect(inheritance.member_end_cardinality).to eq({"min"=>"C", "max"=>"*"})
135
+ end
136
136
 
137
- aggregation = klass.associations.find { |entity| entity.member_end == 'TemporalTopologicalPrimitive' }
138
- expect(aggregation.member_end_attribute_name).to eq('topology')
139
- expect(aggregation.member_end_type).to eq('aggregation')
140
- expect(aggregation.member_end_cardinality).to eq({"min"=>"C", "max"=>"*"})
137
+ it "correctly parses diagrams for package" do
138
+ root_package = parse.packages.first
139
+ expect(root_package.diagrams.length).to(eq(2))
140
+ expect(root_package.diagrams.map(&:name)).to(eq(['Fig: DGGS Package Diagram', 'Fig: Context for Temporal Geometry and Topology']))
141
+ expect(root_package.diagrams.map(&:definition)).to(eq(['this is a documentation', '']))
141
142
  end
142
143
  end
143
144
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml-xmi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-14 00:00:00.000000000 Z
11
+ date: 2021-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -53,47 +53,47 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.0'
62
- type: :development
61
+ version: '1.10'
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.0'
68
+ version: '1.10'
69
69
  - !ruby/object:Gem::Dependency
70
- name: byebug
70
+ name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '2.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: nokogiri
84
+ name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '1.10'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '1.10'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  - !ruby/object:Gem::Version
203
203
  version: '0'
204
204
  requirements: []
205
- rubygems_version: 3.0.3
205
+ rubygems_version: 3.1.6
206
206
  signing_key:
207
207
  specification_version: 4
208
208
  summary: XML Metadata Interchange (XMI) Specification parser in Ruby, tools for accessing