--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+da074614bb0463c167f05dde193376c9a59a01bb 5
+da074614bb0463c167f05dde193376c9a59a01bb default
--- /dev/null
+[paths]\r
+default = ssh://simusite/org.simantics.h2d\r
--- /dev/null
+revlogv1
+store
+fncache
--- /dev/null
+data/.classpath.i
+data/.hgignore.i
+data/.project.i
+data/.settings/org.eclipse.jdt.core.prefs.i
+data/META-INF/MANIFEST.MF.i
+data/build.properties.i
+data/doc/defaultActions.txt.i
+data/src/org/simantics/h2d/action/IAction.java.i
+data/src/org/simantics/h2d/canvas/EditorCanvas.java.i
+data/src/org/simantics/h2d/diagram/Diagram.java.i
+data/src/org/simantics/h2d/diagram/IDiagram.java.i
+data/src/org/simantics/h2d/diagram/IDiagramListener.java.i
+data/src/org/simantics/h2d/editor/IDiagramEditor.java.i
+data/src/org/simantics/h2d/editor/ISelection.java.i
+data/src/org/simantics/h2d/editor/impl/DiagramEditor.java.i
+data/src/org/simantics/h2d/editor/impl/EventHandlerManager.java.i
+data/src/org/simantics/h2d/editor/impl/SceneGraphManager.java.i
+data/src/org/simantics/h2d/editor/impl/Selection.java.i
+data/src/org/simantics/h2d/element/ChainingElementListener.java.i
+data/src/org/simantics/h2d/element/Element.java.i
+data/src/org/simantics/h2d/element/IElement.java.i
+data/src/org/simantics/h2d/element/IElementListener.java.i
+data/src/org/simantics/h2d/element/handler/Connectable.java.i
+data/src/org/simantics/h2d/element/handler/IElementHandler.java.i
+data/src/org/simantics/h2d/element/handler/Movable.java.i
+data/src/org/simantics/h2d/element/handler/ShadowDrawable.java.i
+data/src/org/simantics/h2d/event/ClickEvent.java.i
+data/src/org/simantics/h2d/event/DragEvent.java.i
+data/src/org/simantics/h2d/event/DragEventPhase.java.i
+data/src/org/simantics/h2d/event/IDragHandler.java.i
+data/src/org/simantics/h2d/event/IEvent.java.i
+data/src/org/simantics/h2d/event/ILocatableEvent.java.i
+data/src/org/simantics/h2d/event/KeyboardEvent.java.i
+data/src/org/simantics/h2d/event/Modifiers.java.i
+data/src/org/simantics/h2d/event/WheelEvent.java.i
+data/src/org/simantics/h2d/event/handler/BoxSelection.java.i
+data/src/org/simantics/h2d/event/handler/DefaultEventHandlers.java.i
+data/src/org/simantics/h2d/event/handler/DragEventHandler.java.i
+data/src/org/simantics/h2d/event/handler/ElementEventDelegator.java.i
+data/src/org/simantics/h2d/event/handler/IEventHandler.java.i
+data/src/org/simantics/h2d/event/handler/MoveSelected.java.i
+data/src/org/simantics/h2d/event/handler/Pan.java.i
+data/src/org/simantics/h2d/event/handler/PickSelection.java.i
+data/src/org/simantics/h2d/event/handler/ToggleSelection.java.i
+data/src/org/simantics/h2d/event/handler/Zoom.java.i
+data/src/org/simantics/h2d/node/FilledShapeNode.java.i
+data/src/org/simantics/h2d/node/LineNode.java.i
+data/src/org/simantics/h2d/node/RectangleNode.java.i
+data/src/org/simantics/h2d/node/ShapeNode.java.i
+data/src/org/simantics/h2d/node/TextNode.java.i
+data/testcases/org/simantics/h2d/tests/ArcElement.java.i
+data/testcases/org/simantics/h2d/tests/Arcs.java.i
+data/testcases/org/simantics/h2d/tests/Connect.java.i
+data/testcases/org/simantics/h2d/tests/CreateVariable.java.i
+data/testcases/org/simantics/h2d/tests/TestDiagramEditor.java.i
+data/testcases/org/simantics/h2d/tests/VariableElement.java.i
+data/src/org/simantics/h2d/event/handler/EventPrinter.java.i
+data/src/org/simantics/h2d/event/handler/ZoomToFit.java.i
+data/doc/manual.mediawiki.i
+data/src/org/simantics/h2d/element/handler/Rotatable.java.i
+data/src/org/simantics/h2d/event/handler/Delete.java.i
+data/src/org/simantics/h2d/event/handler/RotateClockwise.java.i
+data/src/org/simantics/h2d/event/handler/RotateCounterclockwise.java.i
+data/src/org/simantics/h2d/node/ITextListener.java.i
+data/src/org/simantics/h2d/editor/ISelectionListener.java.i
--- /dev/null
+default
\ No newline at end of file
--- /dev/null
+syntax: regexp\r
+^bin/
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>org.simantics.h2d</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.ManifestBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.SchemaBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.pde.PluginNature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Sun Nov 08 17:02:25 EET 2009\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6\r
+org.eclipse.jdt.core.compiler.compliance=1.6\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.6\r
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: H2d
+Bundle-SymbolicName: org.simantics.h2d
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.simantics.scenegraph;bundle-version="1.0.0",
+ gnu.trove2;bundle-version="2.0.4",
+ org.simantics.objmap;bundle-version="0.1.0"
+Export-Package: org.simantics.h2d.action,
+ org.simantics.h2d.canvas,
+ org.simantics.h2d.diagram,
+ org.simantics.h2d.editor,
+ org.simantics.h2d.editor.impl,
+ org.simantics.h2d.element,
+ org.simantics.h2d.element.handler,
+ org.simantics.h2d.event,
+ org.simantics.h2d.event.handler,
+ org.simantics.h2d.node
--- /dev/null
+source.. = src/\r
+output.. = bin/\r
+bin.includes = META-INF/,\\r
+ .\r
--- /dev/null
+package org.simantics.h2d.action;\r
+\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+/**\r
+ * Action is a non-instantenous user operation on diagram. \r
+ * @see org.simantics.h2d.editor.IDiagramEditor#addAction\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IAction extends IEventHandler {\r
+ void init(G2DParentNode parent);\r
+ void remove();\r
+}\r
--- /dev/null
+package org.simantics.h2d.canvas;\r
+\r
+import java.awt.Canvas;\r
+import java.awt.Color;\r
+import java.awt.Dimension;\r
+import java.awt.GradientPaint;\r
+import java.awt.Graphics;\r
+import java.awt.Graphics2D;\r
+import java.awt.RenderingHints;\r
+import java.awt.TexturePaint;\r
+import java.awt.event.ComponentAdapter;\r
+import java.awt.event.ComponentEvent;\r
+import java.awt.event.KeyEvent;\r
+import java.awt.event.KeyListener;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.event.MouseListener;\r
+import java.awt.event.MouseMotionListener;\r
+import java.awt.event.MouseWheelEvent;\r
+import java.awt.event.MouseWheelListener;\r
+import java.awt.geom.Point2D;\r
+import java.awt.image.BufferedImage;\r
+import java.awt.image.VolatileImage;\r
+import java.io.File;\r
+import java.io.IOException;\r
+\r
+import javax.imageio.ImageIO;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.ClickEvent;\r
+import org.simantics.h2d.event.DragEvent;\r
+import org.simantics.h2d.event.DragEventPhase;\r
+import org.simantics.h2d.event.KeyboardEvent;\r
+import org.simantics.h2d.event.Modifiers;\r
+import org.simantics.h2d.event.WheelEvent;\r
+import org.simantics.scenegraph.g2d.G2DRenderingHints;\r
+\r
+\r
+public class EditorCanvas extends Canvas {\r
+\r
+ IDiagramEditor editor;\r
+ EventHandler eventHandler = new EventHandler();\r
+ //BufferedImage background;\r
+\r
+ public EditorCanvas(IDiagramEditor editor) {\r
+ this.editor = editor;\r
+ editor.setCanvas(this);\r
+ \r
+ /*G2DSceneGraph sceneGraph = editor.getSceneGraph();\r
+ addMouseListener(sceneGraph);\r
+ addMouseMotionListener(sceneGraph);\r
+ addMouseWheelListener(sceneGraph);\r
+ addKeyListener(sceneGraph);\r
+ */\r
+ addMouseListener(eventHandler);\r
+ addMouseMotionListener(eventHandler);\r
+ addMouseWheelListener(eventHandler);\r
+ addKeyListener(eventHandler);\r
+ \r
+ addComponentListener(new ComponentAdapter() {\r
+ @Override\r
+ public void componentResized(ComponentEvent e) {\r
+ repaint();\r
+ }\r
+ });\r
+ \r
+ /*try {\r
+ background = ImageIO.read(new File("c:/paper.png"));\r
+ } catch (IOException e1) {\r
+ // TODO Auto-generated catch block\r
+ e1.printStackTrace();\r
+ }*/\r
+ }\r
+ \r
+ @Override\r
+ public void update(Graphics g) {\r
+ paint(g);\r
+ }\r
+ \r
+ private VolatileImage doubleBuffer;\r
+ @Override\r
+ public void paint(Graphics _g) { \r
+ if(doubleBuffer == null ||\r
+ doubleBuffer.getWidth() != getWidth() || doubleBuffer.getHeight() != getHeight()) {\r
+ doubleBuffer = createVolatileImage(getWidth(), getHeight());\r
+ editor.setViewDimensions(new Dimension(getWidth(), getHeight()));\r
+ }\r
+ Graphics2D g = (Graphics2D)doubleBuffer.getGraphics();\r
+ \r
+ System.out.println(doubleBuffer.getWidth() + " x " + doubleBuffer.getHeight());\r
+ g.setBackground(Color.WHITE);\r
+ g.setColor(Color.WHITE);\r
+ //g.setPaint(new GradientPaint(0.f, 0.f, Color.white, 2000.f, 1600.f, Color.BLUE, false));\r
+ //g.setPaint(new TexturePaint(background, getBounds()));\r
+ g.fillRect(0, 0, doubleBuffer.getWidth(), doubleBuffer.getHeight());\r
+ \r
+ g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\r
+ g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);\r
+ g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); \r
+ g.setRenderingHint(G2DRenderingHints.KEY_CONTROL_BOUNDS, getBounds());\r
+ \r
+ editor.getSceneGraph().render(g);\r
+ \r
+ _g.drawImage(doubleBuffer, 0, 0, this);\r
+ }\r
+ \r
+ class EventHandler implements MouseListener, MouseMotionListener, MouseWheelListener, KeyListener {\r
+\r
+ DragEvent dragEvent;\r
+ \r
+ @Override\r
+ public void mouseClicked(MouseEvent e) {\r
+ ClickEvent event = new ClickEvent(\r
+ Modifiers.modifierString(e.getButton(), e.isControlDown(), e.isAltDown(), e.isShiftDown()),\r
+ editor.screenToDiagram(e.getPoint())\r
+ );\r
+ event.pickedElements = dragEvent.pickedElements;\r
+ editor.handleEvent(event);\r
+ }\r
+\r
+ @Override\r
+ public void mouseEntered(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void mouseExited(MouseEvent e) {\r
+ // TODO Auto-generated method stub\r
+ \r
+ }\r
+\r
+ @Override\r
+ public void mousePressed(MouseEvent e) {\r
+ editor.getSceneGraph().mousePressed(e);\r
+ if(e.isConsumed())\r
+ return;\r
+ dragEvent = new DragEvent(\r
+ Modifiers.modifierString(e.getButton(), e.isControlDown(), e.isAltDown(), e.isShiftDown()),\r
+ editor.screenToDiagram(e.getPoint())\r
+ );\r
+ dragEvent.pickedElements = editor.pickElements(dragEvent.start);\r
+ }\r
+\r
+ @Override\r
+ public void mouseReleased(MouseEvent e) {\r
+ editor.getSceneGraph().mouseReleased(e);\r
+ if(e.isConsumed())\r
+ return;\r
+ if(dragEvent.phase == DragEventPhase.dragUpdate) {\r
+ dragEvent.phase = DragEventPhase.dragEnd;\r
+ editor.handleEvent(dragEvent);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void mouseDragged(MouseEvent e) {\r
+ editor.getSceneGraph().mouseDragged(e);\r
+ if(e.isConsumed())\r
+ return;\r
+ currentPosition = e.getPoint();\r
+ dragEvent.currentModifiers = \r
+ Modifiers.modifierString(e.getButton(), e.isControlDown(), e.isAltDown(), e.isShiftDown());\r
+ dragEvent.current = editor.screenToDiagram(e.getPoint());\r
+ editor.handleEvent(dragEvent);\r
+\r
+ if(dragEvent.phase == DragEventPhase.dragBegin) {\r
+ dragEvent.phase = DragEventPhase.dragUpdate;\r
+ editor.handleEvent(dragEvent);\r
+ }\r
+ }\r
+ \r
+ Point2D currentPosition = new Point2D.Double(0.0, 0.0);\r
+\r
+ @Override\r
+ public void mouseMoved(MouseEvent e) {\r
+ currentPosition = e.getPoint();\r
+ }\r
+\r
+ @Override\r
+ public void mouseWheelMoved(MouseWheelEvent e) {\r
+ editor.handleEvent(new WheelEvent(\r
+ Modifiers.modifierString(e.getButton(), e.isControlDown(), e.isAltDown(), e.isShiftDown()),\r
+ editor.screenToDiagram(e.getPoint()),\r
+ e.getWheelRotation()\r
+ ));\r
+ }\r
+\r
+ @Override\r
+ public void keyPressed(KeyEvent e) {\r
+ System.out.println(e);\r
+ editor.getSceneGraph().keyPressed(e);\r
+ if(e.isConsumed())\r
+ return;\r
+ \r
+ String keyText = KeyEvent.getKeyText(e.getKeyCode());\r
+ if(e.getModifiers() != 0)\r
+ keyText = KeyEvent.getKeyModifiersText(e.getModifiers()) \r
+ + "+" + keyText;\r
+ KeyboardEvent event = new KeyboardEvent(\r
+ keyText,\r
+ editor.screenToDiagram(currentPosition)\r
+ );\r
+ event.pickedElements = editor.pickElements(event.point);\r
+ if(editor.handleEvent(event))\r
+ e.consume();\r
+ }\r
+\r
+ @Override\r
+ public void keyReleased(KeyEvent e) {\r
+ editor.getSceneGraph().keyReleased(e);\r
+ }\r
+\r
+ @Override\r
+ public void keyTyped(KeyEvent e) {\r
+ editor.getSceneGraph().keyTyped(e);\r
+ } \r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.diagram;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.objmap.annotations.GraphType;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Configuration")\r
+public class Diagram implements IDiagram {\r
+\r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf")\r
+ public ArrayList<IElement> elements = new ArrayList<IElement>();\r
+ ArrayList<IDiagramListener> listeners = new ArrayList<IDiagramListener>();\r
+ \r
+ @Override\r
+ public void addElement(IElement element) {\r
+ elements.add(element);\r
+ for(IDiagramListener listener : listeners)\r
+ listener.elementAdded(element);\r
+ }\r
+\r
+ @Override\r
+ public List<IElement> getElements() {\r
+ return elements;\r
+ }\r
+\r
+ @Override\r
+ public void addDiagramListener(IDiagramListener listener) {\r
+ listeners.add(listener);\r
+ }\r
+\r
+ @Override\r
+ public void removeElement(IElement element) {\r
+ elements.remove(element);\r
+ for(IDiagramListener listener : listeners)\r
+ listener.elementRemoved(element);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.diagram;\r
+\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+/**\r
+ * Diagram is the whole that is edited in a diagram editor.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IDiagram {\r
+ List<IElement> getElements();\r
+ void addElement(IElement element);\r
+ void removeElement(IElement element);\r
+ void addDiagramListener(IDiagramListener listener); \r
+}\r
--- /dev/null
+package org.simantics.h2d.diagram;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+public interface IDiagramListener {\r
+\r
+ void elementAdded(IElement element);\r
+ void elementRemoved(IElement element);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.editor;\r
+\r
+import java.awt.Canvas;\r
+import java.awt.Dimension;\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Dimension2D;\r
+import java.awt.geom.Point2D;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.action.IAction;\r
+import org.simantics.h2d.diagram.IDiagram;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.scenegraph.g2d.G2DSceneGraph;\r
+\r
+public interface IDiagramEditor {\r
+\r
+ IDiagram getDiagram();\r
+ \r
+ /**\r
+ * Returns the root of the scenegraph that renders the diagram.\r
+ */\r
+ G2DSceneGraph getSceneGraph();\r
+ \r
+ /**\r
+ * Handles an external event. \r
+ * @return True if the event was consumed.\r
+ */\r
+ boolean handleEvent(IEvent event);\r
+ \r
+ /** \r
+ * Returns the current view transform (from diagram coordinates to screen coordinates) defined as:\r
+ * <pre>diagramToScreen(p) = (p - offset) / scale</pre>\r
+ */\r
+ AffineTransform getViewTransform();\r
+ \r
+ /**\r
+ * Returns the current view offset. That is the diagram coordinates of the top left point of the canvas.\r
+ */\r
+ Point2D getOffset();\r
+ \r
+ /**\r
+ * Returns the current view scale. That is <pre>lengthInDiagramCoordinates / lengthInScreenCoordinates</pre>.\r
+ */\r
+ double getScale();\r
+ \r
+ /**\r
+ * Maps a point from screen coordinates to diagram coordinates.\r
+ */\r
+ Point2D screenToDiagram(Point2D point);\r
+ \r
+ /**\r
+ * Sets a new view transform. \r
+ * @param offset New offset\r
+ * @param scale New scale\r
+ *\r
+ * @see #getOffset\r
+ * @see #getScale\r
+ */\r
+ void setViewTransform(Point2D offset, double scale);\r
+ \r
+ void setViewDimensions(Dimension2D dimension);\r
+ Dimension getViewDimension();\r
+ \r
+ // Events\r
+ void addEventHandler(int priority, String eventType, IEventHandler handler);\r
+ void addEventHandler(int priority, IEventHandler handler);\r
+ \r
+ void addAction(IAction action);\r
+ void removeAction(IAction action);\r
+ \r
+ void requestRepaint();\r
+ void setCanvas(Canvas canvas);\r
+ \r
+ /**\r
+ * Returns current selection\r
+ */\r
+ ISelection getSelection();\r
+\r
+ /**\r
+ * Returns all elements at the point. Pick uses a hard coded tolerance that is calculated in screen coordinates.\r
+ */\r
+ List<IElement> pickElements(Point2D point); \r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.editor;\r
+\r
+import java.util.Collection;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+public interface ISelection extends Iterable<IElement> {\r
+\r
+ boolean contains(IElement el);\r
+ boolean containsOneOf(Collection<IElement> els);\r
+ void clear();\r
+ void set(Collection<IElement> els);\r
+ void set(IElement el);\r
+ boolean add(IElement el);\r
+ boolean addAll(Collection<IElement> els);\r
+ boolean toggle(IElement el);\r
+ boolean remove(IElement el);\r
+ boolean isEmpty();\r
+ int size();\r
+ IElement getSingleElement();\r
+\r
+ void addSelectionListener(ISelectionListener listener);\r
+ void removeSelectionListener(ISelectionListener listener);\r
+ \r
+}
\ No newline at end of file
--- /dev/null
+package org.simantics.h2d.editor;\r
+\r
+public interface ISelectionListener {\r
+\r
+ void selectionChanged(ISelection selection);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.editor.impl;\r
+\r
+import java.awt.Canvas;\r
+import java.awt.Dimension;\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Dimension2D;\r
+import java.awt.geom.Point2D;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import javax.swing.JComponent;\r
+\r
+import org.simantics.h2d.action.IAction;\r
+import org.simantics.h2d.diagram.IDiagram;\r
+import org.simantics.h2d.diagram.IDiagramListener;\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.editor.ISelection;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.scenegraph.g2d.G2DSceneGraph;\r
+\r
+public class DiagramEditor implements IDiagramEditor {\r
+\r
+ public static final double PICK_TOLERANCE = 5.0;\r
+\r
+ IDiagram diagram;\r
+ \r
+ // Viewpoint\r
+ Point2D offset;\r
+ double scale;\r
+ AffineTransform viewTransform = new AffineTransform();\r
+ Dimension dimension = new Dimension(800, 600);\r
+ \r
+ ISelection selection;\r
+ \r
+ ArrayList<IAction> actionStack = new ArrayList<IAction>(); \r
+ \r
+ SceneGraphManager sgManager;\r
+ EventHandlerManager eventHandlerManager = new EventHandlerManager();\r
+ \r
+ Canvas canvas;\r
+ \r
+ public void setCanvas(Canvas canvas) {\r
+ this.canvas = canvas;\r
+ }\r
+ \r
+ public DiagramEditor(JComponent rootPane, IDiagram diagram) {\r
+ this.diagram = diagram;\r
+ sgManager = new SceneGraphManager(rootPane); \r
+ \r
+ setViewTransform(new Point2D.Double(), 13.0 / 48.0);\r
+ sgManager.setViewTransform(viewTransform);\r
+ \r
+ selection = new Selection(sgManager.selectionNode);\r
+ \r
+ for(IElement element : diagram.getElements())\r
+ element.init(sgManager.elementsNode);\r
+ diagram.addDiagramListener(new IDiagramListener() {\r
+ \r
+ @Override\r
+ public void elementAdded(IElement element) {\r
+ element.init(sgManager.elementsNode);\r
+ }\r
+\r
+ @Override\r
+ public void elementRemoved(IElement element) {\r
+ element.remove();\r
+ }\r
+ \r
+ });\r
+ } \r
+ \r
+ @Override\r
+ public G2DSceneGraph getSceneGraph() {\r
+ return sgManager.sceneGraph;\r
+ }\r
+\r
+ @Override\r
+ public boolean handleEvent(IEvent event) {\r
+ for(int i=actionStack.size()-1;i>=0;--i)\r
+ if(actionStack.get(i).handle(this, event))\r
+ return true;\r
+ return eventHandlerManager.handle(this, event); \r
+ }\r
+\r
+ @Override\r
+ public void addEventHandler(int priority, String eventType, IEventHandler handler) {\r
+ eventHandlerManager.addEventHandler(priority, eventType, handler);\r
+ }\r
+\r
+ @Override\r
+ public void addEventHandler(int priority, IEventHandler handler) {\r
+ eventHandlerManager.addEventHandler(priority, handler);\r
+ }\r
+\r
+ @Override\r
+ public ISelection getSelection() {\r
+ return selection;\r
+ }\r
+\r
+ @Override\r
+ public Point2D getOffset() {\r
+ return offset;\r
+ }\r
+\r
+ @Override\r
+ public double getScale() {\r
+ return scale;\r
+ }\r
+\r
+ @Override\r
+ public AffineTransform getViewTransform() {\r
+ return viewTransform;\r
+ }\r
+ \r
+ @Override\r
+ public void setViewTransform(Point2D offset, double scale) {\r
+ this.offset = offset;\r
+ this.scale = scale;\r
+ viewTransform.setTransform(1.0/scale, 0.0, 0.0, 1.0/scale, \r
+ -offset.getX()/scale, -offset.getY()/scale);\r
+ }\r
+\r
+ @Override\r
+ public Point2D screenToDiagram(Point2D point) {\r
+ return new Point2D.Double(point.getX()*scale + offset.getX(), point.getY()*scale + offset.getY());\r
+ }\r
+\r
+ @Override\r
+ public IDiagram getDiagram() {\r
+ return diagram;\r
+ }\r
+\r
+ @Override\r
+ public List<IElement> pickElements(Point2D point) {\r
+ double tolerance = PICK_TOLERANCE*scale;\r
+ ArrayList<IElement> result = new ArrayList<IElement>();\r
+ for(IElement element : getDiagram().getElements()) { \r
+ if(element.hitTest(point.getX(), point.getY(), tolerance))\r
+ result.add(element);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public void addAction(IAction action) {\r
+ actionStack.add(action);\r
+ action.init(sgManager.actionNode);\r
+ requestRepaint();\r
+ }\r
+ \r
+ @Override\r
+ public void removeAction(IAction action) {\r
+ actionStack.remove(action);\r
+ action.remove();\r
+ requestRepaint();\r
+ }\r
+\r
+ @Override\r
+ public Dimension getViewDimension() {\r
+ return dimension;\r
+ }\r
+\r
+ @Override\r
+ public void setViewDimensions(Dimension2D dimension) {\r
+ this.dimension.setSize(dimension);\r
+ }\r
+\r
+ @Override\r
+ public void requestRepaint() {\r
+ System.out.println("requestRepaint");\r
+ canvas.repaint();\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.editor.impl;\r
+\r
+import gnu.trove.THashMap;\r
+\r
+import java.util.LinkedList;\r
+import java.util.ListIterator;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+\r
+class EventHandlerManager implements IEventHandler {\r
+ LinkedList<PrioritizedEventHandler> handlers = new LinkedList<PrioritizedEventHandler>();\r
+ \r
+ public void addEventHandler(int priority, String eventType, IEventHandler handler) {\r
+ ListIterator<PrioritizedEventHandler> it = handlers.listIterator();\r
+ while(it.hasNext()) {\r
+ PrioritizedEventHandler group = it.next();\r
+ if(group.priority == priority)\r
+ group.put(eventType, handler);\r
+ else if(group.priority < priority) {\r
+ it.previous();\r
+ break;\r
+ }\r
+ }\r
+ \r
+ // Add a new level\r
+ MapEventHandler map = new MapEventHandler(priority);\r
+ map.put(eventType, handler);\r
+ it.add(map);\r
+ }\r
+\r
+ public void addEventHandler(int priority, IEventHandler handler) {\r
+ ListIterator<PrioritizedEventHandler> it = handlers.listIterator();\r
+ while(it.hasNext()) {\r
+ PrioritizedEventHandler group = it.next();\r
+ if(group.priority == priority)\r
+ throw new IllegalArgumentException("Tried add an event handler of type of priority " + priority + \r
+ ", but this conflicts with an event handler(s) with the same priority.");\r
+ else if(group.priority < priority) {\r
+ it.previous();\r
+ break;\r
+ }\r
+ }\r
+ \r
+ // Add a new level\r
+ it.add(new SingletonEventHandler(priority, handler));\r
+ }\r
+ \r
+ static abstract class PrioritizedEventHandler {\r
+ public final int priority;\r
+\r
+ public PrioritizedEventHandler(int priority) { \r
+ this.priority = priority;\r
+ }\r
+\r
+ public abstract void put(String type, IEventHandler handler);\r
+ public abstract boolean handle(String type, IDiagramEditor editor, IEvent event);\r
+ \r
+ }\r
+ \r
+ static class SingletonEventHandler extends PrioritizedEventHandler {\r
+\r
+ IEventHandler handler;\r
+ \r
+ public SingletonEventHandler(int priority, IEventHandler handler) {\r
+ super(priority);\r
+ this.handler = handler;\r
+ }\r
+\r
+ @Override\r
+ public boolean handle(String type, IDiagramEditor editor, IEvent event) {\r
+ return handler.handle(editor, event);\r
+ }\r
+\r
+ @Override\r
+ public void put(String type, IEventHandler handler) {\r
+ throw new IllegalArgumentException("Tried add an event handler of type " + type + " and priority " + priority + \r
+ ", but this conflicts with an event handler with the same priority."); \r
+ }\r
+\r
+ }\r
+ \r
+ static class MapEventHandler extends PrioritizedEventHandler {\r
+\r
+ THashMap<String, IEventHandler> handlers = new THashMap<String, IEventHandler>();\r
+ public MapEventHandler(int priority) {\r
+ super(priority);\r
+ } \r
+ \r
+ @Override\r
+ public void put(String type, IEventHandler handler) {\r
+ if(handlers.contains(type))\r
+ throw new IllegalArgumentException("Tried add an event handler of type " + type + " and priority " + priority + \r
+ ", but this conflicts with an event handler with the same priority and type.");\r
+ handlers.put(type, handler);\r
+ }\r
+ \r
+ @Override\r
+ public boolean handle(String type, IDiagramEditor editor, IEvent event) {\r
+ IEventHandler handler = handlers.get(type);\r
+ return handler != null && handler.handle(editor, event);\r
+ }\r
+\r
+ }\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent event) {\r
+ String type = event.getType();\r
+ for(PrioritizedEventHandler level : handlers) {\r
+ if(level.handle(type, editor, event))\r
+ return true; \r
+ } \r
+ return false;\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.h2d.editor.impl;\r
+\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import javax.swing.JComponent;\r
+\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+import org.simantics.scenegraph.g2d.G2DSceneGraph;\r
+import org.simantics.scenegraph.g2d.nodes.PageBorderNode;\r
+import org.simantics.scenegraph.g2d.nodes.TransformNode;\r
+\r
+class SceneGraphManager {\r
+ G2DSceneGraph sceneGraph;\r
+ TransformNode diagramCoordinatesNode;\r
+ G2DParentNode elementsNode;\r
+ G2DParentNode selectionNode;\r
+ G2DParentNode actionNode;\r
+ \r
+ public SceneGraphManager(JComponent rootPane) {\r
+ sceneGraph = new G2DSceneGraph();\r
+ //sceneGraph.setRootPane(rootPane);\r
+ diagramCoordinatesNode = sceneGraph.addNode(TransformNode.class);\r
+ \r
+ PageBorderNode border = diagramCoordinatesNode.addNode(PageBorderNode.class);\r
+ border.init(new Rectangle2D.Double(0.0, 0.0, 297.0, 210.0), Boolean.TRUE);\r
+ \r
+ elementsNode = diagramCoordinatesNode.addNode(G2DParentNode.class);\r
+ elementsNode.setZIndex(0);\r
+ \r
+ selectionNode = diagramCoordinatesNode.addNode(G2DParentNode.class);\r
+ selectionNode.setZIndex(1);\r
+ \r
+ actionNode = diagramCoordinatesNode.addNode(G2DParentNode.class);\r
+ actionNode.setZIndex(2);\r
+ }\r
+ \r
+ void setViewTransform(AffineTransform viewTransform) {\r
+ diagramCoordinatesNode.setTransform(viewTransform);\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.h2d.editor.impl;\r
+\r
+import gnu.trove.THashSet;\r
+\r
+import java.awt.Color;\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Rectangle2D;\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.Iterator;\r
+import java.util.concurrent.CopyOnWriteArrayList;\r
+\r
+import org.simantics.h2d.editor.ISelection;\r
+import org.simantics.h2d.editor.ISelectionListener;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.IElementListener;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+import org.simantics.scenegraph.g2d.nodes.SelectionNode;\r
+\r
+class Selection implements ISelection {\r
+ static final AffineTransform IDENTITY = new AffineTransform();\r
+ \r
+ THashSet<IElement> elements = new THashSet<IElement>();\r
+ G2DParentNode selectionParentNode; \r
+ \r
+ CopyOnWriteArrayList<ISelectionListener> listeners = \r
+ new CopyOnWriteArrayList<ISelectionListener>();\r
+ \r
+ static class SelectionUpdater implements IElementListener {\r
+ SelectionNode node;\r
+ IElement element;\r
+ \r
+ public SelectionUpdater(SelectionNode node, IElement element) {\r
+ this.node = node;\r
+ this.element = element;\r
+ \r
+ elementUpdated(element); \r
+ element.addListener(this);\r
+ }\r
+\r
+ @Override\r
+ public void elementUpdated(IElement element) {\r
+ Rectangle2D bounds = new Rectangle2D.Double();\r
+ element.getBounds(bounds);\r
+ node.init(IDENTITY, bounds, Color.GRAY);\r
+ } \r
+ \r
+ public void remove() {\r
+ element.removeListener(this);\r
+ }\r
+\r
+ @Override\r
+ public void elementRemoved(IElement element) {\r
+ // TODO ?\r
+ }\r
+ \r
+ }\r
+ \r
+ ArrayList<SelectionUpdater> updaters = new ArrayList<SelectionUpdater>();\r
+ \r
+ public Selection(G2DParentNode selectionParentNode) {\r
+ this.selectionParentNode = selectionParentNode;\r
+ } \r
+ \r
+ private void updateSceneGraph() { \r
+ // Clear old selection\r
+ selectionParentNode.removeNodes();\r
+ for(SelectionUpdater updater : updaters)\r
+ updater.remove();\r
+ updaters.clear();\r
+ \r
+ // Create new selection\r
+ System.out.println("selection: " + elements.size());\r
+ for(IElement element : elements)\r
+ updaters.add(new SelectionUpdater(selectionParentNode.addNode(SelectionNode.class), element));\r
+ \r
+ // Notify listeners\r
+ // TODO this is in wrong place\r
+ for(ISelectionListener listener : listeners)\r
+ listener.selectionChanged(this);\r
+ } \r
+\r
+ public boolean contains(IElement el) {\r
+ return elements.contains(el);\r
+ }\r
+ \r
+ public boolean containsOneOf(Collection<IElement> els) {\r
+ for(IElement el : els)\r
+ if(elements.contains(el))\r
+ return true;\r
+ return false;\r
+ }\r
+ \r
+ public void clear() {\r
+ if(!elements.isEmpty()) {\r
+ elements.clear();\r
+ updateSceneGraph();\r
+ }\r
+ }\r
+ \r
+ public void set(Collection<IElement> els) {\r
+ elements.clear();\r
+ elements.addAll(els);\r
+ updateSceneGraph();\r
+ }\r
+ \r
+ public void set(IElement el) {\r
+ elements.clear();\r
+ elements.add(el);\r
+ updateSceneGraph();\r
+ }\r
+ \r
+ public boolean add(IElement el) {\r
+ boolean result = elements.add(el);\r
+ updateSceneGraph();\r
+ return result;\r
+ }\r
+ \r
+ public boolean addAll(Collection<IElement> els) {\r
+ boolean result = elements.addAll(els);\r
+ updateSceneGraph();\r
+ return result;\r
+ }\r
+ \r
+ public boolean toggle(IElement el) {\r
+ if(elements.contains(el)) {\r
+ elements.remove(el);\r
+ updateSceneGraph();\r
+ return false;\r
+ }\r
+ else {\r
+ elements.add(el);\r
+ updateSceneGraph();\r
+ return true;\r
+ }\r
+ }\r
+ \r
+ public boolean remove(IElement el) {\r
+ boolean result = elements.remove(el);\r
+ updateSceneGraph();\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public Iterator<IElement> iterator() {\r
+ return elements.iterator();\r
+ }\r
+\r
+ @Override\r
+ public boolean isEmpty() {\r
+ return elements.isEmpty();\r
+ }\r
+\r
+ @Override\r
+ public int size() {\r
+ return elements.size();\r
+ }\r
+\r
+ @Override\r
+ public IElement getSingleElement() {\r
+ for(IElement element : elements)\r
+ return element;\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public void addSelectionListener(ISelectionListener listener) {\r
+ listeners.add(listener);\r
+ }\r
+\r
+ @Override\r
+ public void removeSelectionListener(ISelectionListener listener) {\r
+ listeners.remove(listener); \r
+ }\r
+}\r
--- /dev/null
+package org.simantics.h2d.element;\r
+\r
+\r
+class ChainingElementListener implements IElementListener {\r
+ IElementListener listener1;\r
+ IElementListener listener2;\r
+ \r
+ ChainingElementListener(IElementListener listener1,\r
+ IElementListener listener2) {\r
+ this.listener1 = listener1;\r
+ this.listener2 = listener2;\r
+ }\r
+\r
+ @Override\r
+ public void elementUpdated(IElement element) {\r
+ listener1.elementUpdated(element);\r
+ listener2.elementUpdated(element); \r
+ }\r
+\r
+ @Override\r
+ public void elementRemoved(IElement element) {\r
+ listener1.elementRemoved(element);\r
+ listener2.elementRemoved(element); \r
+ }\r
+ \r
+ static IElementListener addListener(IElementListener currentListener, IElementListener newListener) {\r
+ if(currentListener == null)\r
+ return newListener;\r
+ else \r
+ return new ChainingElementListener(currentListener, newListener);\r
+ }\r
+ \r
+ static IElementListener removeListener(IElementListener currentListener, IElementListener listenerToRemove) {\r
+ if(currentListener == null || currentListener == listenerToRemove)\r
+ return null;\r
+ else if(currentListener instanceof ChainingElementListener) {\r
+ ChainingElementListener chain = (ChainingElementListener)currentListener;\r
+ if(chain.listener2 == listenerToRemove)\r
+ return chain.listener1;\r
+ else {\r
+ IElementListener l = removeListener(chain.listener1, listenerToRemove);\r
+ if(l == null)\r
+ return chain.listener2;\r
+ chain.listener1 = l;\r
+ }\r
+ }\r
+ return currentListener;\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.element;\r
+\r
+\r
+public abstract class Element implements IElement {\r
+\r
+ IElementListener listener;\r
+ \r
+ @Override\r
+ public <T> T getInterface(Class<T> clazz) {\r
+ if(clazz.isInstance(this))\r
+ return (T) this;\r
+ return null;\r
+ }\r
+ \r
+ protected void update() {\r
+ if(listener != null)\r
+ listener.elementUpdated(this);\r
+ }\r
+\r
+ @Override\r
+ public void addListener(IElementListener listener) {\r
+ this.listener = ChainingElementListener.addListener(this.listener, listener);\r
+ }\r
+ \r
+ @Override\r
+ public void removeListener(IElementListener listener) {\r
+ this.listener = ChainingElementListener.removeListener(this.listener, listener);\r
+ }\r
+ \r
+ @Override\r
+ public void remove() {\r
+ if(listener != null)\r
+ listener.elementRemoved(this);\r
+ }\r
+ \r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.element;\r
+\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+/**\r
+ * Element is a part of a document that has its own type and properties.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IElement {\r
+ <T> T getInterface(Class<T> clazz);\r
+ \r
+ void init(G2DParentNode parent);\r
+ void remove();\r
+ \r
+ /**\r
+ * Updates the parameter <code>bounds</code> so that it contains \r
+ * the bounding box of the element. \r
+ */\r
+ void getBounds(Rectangle2D bounds);\r
+ \r
+ /**\r
+ * Returns true, if the interior of the element intersects\r
+ * a circle at <code>(x,y)</code> with radius <code>tolerance</code>.\r
+ * Returns false, if the element and a circle at <code>(x,y)</code> with \r
+ * radius <code>sqrt(2)*tolerance</code> are disjoint. Otherwise may return true\r
+ * or false depending on the implementation.\r
+ */\r
+ boolean hitTest(double x, double y, double tolerance);\r
+ \r
+ void addListener(IElementListener listener);\r
+ void removeListener(IElementListener listener);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.element;\r
+\r
+\r
+public interface IElementListener {\r
+ /**\r
+ * Called when the publicy available properties of the elements are changed.\r
+ * @param element\r
+ */\r
+ public void elementUpdated(IElement element);\r
+ \r
+ public void elementRemoved(IElement element);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.element.handler;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+\r
+\r
+public interface Connectable extends IElementHandler, IElement {\r
+\r
+ void getBounds(Rectangle2D bounds);\r
+ Point2D getOrigo();\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.element.handler;\r
+\r
+/**\r
+ * The base interface of all element handler interfaces. Needed only for\r
+ * documenting purposes.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IElementHandler {\r
+}\r
--- /dev/null
+package org.simantics.h2d.element.handler;\r
+\r
+\r
+\r
+public interface Movable extends IElementHandler {\r
+\r
+ /**\r
+ * Moves the element by the given delta.\r
+ */\r
+ void move(double deltaX, double deltaY);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.element.handler;\r
+\r
+\r
+\r
+public interface Rotatable extends IElementHandler {\r
+\r
+ /**\r
+ * Rotates the element <code>amount</code> times 90 degrees clockwise.\r
+ */\r
+ void rotate(int amount);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.element.handler;\r
+\r
+import java.awt.Graphics2D;\r
+import java.awt.geom.AffineTransform;\r
+\r
+public interface ShadowDrawable {\r
+ \r
+ /**\r
+ * Draws the shadow of the element.\r
+ */\r
+ void draw(Graphics2D g, AffineTransform transform);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+\r
+public class ClickEvent implements ILocatableEvent { \r
+ final public String modifiers;\r
+\r
+ // Click location in diagram coordinates\r
+ final public Point2D point;\r
+\r
+ public List<IElement> pickedElements;\r
+ \r
+ public ClickEvent(String modifiers, Point2D point) {\r
+ this.modifiers = modifiers;\r
+ this.point = point;\r
+ }\r
+\r
+ @Override\r
+ public String getType() {\r
+ return getType(modifiers);\r
+ }\r
+ \r
+ public static String getType(String modifiers) {\r
+ return "click(" + modifiers + ")";\r
+ }\r
+ \r
+ @Override\r
+ public Point2D getLocation() {\r
+ return point;\r
+ }\r
+\r
+ @Override\r
+ public List<IElement> getPickedElements() {\r
+ return pickedElements;\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+\r
+public class DragEvent implements ILocatableEvent {\r
+ public DragEventPhase phase;\r
+ \r
+ public String startModifiers;\r
+ public String currentModifiers;\r
+ \r
+ public Point2D start;\r
+ public Point2D current;\r
+ \r
+ public List<IElement> pickedElements;\r
+\r
+ public DragEvent(String startModifiers, Point2D start) {\r
+ this.phase = DragEventPhase.dragBegin;\r
+ this.startModifiers = startModifiers;\r
+ this.currentModifiers = startModifiers;\r
+ this.start = start;\r
+ this.current = start;\r
+ }\r
+\r
+ @Override\r
+ public String getType() {\r
+ return getType(startModifiers);\r
+ }\r
+ \r
+ public static String getType(String modifiers) {\r
+ return "drag(" + modifiers + ")";\r
+ }\r
+\r
+ @Override\r
+ public Point2D getLocation() {\r
+ return start;\r
+ }\r
+\r
+ @Override\r
+ public List<IElement> getPickedElements() {\r
+ return pickedElements;\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+public enum DragEventPhase {\r
+ dragBegin, dragUpdate, dragEnd \r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+public interface IDragHandler {\r
+ public void handleMove();\r
+ public void handleRelease();\r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+public interface IEvent {\r
+ String getType();\r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+public interface ILocatableEvent extends IEvent {\r
+ Point2D getLocation();\r
+ List<IElement> getPickedElements();\r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.element.IElement;\r
+\r
+\r
+public class KeyboardEvent implements ILocatableEvent { \r
+ final public String key;\r
+\r
+ // Click location in diagram coordinates\r
+ final public Point2D point;\r
+\r
+ public List<IElement> pickedElements;\r
+ \r
+\r
+ public KeyboardEvent(String key, Point2D point) {\r
+ this.key = key;\r
+ this.point = point;\r
+ }\r
+\r
+\r
+ @Override\r
+ public String getType() {\r
+ return getType(key);\r
+ }\r
+ \r
+ public static String getType(String key) {\r
+ return "key(" + key + ")";\r
+ }\r
+ \r
+ @Override\r
+ public Point2D getLocation() {\r
+ return point;\r
+ }\r
+\r
+ @Override\r
+ public List<IElement> getPickedElements() {\r
+ return pickedElements;\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+import java.awt.event.MouseEvent;\r
+\r
+public class Modifiers {\r
+\r
+ public static String modifierString(\r
+ int button,\r
+ boolean ctrl,\r
+ boolean alt,\r
+ boolean shift\r
+ ) {\r
+ StringBuilder b = new StringBuilder();\r
+ if(ctrl)\r
+ b.append("ctrl+");\r
+ if(alt)\r
+ b.append("alt+");\r
+ if(shift)\r
+ b.append("shift+");\r
+ if(button == MouseEvent.BUTTON1)\r
+ b.append("left");\r
+ else if(button == MouseEvent.BUTTON2)\r
+ b.append("middle");\r
+ else if(button == MouseEvent.BUTTON3)\r
+ b.append("right"); \r
+ return b.toString();\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.event;\r
+\r
+import java.awt.geom.Point2D;\r
+\r
+\r
+public class WheelEvent implements IEvent { \r
+ final public String modifiers;\r
+\r
+ // Click location in diagram coordinates\r
+ final public Point2D point;\r
+ \r
+ final public int amount;\r
+\r
+ public WheelEvent(String modifiers, Point2D point, int amount) {\r
+ this.modifiers = modifiers;\r
+ this.point = point;\r
+ this.amount = amount;\r
+ }\r
+\r
+ @Override\r
+ public String getType() {\r
+ return getType(modifiers);\r
+ }\r
+ \r
+ public static String getType(String modifiers) {\r
+ return "wheel(" + modifiers + ")";\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.awt.geom.Rectangle2D;\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.editor.ISelection;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.DragEvent;\r
+import org.simantics.h2d.node.RectangleNode;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+public class BoxSelection extends DragEventHandler {\r
+\r
+ Rectangle2D rectangle = new Rectangle2D.Double();\r
+ RectangleNode selectionNode;\r
+ \r
+ @Override\r
+ protected void update(IDiagramEditor editor, DragEvent event) {\r
+ rectangle.setFrameFromDiagonal(event.start, event.current);\r
+ editor.requestRepaint();\r
+ }\r
+\r
+ @Override\r
+ protected void end(IDiagramEditor editor, DragEvent event) {\r
+ Rectangle2D.Double elementBounds = new Rectangle2D.Double();\r
+ ISelection selection = editor.getSelection();\r
+ System.out.println(event.currentModifiers);\r
+ \r
+ Collection<IElement> toBeSelected = new ArrayList<IElement>();\r
+ for(IElement element : editor.getDiagram().getElements()) {\r
+ element.getBounds(elementBounds);\r
+ if(rectangle.contains(elementBounds))\r
+ toBeSelected.add(element);\r
+ }\r
+ \r
+ if(event.currentModifiers.equals("ctrl+"))\r
+ selection.addAll(toBeSelected);\r
+ else\r
+ selection.set(toBeSelected);\r
+ editor.requestRepaint(); \r
+ }\r
+ \r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ selectionNode = parent.addNode(RectangleNode.class);\r
+ selectionNode.init(rectangle);\r
+ }\r
+ \r
+ @Override\r
+ public void remove() { \r
+ selectionNode.remove();\r
+ selectionNode = null;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+\r
+public class DefaultEventHandlers {\r
+\r
+ private DefaultEventHandlers() {}\r
+ \r
+ public static void configure(IDiagramEditor editor) {\r
+ editor.addEventHandler(1, "click(left)", new PickSelection());\r
+ editor.addEventHandler(1, "click(ctrl+left)", new ToggleSelection()); \r
+ editor.addEventHandler(1, "drag(alt+middle)", new Pan());\r
+ editor.addEventHandler(1, "wheel()", new Zoom());\r
+ editor.addEventHandler(1, "key(1)", new ZoomToFit());\r
+ editor.addEventHandler(1, "key(Period)", new RotateCounterclockwise());\r
+ editor.addEventHandler(1, "key(Comma)", new RotateClockwise());\r
+ editor.addEventHandler(1, "key(Ctrl+D)", new Delete());\r
+ \r
+ editor.addEventHandler(0, new ElementEventDelegator());\r
+ \r
+ editor.addEventHandler(-1, "drag(left)", new MoveSelected());\r
+ editor.addEventHandler(-2, "drag(left)", new BoxSelection());\r
+ editor.addEventHandler(-2, "drag(ctrl+left)", new BoxSelection());\r
+ \r
+ // Prints all unhandled events\r
+ editor.addEventHandler(-1000, new EventPrinter());\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.diagram.IDiagram;\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class Delete implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent event) {\r
+ IDiagram diagram = editor.getDiagram();\r
+ for(IElement element : editor.getSelection()) {\r
+ diagram.removeElement(element);\r
+ }\r
+ editor.getSelection().clear();\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.action.IAction;\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.DragEvent;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+public abstract class DragEventHandler implements IAction {\r
+\r
+ boolean isActive = false;\r
+ \r
+ protected boolean begin(IDiagramEditor editor, DragEvent event) {\r
+ return true;\r
+ }\r
+ \r
+ protected void update(IDiagramEditor editor, DragEvent event) {\r
+ }\r
+ \r
+ protected void end(IDiagramEditor editor, DragEvent event) {\r
+ }\r
+ \r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ if(_event instanceof DragEvent) {\r
+ DragEvent event = (DragEvent)_event;\r
+ \r
+ switch(event.phase) {\r
+ case dragBegin:\r
+ if(isActive)\r
+ return true; \r
+ if(begin(editor, event)) {\r
+ isActive = true;\r
+ editor.addAction(this);\r
+ return true;\r
+ }\r
+ else\r
+ return false;\r
+ \r
+ case dragUpdate:\r
+ if(!isActive)\r
+ return false;\r
+ update(editor, event);\r
+ return true;\r
+ \r
+ case dragEnd:\r
+ if(!isActive)\r
+ return false;\r
+ isActive = false;\r
+ editor.removeAction(this);\r
+ end(editor, event);\r
+ return true;\r
+ } \r
+ \r
+ }\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ }\r
+\r
+ @Override\r
+ public void remove() {\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.ILocatableEvent;\r
+import org.simantics.h2d.event.KeyboardEvent;\r
+\r
+public class ElementEventDelegator implements IEventHandler {\r
+ \r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ if(_event instanceof KeyboardEvent) {\r
+ IEventHandler uniqueHandler = null;\r
+ for(IElement element : editor.getSelection()) {\r
+ IEventHandler handler = element.getInterface(IEventHandler.class);\r
+ if(handler != null) {\r
+ if(uniqueHandler != null)\r
+ return true; // nobody cannot consume the event\r
+ uniqueHandler = handler;\r
+ }\r
+ }\r
+ if(uniqueHandler != null)\r
+ return uniqueHandler.handle(editor, _event);\r
+ }\r
+ else if(_event instanceof ILocatableEvent) {\r
+ ILocatableEvent event = (ILocatableEvent)_event;\r
+ for(IElement element : event.getPickedElements()) {\r
+ IEventHandler handler = element.getInterface(IEventHandler.class);\r
+ if(handler != null && handler.handle(editor, event))\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class EventPrinter implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent event) {\r
+ System.out.println(event.getType());\r
+ return false;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public interface IEventHandler {\r
+\r
+ boolean handle(IDiagramEditor editor, IEvent event);\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Rectangle2D;\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.editor.ISelection;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.handler.Movable;\r
+import org.simantics.h2d.event.DragEvent;\r
+import org.simantics.h2d.node.RectangleNode;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+import org.simantics.scenegraph.g2d.nodes.TransformNode;\r
+\r
+public class MoveSelected extends DragEventHandler {\r
+\r
+ double deltaX, deltaY; \r
+ TransformNode shadowNode;\r
+ ISelection selection;\r
+ \r
+ @Override\r
+ protected boolean begin(IDiagramEditor editor, DragEvent event) {\r
+ List<IElement> pick = event.pickedElements;\r
+ if(pick.isEmpty())\r
+ return false;\r
+ selection = editor.getSelection();\r
+ boolean pickContainsSelected = false;\r
+ for(IElement element : pick)\r
+ if(selection.contains(element)) {\r
+ pickContainsSelected = true;\r
+ break;\r
+ } \r
+ if(!pickContainsSelected) {\r
+ selection.clear();\r
+ selection.add(pick.get(0));\r
+ }\r
+ return true;\r
+ }\r
+ \r
+ @Override\r
+ protected void update(IDiagramEditor editor, DragEvent event) {\r
+ deltaX = event.current.getX() - event.start.getX();\r
+ deltaY = event.current.getY() - event.start.getY();\r
+ shadowNode.setTransform(new AffineTransform(1.0, 0.0, 0.0, 1.0, deltaX, deltaY));\r
+ editor.requestRepaint();\r
+ }\r
+ \r
+ @Override\r
+ protected void end(IDiagramEditor editor, DragEvent event) {\r
+ for(IElement element : selection)\r
+ if(element instanceof Movable)\r
+ ((Movable)element).move(deltaX, deltaY);\r
+ selection = null;\r
+ editor.requestRepaint();\r
+ }\r
+ \r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ shadowNode = parent.addNode(TransformNode.class);\r
+ \r
+ for(IElement element : selection) {\r
+ Rectangle2D elementBounds = new Rectangle2D.Double();\r
+ element.getBounds(elementBounds);\r
+ RectangleNode shadow = shadowNode.addNode(RectangleNode.class);\r
+ shadow.init(elementBounds);\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public void remove() {\r
+ shadowNode.remove();\r
+ shadowNode = null;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.awt.geom.Point2D;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.DragEvent;\r
+\r
+public class Pan extends DragEventHandler {\r
+\r
+ @Override\r
+ protected void update(IDiagramEditor editor, DragEvent event) {\r
+ Point2D offset = editor.getOffset();\r
+ double scale = editor.getScale();\r
+ editor.setViewTransform(\r
+ new Point2D.Double(\r
+ offset.getX() + event.start.getX() - event.current.getX(),\r
+ offset.getY() + event.start.getY() - event.current.getY()\r
+ ), \r
+ scale);\r
+ editor.requestRepaint();\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.editor.ISelection;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.ClickEvent;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class PickSelection implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ ClickEvent event = (ClickEvent)_event; \r
+ List<IElement> pick = event.pickedElements;\r
+ ISelection selection = editor.getSelection();\r
+ if(pick.isEmpty()) {\r
+ selection.clear();\r
+ editor.requestRepaint();\r
+ }\r
+ else {\r
+ if(selection.containsOneOf(pick)) {\r
+ if(pick.size() > 1 && selection.size()==1) {\r
+ /*\r
+ * If there are multiple elements under mouse and the current\r
+ * selection is exactly one of them then rotate thru all one\r
+ * element selection possibilities.\r
+ */\r
+ IElement s = selection.getSingleElement();\r
+ for(int i=0;i<pick.size();++i) {\r
+ if(s.equals(pick.get(i))) {\r
+ if(i < pick.size()-1) {\r
+ selection.set(pick.get(i+1));\r
+ return true;\r
+ }\r
+ }\r
+ }\r
+ selection.set(pick.get(0));\r
+ editor.requestRepaint();\r
+ }\r
+ }\r
+ else {\r
+ selection.set(pick.get(0));\r
+ editor.requestRepaint();\r
+ }\r
+ } \r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.handler.Rotatable;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class RotateClockwise implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent event) {\r
+ for(IElement element : editor.getSelection()) {\r
+ Rotatable rotatable = element.getInterface(Rotatable.class);\r
+ rotatable.rotate(1);\r
+ }\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.handler.Rotatable;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class RotateCounterclockwise implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent event) {\r
+ for(IElement element : editor.getSelection()) {\r
+ Rotatable rotatable = element.getInterface(Rotatable.class);\r
+ rotatable.rotate(-1);\r
+ }\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.util.List;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.ClickEvent;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class ToggleSelection implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ ClickEvent event = (ClickEvent)_event; \r
+ List<IElement> pick = event.pickedElements; \r
+ if(!pick.isEmpty()) {\r
+ editor.getSelection().toggle(pick.get(0));\r
+ editor.requestRepaint();\r
+ }\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.awt.geom.Point2D;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.WheelEvent;\r
+\r
+public class Zoom implements IEventHandler {\r
+\r
+ public final static double ZOOM_PER_CLICK = 1.2;\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ final WheelEvent event = (WheelEvent)_event;\r
+ Point2D offset = editor.getOffset();\r
+ double scale = editor.getScale();\r
+ double scaleRatio = Math.pow(ZOOM_PER_CLICK, event.amount);\r
+ \r
+ editor.setViewTransform(\r
+ new Point2D.Double(\r
+ offset.getX() * scaleRatio + event.point.getX() * (1.0 - scaleRatio),\r
+ offset.getY() * scaleRatio + event.point.getY() * (1.0 - scaleRatio)\r
+ ), \r
+ scale * scaleRatio);\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.event.handler;\r
+\r
+import java.awt.Dimension;\r
+import java.awt.geom.Point2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.IEvent;\r
+\r
+public class ZoomToFit implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent event) {\r
+ Rectangle2D diagramBounds = null;\r
+ Rectangle2D elementBounds = new Rectangle2D.Double();\r
+ for(IElement element : editor.getDiagram().getElements()) {\r
+ element.getBounds(elementBounds);\r
+ if(diagramBounds == null) {\r
+ diagramBounds = new Rectangle2D.Double();\r
+ diagramBounds.setFrame(elementBounds);\r
+ }\r
+ else {\r
+ Rectangle2D.union(diagramBounds, elementBounds, diagramBounds);\r
+ }\r
+ }\r
+ if(diagramBounds != null) {\r
+ Dimension dimension = editor.getViewDimension();\r
+ \r
+ double scale = Math.max(\r
+ diagramBounds.getWidth() / dimension.getWidth(),\r
+ diagramBounds.getHeight() / dimension.getHeight()\r
+ ); \r
+ \r
+ Point2D offset = new Point2D.Double(\r
+ diagramBounds.getCenterX() - dimension.getWidth() * scale * 0.5,\r
+ diagramBounds.getCenterY() - dimension.getHeight() * scale * 0.5\r
+ );\r
+ editor.setViewTransform(offset, scale);\r
+ }\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.h2d.node;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.Rectangle2D;
+
+import org.simantics.scenegraph.g2d.G2DNode;
+
+public class FilledShapeNode extends G2DNode {
+
+ private static final long serialVersionUID = -7540487222025677413L;
+
+ protected Shape shape = null;
+ protected Color color = Color.BLACK;
+
+ @SyncField("shape")
+ public void setShape(Shape shape) {
+ this.shape = shape;
+ }
+
+ @SyncField("color")
+ public void setColor(Color color) {
+ this.color = color;
+ }
+
+ @Override
+ public void render(Graphics2D g2d) {
+ if(shape == null) return;
+ if(color != null) g2d.setColor(color);
+
+ g2d.fill(shape);
+ }
+
+ @Override
+ public Rectangle2D getBounds() {
+ return shape.getBounds2D();
+ }
+
+}
--- /dev/null
+package org.simantics.h2d.node;\r
+\r
+public interface ITextListener {\r
+\r
+ void textChanged();\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.node;\r
+\r
+import java.awt.BasicStroke;\r
+import java.awt.Color;\r
+import java.awt.Graphics2D;\r
+import java.awt.geom.Path2D;\r
+import java.awt.geom.Point2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.scenegraph.g2d.G2DNode;\r
+\r
+public class LineNode extends G2DNode {\r
+ \r
+ private static final long serialVersionUID = 654692698101485672L;\r
+\r
+ Point2D begin;\r
+ Point2D end;\r
+ protected Path2D path;\r
+\r
+ @SyncField({"begin","end"})\r
+ public void init(Point2D begin, Point2D end) {\r
+ this.begin = begin;\r
+ this.end = end;\r
+ update();\r
+ }\r
+ \r
+ protected void update() {\r
+ path = new Path2D.Double();\r
+ path.moveTo(begin.getX(), begin.getY());\r
+ path.lineTo(end.getX(), end.getY());\r
+ }\r
+\r
+ @Override\r
+ public void render(Graphics2D g) {\r
+ if(path == null) return;\r
+ g.setColor(Color.BLACK);\r
+ double scale = g.getTransform().getScaleX();\r
+ g.setStroke(new BasicStroke( (float)(1.0 / scale) ));\r
+ g.draw(path);\r
+ }\r
+\r
+ @Override\r
+ public Rectangle2D getBounds() {\r
+ Rectangle2D bounds = new Rectangle2D.Double();\r
+ bounds.setFrameFromDiagonal(begin, end);\r
+ return bounds;\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.node;\r
+\r
+import java.awt.BasicStroke;\r
+import java.awt.Color;\r
+import java.awt.Graphics2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.scenegraph.g2d.G2DNode;\r
+\r
+public class RectangleNode extends G2DNode {\r
+ \r
+ private static final long serialVersionUID = 654692698101485672L;\r
+\r
+ protected Rectangle2D bounds = null;\r
+\r
+ @SyncField("bounds")\r
+ public void init(Rectangle2D bounds) {\r
+ this.bounds = bounds;\r
+ }\r
+\r
+ @Override\r
+ public void render(Graphics2D g) {\r
+ if(bounds == null) return;\r
+ g.setColor(Color.BLACK);\r
+ double scale = g.getTransform().getScaleX();\r
+ g.setStroke(new BasicStroke( (float)(1.0 / scale) ));\r
+\r
+ g.draw(bounds);\r
+ }\r
+\r
+ @Override\r
+ public Rectangle2D getBounds() {\r
+ return bounds;\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.h2d.node;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.Shape;
+import java.awt.Stroke;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+
+import org.simantics.scenegraph.g2d.G2DNode;
+import org.simantics.scenegraph.utils.GeometryUtils;
+
+public class ShapeNode extends G2DNode {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 8508750881358776559L;
+
+ protected Shape shape = null;
+ protected Stroke stroke = new BasicStroke(1);
+ protected Color color = Color.BLACK;
+ protected boolean fill = false;
+ protected boolean scaleStroke = false;
+ protected boolean scaleShape = false;
+
+ @SyncField("shape")
+ public void setShape(Shape shape) {
+ this.shape = shape;
+ repaint();
+ }
+
+ @SyncField("stroke")
+ public void setStroke(Stroke stroke) {
+ this.stroke = stroke;
+ }
+
+ @SyncField("color")
+ public void setColor(Color color) {
+ this.color = color;
+ }
+
+ @SyncField("fill")
+ public void setFill(boolean fill) {
+ this.fill = fill;
+ }
+
+ @SyncField("scaleStroke")
+ public void setScaleStroke(boolean scaleStroke) {
+ this.scaleStroke = scaleStroke;
+ }
+
+ @SyncField("scaleShape")
+ public void setScaleShape(boolean scaleShape) {
+ this.scaleShape = scaleShape;
+ }
+
+ @Override
+ public void render(Graphics2D g2d) {
+ if(shape == null) return;
+
+ g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // FIXME
+ if(color != null) g2d.setColor(color);
+ if(stroke != null) {
+ if(scaleStroke && stroke instanceof BasicStroke) {
+ BasicStroke bs = GeometryUtils.scaleStroke(stroke, (float) (1.0 / GeometryUtils.getScale(g2d.getTransform())));
+ g2d.setStroke(bs);
+ } else {
+ g2d.setStroke(stroke);
+ }
+ }
+ if(scaleShape) {
+ double xs = g2d.getTransform().getScaleX();
+ double ys = g2d.getTransform().getScaleY();
+ g2d.scale(1/xs, 1/ys);
+ }
+
+ if(fill) {
+ g2d.fill(shape);
+ } else {
+ g2d.draw(shape);
+ }
+
+ }
+
+ @Override
+ public Rectangle2D getBounds() {
+ return shape.getBounds2D();
+ }
+}
--- /dev/null
+package org.simantics.h2d.node;\r
+\r
+import java.awt.AWTEvent;\r
+import java.awt.Color;\r
+import java.awt.Font;\r
+import java.awt.Graphics2D;\r
+import java.awt.Toolkit;\r
+import java.awt.datatransfer.Clipboard;\r
+import java.awt.datatransfer.DataFlavor;\r
+import java.awt.datatransfer.StringSelection;\r
+import java.awt.datatransfer.Transferable;\r
+import java.awt.event.KeyEvent;\r
+import java.awt.event.MouseEvent;\r
+import java.awt.font.FontRenderContext;\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Line2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.scenegraph.g2d.G2DNode;\r
+\r
+public class TextNode extends G2DNode {\r
+ \r
+ //static final FontRenderContext FRC = new FontRenderContext(\r
+ // new AffineTransform(1.0,0.0,0.0,1.0,0.0,0.0), true, true);\r
+ \r
+ private static final long serialVersionUID = 654692698101485672L;\r
+\r
+ protected String text = null;\r
+ protected Font font = null;\r
+ protected Color color = null;\r
+ protected double x;\r
+ protected double y;\r
+ protected double scale;\r
+ \r
+ boolean editAllowed;\r
+ int caret = 0;\r
+ int selectionTail = 0;\r
+ \r
+ ITextListener textListener;\r
+ \r
+ /**\r
+ * Enables or disables edit mode. It also sets\r
+ * the caret at the end of text all selects the\r
+ * whole text (this is the usual convention when \r
+ * beginning to edit one line texts).\r
+ * @param editAllowed\r
+ */\r
+ public void setEditMode(boolean editAllowed) {\r
+ this.editAllowed = editAllowed;\r
+ caret = text.length();\r
+ selectionTail = 0;\r
+ }\r
+\r
+ @SyncField({"text", "font", "color", "x", "y", "scale"})\r
+ public void init(String text, Font font, Color color, double x, double y, double scale) {\r
+ this.text = text;\r
+ this.font = font;\r
+ this.color = color;\r
+ this.x = x;\r
+ this.y = y;\r
+ this.scale = scale;\r
+ }\r
+ \r
+ public String getText() {\r
+ return text;\r
+ }\r
+ \r
+ private double getLength(FontRenderContext frc, String str) {\r
+ Rectangle2D bounds = font.getStringBounds(str, frc);\r
+ return bounds.getWidth();\r
+ }\r
+\r
+ @Override\r
+ public void render(Graphics2D g) {\r
+ if(text == null || font == null || color == null) return;\r
+ g.setFont(font);\r
+ g.translate(x, y);\r
+ g.scale(scale, scale);\r
+ \r
+ if(editAllowed) {\r
+ FontRenderContext frc = g.getFontRenderContext();\r
+ \r
+ int selectionMin = Math.min(caret, selectionTail);\r
+ int selectionMax = Math.max(caret, selectionTail); \r
+ double selectionMinPos = getLength(frc, text.substring(0, selectionMin));\r
+ double selectionMaxPos = getLength(frc, text.substring(0, selectionMax));\r
+\r
+ // Selection background\r
+ g.setColor(new Color(0x316ac5));\r
+ g.fill(new Rectangle2D.Double(selectionMinPos, -12.0, \r
+ selectionMaxPos-selectionMinPos, 12.0));\r
+ \r
+ // Text\r
+ g.setColor(color); \r
+ g.drawString(text.substring(0, selectionMin), 0f, 0f);\r
+ g.drawString(text.substring(selectionMax), (float)selectionMaxPos, 0f);\r
+ \r
+ g.setColor(Color.WHITE);\r
+ g.drawString(text.substring(selectionMin, selectionMax), (float)selectionMinPos, 0f);\r
+ \r
+ // Caret\r
+ double caretPos = getLength(frc, text.substring(0, caret));\r
+ //g.setXORMode(Color.BLACK);\r
+ g.setColor(Color.BLACK);\r
+ g.draw(new Line2D.Double(caretPos, 0, caretPos, -12.0)); \r
+ }\r
+ else {\r
+ g.setColor(color); \r
+ g.drawString(text, 0f, 0f);\r
+ } \r
+ }\r
+\r
+ /**\r
+ * Replaces the current selection with the content or inserts\r
+ * the content at caret. After the insertion the caret\r
+ * will be at the end of inserted text and selection will\r
+ * be empty.\r
+ * @param content\r
+ */\r
+ @SyncField("text")\r
+ protected void insert(String content) {\r
+ int selectionMin = Math.min(caret, selectionTail);\r
+ int selectionMax = Math.max(caret, selectionTail); \r
+ \r
+ String begin = text.substring(0, selectionMin);\r
+ String end = text.substring(selectionMax);\r
+ text = begin + content + end;\r
+ caret = selectionMin + content.length();\r
+ selectionTail = caret;\r
+ }\r
+ \r
+ \r
+ @ServerSide\r
+ protected void fireTextChanged() {\r
+ if(textListener != null)\r
+ textListener.textChanged();\r
+ }\r
+ \r
+ public void setTextListener(ITextListener listener) {\r
+ this.textListener = listener;\r
+ }\r
+ \r
+ private void handleKeyPressed(KeyEvent event) {\r
+ char c = event.getKeyChar();\r
+ //System.out.println("Key pressed " + c + " " + event.getKeyCode());\r
+ if(event.isControlDown())\r
+ switch(event.getKeyCode()) {\r
+ case KeyEvent.VK_C:\r
+ if(caret != selectionTail) {\r
+ int selectionMin = Math.min(caret, selectionTail);\r
+ int selectionMax = Math.max(caret, selectionTail);\r
+ setCliboardContent(text.substring(selectionMin, selectionMax));\r
+ }\r
+ break;\r
+\r
+ case KeyEvent.VK_V: \r
+ {\r
+ String content = getCliboardContent();\r
+ if(content != null)\r
+ insert(content); \r
+ }\r
+ break;\r
+ default:\r
+ return;\r
+ } \r
+ else if(event.isAltDown())\r
+ return;\r
+ else\r
+ switch(event.getKeyCode()) {\r
+ case KeyEvent.VK_LEFT:\r
+ if(caret > 0) {\r
+ --caret;\r
+ if(!event.isShiftDown())\r
+ selectionTail = caret;\r
+ }\r
+ break;\r
+ case KeyEvent.VK_RIGHT:\r
+ if(caret < text.length()) {\r
+ ++caret;\r
+ if(!event.isShiftDown())\r
+ selectionTail = caret;\r
+ }\r
+ break;\r
+ case KeyEvent.VK_HOME:\r
+ caret = 0;\r
+ if(!event.isShiftDown())\r
+ selectionTail = caret;\r
+ break;\r
+ case KeyEvent.VK_END:\r
+ caret = text.length();\r
+ if(!event.isShiftDown())\r
+ selectionTail = caret;\r
+ break;\r
+\r
+ case KeyEvent.VK_BACK_SPACE:\r
+ if(caret == selectionTail && caret > 0)\r
+ --caret;\r
+ insert(""); \r
+ break;\r
+\r
+ case KeyEvent.VK_DELETE:\r
+ if(caret == selectionTail && caret < text.length())\r
+ ++caret;\r
+ insert(""); \r
+ break; \r
+\r
+ default:\r
+ if(c == 65535 || Character.getType(c) == Character.CONTROL)\r
+ return;\r
+ System.out.println("Char " + (int)c + " " + Character.getType(c));\r
+ insert(new String(new char[] {c})); \r
+ }\r
+ // FIXME This is called even if just caret was moved.\r
+ // This is currently necessary for repaints.\r
+ fireTextChanged();\r
+ event.consume();\r
+ }\r
+ \r
+ private void handleMousePressed(MouseEvent event) {\r
+ // TODO \r
+ }\r
+ \r
+ @Override\r
+ public void handleEvent(AWTEvent event) {\r
+ if(editAllowed) {\r
+ if(caret > text.length())\r
+ caret = text.length();\r
+ switch(event.getID()) { \r
+ case KeyEvent.KEY_PRESSED: \r
+ handleKeyPressed((KeyEvent)event);\r
+ break;\r
+ case MouseEvent.MOUSE_PRESSED: \r
+ handleMousePressed((MouseEvent)event);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public Rectangle2D getBounds() {\r
+ return null;\r
+ }\r
+\r
+ public String getCliboardContent() {\r
+ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();\r
+ Transferable clipData = clipboard.getContents(this);\r
+ try {\r
+ return (String) (clipData.getTransferData(DataFlavor.stringFlavor));\r
+ } catch (Exception ee) {\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public void setCliboardContent(String content) {\r
+ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();\r
+ StringSelection data = new StringSelection(content);\r
+ clipboard.setContents(data, data);\r
+ }\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="src" path="examples"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+b50337d35fb8a1e5aeb2c5438a2fe1d17d63689f 4
+b50337d35fb8a1e5aeb2c5438a2fe1d17d63689f default
--- /dev/null
+[paths]\r
+default=ssh://simusite/org.simantics.objmap\r
--- /dev/null
+revlogv1
+store
+fncache
--- /dev/null
+data/.classpath.i
+data/.hgignore.i
+data/.project.i
+data/.settings/org.eclipse.jdt.core.prefs.i
+data/META-INF/MANIFEST.MF.i
+data/build.properties.i
+data/doc/bidirectionalModel.graphml.i
+data/doc/bidirectionalModel.png.i
+data/doc/main.mediawiki.i
+data/doc/manual.mediawiki.i
+data/doc/objectMappingTerminology.graphml.i
+data/doc/objectMappingTerminology.png.i
+data/doc/triangleModel.graphml.i
+data/doc/triangleModel.png.i
+data/src/org/simantics/objmap/IFunction.java.i
+data/src/org/simantics/objmap/ILinkType.java.i
+data/src/org/simantics/objmap/IMapping.java.i
+data/src/org/simantics/objmap/IMappingListener.java.i
+data/src/org/simantics/objmap/IMappingRule.java.i
+data/src/org/simantics/objmap/IMappingSchema.java.i
+data/src/org/simantics/objmap/MappingException.java.i
+data/src/org/simantics/objmap/Mappings.java.i
+data/src/org/simantics/objmap/impl/Link.java.i
+data/src/org/simantics/objmap/impl/Mapping.java.i
+data/src/org/simantics/objmap/rules/FieldAccessor.java.i
+data/src/org/simantics/objmap/rules/FunctionalPropertyAccessor.java.i
+data/src/org/simantics/objmap/rules/IDomainAccessor.java.i
+data/src/org/simantics/objmap/rules/IRangeAccessor.java.i
+data/src/org/simantics/objmap/rules/MappedCollectionRule.java.i
+data/src/org/simantics/objmap/rules/ValueRule.java.i
+data/src/org/simantics/objmap/schema/SimpleLinkType.java.i
+data/src/org/simantics/objmap/schema/SimpleSchema.java.i
+data/src/org/simantics/objmap/annotations/GraphProperty.java.i
+data/src/org/simantics/objmap/annotations/GraphType.java.i
+data/src/org/simantics/objmap/rules/domain/FunctionalPropertyAccessor.java.i
+data/src/org/simantics/objmap/rules/domain/IDomainAccessor.java.i
+data/src/org/simantics/objmap/rules/domain/MappingUtils.java.i
+data/src/org/simantics/objmap/rules/domain/RelatedObjectsAccessor.java.i
+data/src/org/simantics/objmap/rules/range/FieldAccessor.java.i
+data/src/org/simantics/objmap/rules/range/IRangeAccessor.java.i
+data/src/org/simantics/objmap/schema/Schemas.java.i
+data/examples/org/simantics/objmap/examples/SysdynExample.java.i
+data/src/org/simantics/objmap/annotations/Composition.java.i
+data/src/org/simantics/objmap/annotations/RelatedElement.java.i
+data/src/org/simantics/objmap/annotations/RelatedElements.java.i
+data/src/org/simantics/objmap/annotations/RelatedValue.java.i
+data/src/org/simantics/objmap/annotations/factories/DataTypeUtils.java.i
+data/src/org/simantics/objmap/annotations/factories/RelatedElementRuleFactory.java.i
+data/src/org/simantics/objmap/annotations/factories/RelatedElementsRuleFactory.java.i
+data/src/org/simantics/objmap/annotations/factories/RelatedValueRuleFactory.java.i
+data/src/org/simantics/objmap/annotations/meta/HasClassRuleFactory.java.i
+data/src/org/simantics/objmap/annotations/meta/HasFieldRuleFactory.java.i
+data/src/org/simantics/objmap/annotations/meta/HasMethodRuleFactory.java.i
+data/src/org/simantics/objmap/impl/RangeUpdateRequest.java.i
+data/src/org/simantics/objmap/impl/UnidirectionalMapping.java.i
+data/src/org/simantics/objmap/rules/MappedElementRule.java.i
+data/src/org/simantics/objmap/rules/MappedElementsRule.java.i
+data/src/org/simantics/objmap/rules/domain/RelatedObjectAccessor.java.i
+data/src/org/simantics/objmap/rules/domain/RelatedValueAccessor.java.i
+data/src/org/simantics/objmap/rules/factory/IClassRuleFactory.java.i
+data/src/org/simantics/objmap/rules/factory/IFieldRuleFactory.java.i
+data/src/org/simantics/objmap/rules/factory/IMethodRuleFactory.java.i
+data/src/org/simantics/objmap/schema/MappingSchemas.java.i
--- /dev/null
+m
+mMETA-INF
+mdoc
+msrc/org/simantics/objmap
+msrc/org/simantics/objmap/impl
+msrc/org/simantics/objmap/rules
+msrc/org/simantics/objmap/rules/domain
+msrc/org/simantics/objmap/rules/range
+rsrc/org/simantics/objmap/schema
--- /dev/null
+default
\ No newline at end of file
--- /dev/null
+syntax: regexp\r
+^bin/
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>org.simantics.objmap</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.ManifestBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.SchemaBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.pde.PluginNature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Wed Nov 11 10:38:27 EET 2009\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6\r
+org.eclipse.jdt.core.compiler.compliance=1.6\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.6\r
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Objmap
+Bundle-SymbolicName: org.simantics.objmap
+Bundle-Version: 0.1.0
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.simantics.db;bundle-version="0.6.2",
+ gnu.trove2;bundle-version="2.0.4",
+ org.simantics.layer0.utils;bundle-version="0.6.2"
+Export-Package: org.simantics.objmap,
+ org.simantics.objmap.annotations,
+ org.simantics.objmap.annotations.meta,
+ org.simantics.objmap.rules,
+ org.simantics.objmap.rules.domain,
+ org.simantics.objmap.rules.factory,
+ org.simantics.objmap.rules.range,
+ org.simantics.objmap.schema
--- /dev/null
+source.. = src/\r
+output.. = bin/\r
+bin.includes = META-INF/,\\r
+ .\r
+src.includes = doc/,\\r
+ META-INF/,\\r
+ examples/\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd">\r
+ <!--Created by yFiles for Java 2.7-->\r
+ <key for="graphml" id="d0" yfiles.type="resources"/>\r
+ <key attr.name="url" attr.type="string" for="node" id="d1"/>\r
+ <key attr.name="description" attr.type="string" for="node" id="d2">\r
+ <default/>\r
+ </key>\r
+ <key for="node" id="d3" yfiles.type="nodegraphics"/>\r
+ <key attr.name="url" attr.type="string" for="edge" id="d4"/>\r
+ <key attr.name="description" attr.type="string" for="edge" id="d5">\r
+ <default/>\r
+ </key>\r
+ <key for="edge" id="d6" yfiles.type="edgegraphics"/>\r
+ <graph edgedefault="directed" id="G">\r
+ <node id="n0">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="127.0" x="186.0" y="200.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="106.720703125" x="10.1396484375" y="5.6494140625">Intermediate model</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n1">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="-21.0" y="200.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="55.369140625" x="23.8154296875" y="5.6494140625">Database</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n2">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="417.0" y="200.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="35.34765625" x="33.826171875" y="5.6494140625">Editor</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <edge id="e0" source="n1" target="n0">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">\r
+ <y:Point x="134.75500000000028" y="185.0425000000001"/>\r
+ </y:Path>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="head" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="34.017578125" x="13.93121093750014" y="-34.47918379864251">reads</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ <edge id="e1" source="n0" target="n2">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">\r
+ <y:Point x="363.0000000000002" y="190.6400000000001"/>\r
+ </y:Path>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="shead" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="56.01953125" x="1.5527343750001137" y="-33.057650409984035">visualizes</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ <edge id="e2" source="n2" target="n0">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">\r
+ <y:Point x="365.0000000000002" y="237.3600000000001"/>\r
+ </y:Path>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="48.68359375" x="-54.904296874999886" y="13.861448547068562">modifies</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ <edge id="e3" source="n0" target="n1">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">\r
+ <y:Point x="133.78500000000014" y="234.19250000000017"/>\r
+ </y:Path>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="35.3359375" x="-48.33796874999993" y="10.017335507498103">writes</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ </graph>\r
+ <data key="d0">\r
+ <y:Resources/>\r
+ </data>\r
+</graphml>\r
--- /dev/null
+'''org.simantics.objmap''' is a framework for bidirectional synchronization between Simantics database and Java objects. \r
+\r
+See [[org.simantics.template_Manual|Manual]] for details.\r
+\r
+= Dependencies=\r
+\r
+* [[org.simantics.db]]\r
+* gnu.trove2\r
+\r
+There is a plan to split the plugin into two plugins such that the other will be database-independent and contain all annotations.\r
+\r
+=Download=\r
+\r
+{| style="background-color: #e9e9e9; border: 1px solid #aaaaaa; width: 75%;"\r
+| '''Version'''\r
+| '''Date'''\r
+| '''Download'''\r
+|- style="background-color: #f9f9f9; " |\r
+| 0.1.0\r
+| 12.11.2009\r
+| [[Media:org.simantics.objmap-0.1.0.zip|org.simantics.objmap-0.1.0.zip]] \r
+|}\r
+\r
+=Current Development=\r
+The current version is released mostly for comments and is not yet ready for deployment. The development plan is at the end of the [[org.simantics.objmap_Manual#TODO|manual]]. \r
+\r
--- /dev/null
+= Introduction =\r
+\r
+When implementing an editor in Simantics platform, it is very common that the graph representation cannot be directly used, but the editor needs to create an intermediate model of the subgraph it edits. Some reasons for this:\r
+* Accessing the database directly is not fast enough.\r
+* An editor using the database directly holds frequently long read locks and cannot operate during write transactions.\r
+* The editor needs to store auxiliary objects attached to the model.\r
+* Editor modifies the intermediate model speculatively before the modification is committed to the database or canceled.\r
+* The modifications in database cannot be applied in the editor immediately (for example during rendering).\r
+* Third-party component requires certain classes to be used.\r
+* Editor needs to be backend agnostic and cannot directly use database api.\r
+\r
+There are two different approaches for implementing the intermediate model:\r
+; Triangle model\r
+: The editor modifies the database directly and the changes in the database are eventually propagated to the intermediate model. The editor doesn't change the intermediate model directly.\r
+[[Image:triangleModel.png]] \r
+; Bidirectional model\r
+: The editor operates only using the intermediate model and modifications are updated from intermediate model to the database and vice versa. \r
+[[Image:bidirectionalModel.png]] \r
+\r
+By experience, the triangle model is easier to implement correctly in particular when resources are linked to each other in complex fashion. The <code>org.simantics.objmap</code>-plugin tries to make the implementation of bidirectional model easier by providing a framework for defining declaratively the update procedure between database and intermediate model. It can also be used with triangle model only for one direction or with hybrid model where some operations are implemented using the intermediate model and other modifying the database directly.\r
+\r
+= Design principles =\r
+\r
+; Symmetric\r
+: For every operation from database to Java objects there is a corresponding operation from Java objects to database. This makes the framework easier to learn and undestand. \r
+; Non-intrusive\r
+: The Java objects used with the framework do not need to implement any specific interface or follow some specific naming convention. The mapping schema can be defined using annotations or separately from the class definition.\r
+; Support for different use scenarios\r
+:* bidirectional / unidirectional\r
+:* one shot / continuous\r
+:* automatic listening / manual updating\r
+; One-to-one\r
+: For every resource there is a single corresponding Java object and vise versa. This makes the framework easier to understand. It is not a transformation framework. \r
+\r
+= Concepts =\r
+\r
+''Mapping'' consists of a set of resources called a ''domain'', a set of Java objects called a ''range'' and a collection of ''links''. Each link is attached to exactly one domain and range element and each domain and range element has at most one link attached to it. Additionally the link has a ''link type'' that contains requirements for the domain and range elements in the same link.\r
+\r
+[[Image:objectMappingTerminology.png]]\r
+\r
+A mapping is ''up-to-date'' if every domain and range element has a link and all links satisfy the requirements of their link types. The links of up-to-date mapping form a bijection from domain to range.\r
+\r
+A ''mapping schema'' associates all domain and range elements with a link type. It is used to add new domain and range elements to the mapping.\r
+\r
+= Mapping interface =\r
+\r
+The plugin represents a mapping with interface <code>org.simantics.objmap.IMapping</code>. The interface is symmetric in the sense that every operation on the domain of the mapping has also a counterpart that operates on the range. Typically, if one of the operations requires a read graph, its counterpart requires a write graph. We will describe only the methods operating on the domain of the mapping:\r
+\r
+ Set<Resource> getDomain();\r
+ \r
+Returns the domain of the mapping. All set operations are supported. Adding a new domain element does not automatically create a link to it. Removal of a domain element removes also a link and the target element, but does not remove the element from the database. \r
+ \r
+ Collection<Resource> updateDomain(WriteGraph g) throws MappingException;\r
+ \r
+Updates all domain elements whose counterpart is modified and creates new domain elements for previously added range elements. Returns the collection of domain elements that were modified or created in the update process.\r
+\r
+ Object get(Resource domainElement);\r
+ \r
+Returns the counterpart of a domain element or null if the element does not belong to the domain or does not have a link. \r
+ \r
+ Object map(ReadGraph g, Resource domainElement) throws MappingException;\r
+\r
+A convenience method that adds a domain element to the mapping and immediately updates the mapping and returns the corresponding range element. \r
+\r
+ void domainModified(Resource domainElement);\r
+ \r
+Tells the mapping that the domain element has been modified. \r
+\r
+ boolean isDomainModified();\r
+ \r
+Tells if some domain elements have been modified or added. \r
+ \r
+ Collection<Resource> getConflictingDomainElements();\r
+\r
+Returns a collection of domain elements which have been modified and also their counterparts in the mapping are modified. These elements are in conflict in the sense that the updating domain and range in different orders may produce different results.\r
+\r
+ void addMappingListener(IMappingListener listener);\r
+ void removeMappingListener(IMappingListener listener);\r
+\r
+Adds or removes a listener for domain and range modifications.\r
+\r
+= Defining a mapping schema =\r
+\r
+The primary way for defining a mapping schema is to use Java annotations. The current annotation support is still lacking. Only the following annotations are supported:\r
+; GraphType(uri)\r
+: Specifies the domain type that the class corresponds to.\r
+; RelatedValue(uri)\r
+: Specifies a correspondence between a field and functional property.\r
+; RelatedElement(uri)\r
+: Specifies a correspondence between a field and functional relation\r
+; RelatedElements(uri)\r
+: Specifies a correspondence between a field and a relation. The type of the field has to be a collection.\r
+\r
+== Example ==\r
+ \r
+Suppose we have the following annotated classes:\r
+ @GraphType("http://www.simantics.org/Sysdyn#Configuration")\r
+ static class Configuration {\r
+ @RelatedElements("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf")\r
+ Collection<Component> components; \r
+ }\r
+ \r
+ static abstract class Component { \r
+ }\r
+ \r
+ @GraphType("http://www.simantics.org/Sysdyn#Dependency")\r
+ static class Dependency extends Component {\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasTail")\r
+ Variable tail;\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasHead")\r
+ Auxiliary head;\r
+ }\r
+ \r
+ static abstract class Variable extends Component {\r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName")\r
+ String name;\r
+ }\r
+ \r
+ @GraphType("http://www.simantics.org/Sysdyn#Auxiliary")\r
+ static class Auxiliary extends Variable {\r
+ }\r
+\r
+Them the schema can be defined as follows:\r
+ SimpleSchema schema = new SimpleSchema();\r
+ schema.addLinkType(MappingSchemas.fromAnnotations(g, Configuration.class));\r
+ schema.addLinkType(MappingSchemas.fromAnnotations(g, Dependency.class));\r
+ schema.addLinkType(MappingSchemas.fromAnnotations(g, Auxiliary.class));\r
+\r
+= Using the mapping interface =\r
+\r
+Assume that a mapping scheme <code>scheme</code> has already been defined and <code>modelRoot</code> is the root resource of the model that the editor edits. Then the model is created as follows:\r
+ IMapping mapping = Mappings.create(scheme);\r
+ in read transaction {\r
+ MyModel model = (MyModel)mapping.map(graph, modelRoot);\r
+ } \r
+ \r
+There are different ways how the mapping can be updated. The following code forces update for all domain elements. \r
+ in read transaction {\r
+ for(Resource r : mapping.getDomain())\r
+ mapping.domainModified(r);\r
+ mapping.updateRange(graph);\r
+ }\r
+ \r
+If the range elements have some kind of "dirty" flags, the update can be optimized:\r
+ in write transaction {\r
+ for(Object obj : mapping.getRange())\r
+ if(obj implements MyObject && ((MyObject)obj).isDirty())\r
+ mapping.rangeModified(obj);\r
+ mapping.updateDomain(graph);\r
+ }\r
+ \r
+Often the editor has to update some auxiliary structures when the mapping modifies the range. This can be implemented for example as:\r
+ for(Object obj : mapping.updateRange(graph))\r
+ if(obj implements MyObject)\r
+ ((MyObject)obj).updateAuxiliary();\r
+\r
+The most convenient way for updating the target would be to add graph request listeners for each domain element in the mapping. This is not yet implemented although the current interface should support this without modifications. Currently the only way to listen the database changes is to listen the request that is used to call the updateRange-method.\r
+\r
+= Development plan =\r
+\r
+By priority:\r
+* Automatic listening of database changes: marks domain elements modified.\r
+* More complete annotations\r
+* Utilizing declarations in ontologies: for example full URIs of relations are not needed because relations are declared in types. Also the validity of annotation can be checked.\r
+* A separate plugin containing only mapping annotations so that the plugin can be used without introducing a dependency to org.simantics.db.\r
+* Composition annotation that can be used to remove elements whose parents are removed or update elements whose parents are marked modified. \r
+* Support for copy-paste and other extra mapping issues. \r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd">\r
+ <!--Created by yFiles for Java 2.7-->\r
+ <key for="graphml" id="d0" yfiles.type="resources"/>\r
+ <key attr.name="url" attr.type="string" for="node" id="d1"/>\r
+ <key attr.name="description" attr.type="string" for="node" id="d2">\r
+ <default/>\r
+ </key>\r
+ <key for="node" id="d3" yfiles.type="nodegraphics"/>\r
+ <key attr.name="url" attr.type="string" for="edge" id="d4"/>\r
+ <key attr.name="description" attr.type="string" for="edge" id="d5">\r
+ <default/>\r
+ </key>\r
+ <key for="edge" id="d6" yfiles.type="edgegraphics"/>\r
+ <graph edgedefault="directed" id="G">\r
+ <node id="n0" yfiles.foldertype="group">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ProxyAutoBoundsNode>\r
+ <y:Realizers active="0">\r
+ <y:GroupNode>\r
+ <y:Geometry height="92.0" width="532.0" x="99.0" y="298.0"/>\r
+ <y:Fill color="#F5F5F5" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="node_width" backgroundColor="#EBEBEB" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="22.37646484375" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="532.0" x="0.0" y="0.0">mapping</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ <y:State closed="false" innerGraphDisplayEnabled="false"/>\r
+ <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>\r
+ <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="20" topF="20.0"/>\r
+ </y:GroupNode>\r
+ <y:GroupNode>\r
+ <y:Geometry height="80.0" width="100.0" x="-50.0" y="-30.0"/>\r
+ <y:Fill color="#CAECFF84" transparent="false"/>\r
+ <y:BorderStyle color="#666699" type="dotted" width="1.0"/>\r
+ <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="4.0" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="100.0" x="0.0" y="0.0"/>\r
+ <y:Shape type="roundrectangle"/>\r
+ <y:State closed="true" innerGraphDisplayEnabled="false"/>\r
+ <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>\r
+ <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>\r
+ </y:GroupNode>\r
+ </y:Realizers>\r
+ </y:ProxyAutoBoundsNode>\r
+ </data>\r
+ <graph edgedefault="directed" id="n0:">\r
+ <node id="n0::n0">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="513.0" y="333.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n1">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="507.0" y="339.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n2">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="319.5" y="333.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n3">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="313.5" y="339.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n4">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="126.0" y="333.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n5">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="120.0" y="339.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n6">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="114.0" y="345.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="89.3828125" x="6.80859375" y="5.6494140625">domain element</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n7">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="307.5" y="345.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="22.005859375" x="40.4970703125" y="5.6494140625">link</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n0::n8">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="501.0" y="345.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="80.716796875" x="11.1416015625" y="5.6494140625">range element</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <edge id="n0::e0" source="n0::n7" target="n0::n8">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ <edge id="n0::e1" source="n0::n7" target="n0::n6">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ </graph>\r
+ </node>\r
+ <node id="n1">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="313.5" y="426.58361904761904"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="49.5" y="13.0"/>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n2">\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="307.5" y="433.9028571428571"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="48.021484375" x="27.4892578125" y="5.6494140625">link type</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <edge id="e0" source="n0::n7" target="n2">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ </graph>\r
+ <data key="d0">\r
+ <y:Resources/>\r
+ </data>\r
+</graphml>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd">\r
+ <!--Created by yFiles for Java 2.7-->\r
+ <key for="graphml" id="d0" yfiles.type="resources"/>\r
+ <key attr.name="url" attr.type="string" for="node" id="d1"/>\r
+ <key attr.name="description" attr.type="string" for="node" id="d2">\r
+ <default/>\r
+ </key>\r
+ <key for="node" id="d3" yfiles.type="nodegraphics"/>\r
+ <key attr.name="url" attr.type="string" for="edge" id="d4"/>\r
+ <key attr.name="description" attr.type="string" for="edge" id="d5">\r
+ <default/>\r
+ </key>\r
+ <key for="edge" id="d6" yfiles.type="edgegraphics"/>\r
+ <graph edgedefault="directed" id="G">\r
+ <node id="n0">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="127.0" x="186.0" y="200.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="106.720703125" x="10.1396484375" y="5.6494140625">Intermediate model</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n1">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="80.0" y="315.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="55.369140625" x="23.8154296875" y="5.6494140625">Database</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <node id="n2">\r
+ <data key="d2"/>\r
+ <data key="d3">\r
+ <y:ShapeNode>\r
+ <y:Geometry height="30.0" width="103.0" x="320.0" y="315.0"/>\r
+ <y:Fill color="#FFFFFF" transparent="false"/>\r
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>\r
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="35.34765625" x="33.826171875" y="5.6494140625">Editor</y:NodeLabel>\r
+ <y:Shape type="rectangle"/>\r
+ </y:ShapeNode>\r
+ </data>\r
+ </node>\r
+ <edge id="e0" source="n1" target="n0">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="34.017578125" x="55.20320262079653" y="-51.8505859375">reads</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ <edge id="e1" source="n0" target="n2">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="56.01953125" x="57.00669661812162" y="33.1494140625">visualizes</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ <edge id="e2" source="n2" target="n1">\r
+ <data key="d6">\r
+ <y:PolyLineEdge>\r
+ <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>\r
+ <y:LineStyle color="#000000" type="line" width="1.0"/>\r
+ <y:Arrows source="none" target="standard"/>\r
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="48.68359375" x="-92.841796875" y="2.0">modifies</y:EdgeLabel>\r
+ <y:BendStyle smoothed="false"/>\r
+ </y:PolyLineEdge>\r
+ </data>\r
+ </edge>\r
+ </graph>\r
+ <data key="d0">\r
+ <y:Resources/>\r
+ </data>\r
+</graphml>\r
--- /dev/null
+package org.simantics.objmap.examples;\r
+\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.IMappingSchema;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedElement;\r
+import org.simantics.objmap.annotations.RelatedElements;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.objmap.schema.MappingSchemas;\r
+import org.simantics.objmap.schema.SimpleSchema;\r
+\r
+public class SysdynExample {\r
+\r
+ @GraphType("http://www.simantics.org/Sysdyn#Configuration")\r
+ static class Configuration {\r
+ @RelatedElements("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf")\r
+ Collection<Component> components; \r
+ }\r
+ \r
+ static abstract class Component { \r
+ }\r
+ \r
+ @GraphType("http://www.simantics.org/Sysdyn#Dependency")\r
+ static class Dependency extends Component {\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasTail")\r
+ Variable tail;\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasHead")\r
+ Auxiliary head;\r
+ }\r
+ \r
+ static abstract class Variable extends Component {\r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName")\r
+ String name;\r
+ }\r
+ \r
+ @GraphType("http://www.simantics.org/Sysdyn#Auxiliary")\r
+ static class Auxiliary extends Variable {\r
+ }\r
+ \r
+ public static IMappingSchema createSchema(ReadGraph g) throws DatabaseException, InstantiationException, IllegalAccessException {\r
+ SimpleSchema schema = new SimpleSchema();\r
+ schema.addLinkType(MappingSchemas.fromAnnotations(g, Configuration.class));\r
+ schema.addLinkType(MappingSchemas.fromAnnotations(g, Dependency.class));\r
+ schema.addLinkType(MappingSchemas.fromAnnotations(g, Auxiliary.class));\r
+ return schema;\r
+ } \r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+/**\r
+ * A generic function object that throws MappingExceptions.\r
+ * \r
+ * @author Hannu Niemistö\r
+ *\r
+ * @param <D> Domain of the function\r
+ * @param <R> Range of the function\r
+ */\r
+public interface IFunction<D, R> {\r
+ R get(D element) throws MappingException;\r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+\r
+/**\r
+ * Contains rules for how a link should be created and maintained.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface ILinkType extends IMappingRule {\r
+ /**\r
+ * Creates a domain element based on known range element.\r
+ */\r
+ Resource createDomainElement(WriteGraph g, Object rangeElement) throws MappingException;\r
+ \r
+ /**\r
+ * Creates a range element based on known domain element.\r
+ */\r
+ Object createRangeElement(ReadGraph g, Resource domainElement) throws MappingException;\r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+import java.util.Collection;\r
+import java.util.Set;\r
+\r
+import org.simantics.db.Disposable;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+\r
+/**\r
+ * A mapping consists of domain (a set of resources), range (a set of Java objects) and\r
+ * a set of links relating them. The mapping is used to propagate modifications of\r
+ * domain elements to range and vice versa. \r
+ * \r
+ * @see <a href="http://www.simantics.org/wiki/index.php/org.simantics.objmap_Manual#Concepts">Manual</a>\r
+ * \r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IMapping extends Disposable {\r
+\r
+ /**\r
+ * Returns the domain of the mapping. All set operations are supported.\r
+ * Adding a new domain element does not automatically create a link to it.\r
+ * Removal of a domain element removes also a link and the target element,\r
+ * but does not remove the element from the database.\r
+ */\r
+ Set<Resource> getDomain();\r
+\r
+ /**\r
+ * Returns the range of the mapping. All set operations are supported.\r
+ * Adding a new range element does not automatically create a link to it.\r
+ * Removal of a range element removes also a link and the domain element,\r
+ * but does not remove the domain element from the database.\r
+ */\r
+ Set<Object> getRange();\r
+\r
+ /**\r
+ * Updates all domain elements whose counterpart is modified and creates new\r
+ * domain elements for previously added range elements. Returns the\r
+ * collection of domain elements that were modified or created in the update\r
+ * process.\r
+ */\r
+ Collection<Resource> updateDomain(WriteGraph g) throws MappingException;\r
+\r
+ /**\r
+ * Updates all range elements whose counterpart is modified and creates new\r
+ * range elements for previously added domain elements. Returns the\r
+ * collection of range elements that were modified or created in the update\r
+ * process.\r
+ */\r
+ Collection<Object> updateRange(ReadGraph g) throws MappingException;\r
+\r
+ /**\r
+ * Returns the counterpart of a domain element or null if the element does\r
+ * not belong to the domain or does not have a link.\r
+ */\r
+ Object get(Resource domainElement);\r
+\r
+ /**\r
+ * Returns the counterpart of a range element or null if the element does\r
+ * not belong to the range or does not have a link.\r
+ */\r
+ Resource inverseGet(Object rangeElement);\r
+\r
+ /**\r
+ * A convenience method that adds a domain element to the mapping and\r
+ * immediately updates the mapping and returns the corresponding range\r
+ * element.\r
+ */\r
+ Object map(ReadGraph g, Resource domainElement) throws MappingException;\r
+\r
+ /**\r
+ * A convenience method that adds a range element to the mapping and\r
+ * immediately updates the mapping and returns the corresponding domain\r
+ * element.\r
+ */\r
+ Resource inverseMap(WriteGraph g, Object rangeElement)\r
+ throws MappingException;\r
+\r
+ /**\r
+ * Tells the mapping that the domain element has been modified.\r
+ */\r
+ void domainModified(Resource domainElement);\r
+\r
+ /**\r
+ * Tells the mapping that the range element has been modified.\r
+ */\r
+ void rangeModified(Object rangeElement);\r
+\r
+ /**\r
+ * Tells if some domain elements have been modified or added.\r
+ */\r
+ boolean isDomainModified();\r
+\r
+ /**\r
+ * Tells if some range elements have been modified or added.\r
+ */\r
+ boolean isRangeModified();\r
+\r
+ /**\r
+ * Returns a collection of domain elements which have been modified and also\r
+ * their counterparts in the mapping are modified. These elements are in\r
+ * conflict in the sense that the updating domain and range in different\r
+ * orders may produce different results.\r
+ */\r
+ Collection<Resource> getConflictingDomainElements();\r
+\r
+ /**\r
+ * Returns a collection of range elements which have been modified and also\r
+ * their counterparts in the mapping are modified. These elements are in\r
+ * conflict in the sense that the updating domain and range in different\r
+ * orders may produce different results.\r
+ */\r
+ Collection<Object> getConflictingRangeElements();\r
+\r
+ /**\r
+ * Adds a listener for domain and range modifications.\r
+ */\r
+ void addMappingListener(IMappingListener listener);\r
+\r
+ /**\r
+ * Removes a previously added listener.\r
+ */\r
+ void removeMappingListener(IMappingListener listener);\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+/**\r
+ * Listens modifications in a mapping.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IMappingListener {\r
+ /**\r
+ * Called when some domain element is modified or created\r
+ * and the mapping was previously up to date.\r
+ */\r
+ void domainModified();\r
+ \r
+ /**\r
+ * Called when some range element is modified or created\r
+ * and the mapping was previously up to date.\r
+ */\r
+ void rangeModified();\r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+\r
+/**\r
+ * A rule for how domain and range elements are related to each other. \r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IMappingRule {\r
+ /**\r
+ * Modifies the domain element so that it corresponds to the range element.\r
+ * @param g write transaction\r
+ * @param map unidirectional view of the current mapping\r
+ * @param domainElement the domain element that is updated\r
+ * @param rangeElement the range element that corresponds to the domain element\r
+ * @return true if the rule made some modifications\r
+ * @throws MappingException \r
+ */ \r
+ boolean updateDomain(WriteGraph g, IFunction<Object, Resource> map, Resource domainElement, Object rangeElement) throws MappingException;\r
+\r
+ /**\r
+ * Modifies the range element so that it corresponds to the domain element.\r
+ * @param g read transaction\r
+ * @param map unidirectional view of the current mapping\r
+ * @param domainElement the domain element that corresponds to the range element\r
+ * @param rangeElement the range element that is updated\r
+ * @return true if the rule made some modifications\r
+ * @throws MappingException\r
+ */\r
+ boolean updateRange(ReadGraph g, IFunction<Resource, Object> map, Resource domainElement, Object rangeElement) throws MappingException;\r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+\r
+/**\r
+ * Specifies the link types of new elements added to a mapping.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IMappingSchema {\r
+ /**\r
+ * @return Link type that should be used for the element.\r
+ */\r
+ ILinkType linkTypeOfDomainElement(ReadGraph g, Resource element) throws MappingException;\r
+ \r
+ /**\r
+ * @return Link type that should be used for the element.\r
+ */\r
+ ILinkType linkTypeOfRangeElement(Object element) throws MappingException;\r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+import org.simantics.db.exception.DatabaseException;\r
+\r
+/**\r
+ * An exception thrown for any error during mapping methods.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class MappingException extends DatabaseException {\r
+\r
+ private static final long serialVersionUID = -4026122899414272427L;\r
+\r
+ public MappingException() {\r
+ super();\r
+ }\r
+\r
+ public MappingException(String message, Throwable cause) {\r
+ super(message, cause);\r
+ }\r
+\r
+ public MappingException(String message) {\r
+ super(message);\r
+ }\r
+\r
+ public MappingException(Throwable cause) {\r
+ super(cause);\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap;\r
+\r
+import org.simantics.objmap.impl.Mapping;\r
+import org.simantics.objmap.impl.UnidirectionalMapping;\r
+\r
+/**\r
+ * Static utility methods for mappings. \r
+ * @author Hannu Niemistö\r
+ */\r
+public class Mappings {\r
+ private Mappings() {}\r
+ \r
+ /**\r
+ * Creates a new mapping based on the given mapping schema. \r
+ * The created mapping is not thread-safe and will not\r
+ * listen database changes automatically.\r
+ */\r
+ public static IMapping createWithoutListening(IMappingSchema schema) {\r
+ return new Mapping(schema, false);\r
+ }\r
+ \r
+ /**\r
+ * Creates a new mapping based on the given mapping schema. \r
+ * The created mapping is not thread-safe. It listens database\r
+ * changes automatically.\r
+ */\r
+ public static IMapping createWithListening(IMappingSchema schema) {\r
+ return new Mapping(schema, true);\r
+ }\r
+ \r
+ /**\r
+ * Creates a mapping that supports only the direction from domain to range.\r
+ * Does not listen the database.\r
+ */\r
+ public static IMapping createUnidirectional(IMappingSchema schema) {\r
+ return new UnidirectionalMapping(schema);\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target({ElementType.FIELD,ElementType.METHOD})\r
+public @interface Composition {\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+/**\r
+ * Specifies the domain type that the class corresponds to. \r
+ * @author Hannu Niemistö\r
+ */\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.TYPE) \r
+public @interface GraphType {\r
+ String value();\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+import org.simantics.objmap.annotations.factories.RelatedElementRuleFactory;\r
+import org.simantics.objmap.annotations.meta.HasFieldRuleFactory;\r
+\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.FIELD)\r
+@HasFieldRuleFactory(RelatedElementRuleFactory.class)\r
+public @interface RelatedElement {\r
+ String value();\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+import org.simantics.objmap.annotations.factories.RelatedElementsRuleFactory;\r
+import org.simantics.objmap.annotations.meta.HasFieldRuleFactory;\r
+\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.FIELD)\r
+@HasFieldRuleFactory(RelatedElementsRuleFactory.class)\r
+public @interface RelatedElements {\r
+ String value();\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+import org.simantics.objmap.annotations.factories.RelatedValueRuleFactory;\r
+import org.simantics.objmap.annotations.meta.HasFieldRuleFactory;\r
+\r
+/**\r
+ * Specifies a correspondence between a field and \r
+ * functional property.\r
+ * @author Hannu Niemistö\r
+ */\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.FIELD)\r
+@HasFieldRuleFactory(RelatedValueRuleFactory.class)\r
+public @interface RelatedValue {\r
+ String value();\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.factories;\r
+\r
+import org.simantics.db.Builtins;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+\r
+public class DataTypeUtils {\r
+ \r
+ public static Resource dataTypeOfClass(ReadGraph g, Class<?> clazz) {\r
+ Builtins b = g.getBuiltins();\r
+ if(clazz.equals(Double.class) || clazz.equals(double.class))\r
+ return b.Double;\r
+ else if(clazz.equals(String.class))\r
+ return b.String;\r
+ else if(clazz.equals(Integer.class) || clazz.equals(int.class))\r
+ return b.Integer;\r
+ else if(clazz.equals(Float.class) || clazz.equals(float.class))\r
+ return b.Float;\r
+ else if(clazz.equals(Boolean.class) || clazz.equals(boolean.class))\r
+ return b.Boolean;\r
+ else if(clazz.equals(Long.class) || clazz.equals(long.class))\r
+ return b.Long;\r
+ else if(clazz.equals(Byte.class) || clazz.equals(byte.class))\r
+ return b.Byte;\r
+ \r
+ else if(clazz.equals(double[].class))\r
+ return b.DoubleArray;\r
+ else if(clazz.equals(int[].class))\r
+ return b.IntegerArray;\r
+ else if(clazz.equals(byte[].class))\r
+ return b.ByteArray;\r
+ else if(clazz.equals(float[].class))\r
+ return b.FloatArray;\r
+ else if(clazz.equals(boolean[].class))\r
+ return b.BooleanArray;\r
+ else if(clazz.equals(String[].class))\r
+ return b.StringArray;\r
+ else if(clazz.equals(long[].class))\r
+ return b.LongArray;\r
+ else {\r
+ System.out.println("Couldn't find a data type for " + clazz);\r
+ return null;\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.factories;\r
+\r
+import java.lang.annotation.Annotation;\r
+import java.lang.reflect.Field;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.ResourceNotFoundException;\r
+import org.simantics.db.exception.ServiceException;\r
+import org.simantics.db.exception.ValidationException;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.annotations.RelatedElement;\r
+import org.simantics.objmap.rules.MappedElementRule;\r
+import org.simantics.objmap.rules.domain.RelatedObjectAccessor;\r
+import org.simantics.objmap.rules.factory.IFieldRuleFactory;\r
+import org.simantics.objmap.rules.range.FieldAccessor;\r
+\r
+public class RelatedElementRuleFactory implements IFieldRuleFactory {\r
+\r
+ @Override\r
+ public IMappingRule create(ReadGraph g, Annotation _annotation, Field field) throws ResourceNotFoundException, ValidationException, ServiceException {\r
+ RelatedElement annotation = (RelatedElement)_annotation;\r
+ return new MappedElementRule(\r
+ new RelatedObjectAccessor(g.getResourceByURI(annotation.value())),\r
+ new FieldAccessor<Object>(field)\r
+ );\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.factories;\r
+\r
+import java.lang.annotation.Annotation;\r
+import java.lang.reflect.Field;\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.ResourceNotFoundException;\r
+import org.simantics.db.exception.ServiceException;\r
+import org.simantics.db.exception.ValidationException;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.annotations.RelatedElements;\r
+import org.simantics.objmap.rules.MappedElementsRule;\r
+import org.simantics.objmap.rules.domain.RelatedObjectsAccessor;\r
+import org.simantics.objmap.rules.factory.IFieldRuleFactory;\r
+import org.simantics.objmap.rules.range.FieldAccessor;\r
+\r
+public class RelatedElementsRuleFactory implements IFieldRuleFactory {\r
+\r
+ @Override\r
+ public IMappingRule create(ReadGraph g, Annotation _annotation, Field field) throws ResourceNotFoundException, ValidationException, ServiceException {\r
+ RelatedElements annotation = (RelatedElements)_annotation;\r
+ return new MappedElementsRule(\r
+ new RelatedObjectsAccessor(g.getResourceByURI(annotation.value())),\r
+ new FieldAccessor<Collection<Object>>(field)\r
+ );\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.factories;\r
+\r
+import java.lang.annotation.Annotation;\r
+import java.lang.reflect.Field;\r
+\r
+import org.simantics.db.Builtins;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.ResourceNotFoundException;\r
+import org.simantics.db.exception.ServiceException;\r
+import org.simantics.db.exception.ValidationException;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.objmap.rules.ValueRule;\r
+import org.simantics.objmap.rules.domain.RelatedValueAccessor;\r
+import org.simantics.objmap.rules.factory.IFieldRuleFactory;\r
+import org.simantics.objmap.rules.range.FieldAccessor;\r
+\r
+public class RelatedValueRuleFactory implements IFieldRuleFactory {\r
+\r
+ @Override\r
+ public IMappingRule create(ReadGraph g, Annotation _annotation, Field field) throws ResourceNotFoundException, ValidationException, ServiceException {\r
+ RelatedValue annotation = (RelatedValue)_annotation;\r
+ Builtins b = g.getBuiltins();\r
+ return new ValueRule(\r
+ new RelatedValueAccessor(\r
+ g.getResourceByURI(annotation.value()), \r
+ DataTypeUtils.dataTypeOfClass(g, field.getType())\r
+ ),\r
+ new FieldAccessor<Object>(field)\r
+ );\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.meta;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+import org.simantics.objmap.rules.factory.IClassRuleFactory;\r
+\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.ANNOTATION_TYPE) \r
+public @interface HasClassRuleFactory {\r
+ Class<? extends IClassRuleFactory> value();\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.meta;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+import org.simantics.objmap.rules.factory.IFieldRuleFactory;\r
+\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.ANNOTATION_TYPE) \r
+public @interface HasFieldRuleFactory {\r
+ Class<? extends IFieldRuleFactory> value();\r
+}\r
--- /dev/null
+package org.simantics.objmap.annotations.meta;\r
+\r
+import java.lang.annotation.ElementType;\r
+import java.lang.annotation.Retention;\r
+import java.lang.annotation.RetentionPolicy;\r
+import java.lang.annotation.Target;\r
+\r
+import org.simantics.objmap.rules.factory.IMethodRuleFactory;\r
+\r
+@Retention(RetentionPolicy.RUNTIME)\r
+@Target(ElementType.ANNOTATION_TYPE) \r
+public @interface HasMethodRuleFactory {\r
+ Class<? extends IMethodRuleFactory> value();\r
+}\r
--- /dev/null
+/**\r
+ * \r
+ */\r
+package org.simantics.objmap.impl;\r
+\r
+import org.simantics.db.Resource;\r
+import org.simantics.objmap.ILinkType;\r
+\r
+/**\r
+ * An indication that the domain element corresponds to the range element\r
+ * in the mapping. The link type describes how source and target objects\r
+ * are updated. There are additionally flags for dirtiness of the link.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class Link {\r
+ public ILinkType type;\r
+ public Resource domainElement;\r
+ public Object rangeElement;\r
+ \r
+ public boolean domainModified = false;\r
+ public boolean rangeModified = false;\r
+ public boolean removed = false;\r
+ \r
+ public Link(ILinkType type, Resource domainElement, Object rangeElement) {\r
+ this.type = type;\r
+ this.domainElement = domainElement;\r
+ this.rangeElement = rangeElement; \r
+ } \r
+}
\ No newline at end of file
--- /dev/null
+package org.simantics.objmap.impl;\r
+\r
+import gnu.trove.THashMap;\r
+import gnu.trove.TObjectIdentityHashingStrategy;\r
+\r
+import java.util.AbstractSet;\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.ILinkType;\r
+import org.simantics.objmap.IMapping;\r
+import org.simantics.objmap.IMappingListener;\r
+import org.simantics.objmap.IMappingSchema;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * An implementation of IMapping. The class should not be created\r
+ * directly but using methods in Mappings.\r
+ * @see org.simantics.objmap.Mappings\r
+ * @author Hannu Niemistö\r
+ */\r
+public class Mapping implements IMapping {\r
+\r
+ private static final TObjectIdentityHashingStrategy<Object> IDENTITY_HASHING =\r
+ new TObjectIdentityHashingStrategy<Object>();\r
+ \r
+ IMappingSchema schema;\r
+ \r
+ THashMap<Resource, Link> domain = new THashMap<Resource, Link>();\r
+ THashMap<Object, Link> range = new THashMap<Object, Link>(IDENTITY_HASHING);\r
+ ArrayList<IMappingListener> listeners = new ArrayList<IMappingListener>();\r
+ \r
+ ArrayList<Link> modifiedDomainLinks = new ArrayList<Link>();\r
+ ArrayList<Link> modifiedRangeLinks = new ArrayList<Link>();\r
+ boolean disposed = false;\r
+ \r
+ boolean listensDomain; \r
+ \r
+ public Mapping(IMappingSchema schema, boolean listensDomain) {\r
+ this.schema = schema;\r
+ this.listensDomain = listensDomain;\r
+ }\r
+\r
+ private void removeLink(Link link) {\r
+ if(link.domainModified)\r
+ modifiedDomainLinks.remove(link);\r
+ if(link.rangeModified)\r
+ modifiedRangeLinks.remove(link);\r
+ link.removed = true;\r
+ }\r
+ \r
+ private void createDomain(WriteGraph g, Link link) throws MappingException {\r
+ ILinkType type = schema.linkTypeOfRangeElement(link.rangeElement);\r
+ Resource domainElement = type.createDomainElement(g, link.rangeElement);\r
+ \r
+ link.type = type;\r
+ link.domainElement = domainElement;\r
+ domain.put(domainElement, link);\r
+ }\r
+ \r
+ private void createRange(ReadGraph g, Link link) throws MappingException {\r
+ ILinkType type = schema.linkTypeOfDomainElement(g, link.domainElement); \r
+ Object rangeElement = type.createRangeElement(g, link.domainElement);\r
+ \r
+ link.type = type;\r
+ link.rangeElement = rangeElement;\r
+ range.put(rangeElement, link);\r
+ }\r
+ \r
+ Set<Resource> domainSet = new AbstractSet<Resource>() {\r
+\r
+ public boolean add(Resource e) {\r
+ if(domain.containsKey(e))\r
+ return false;\r
+ Link link = new Link(null, e, null);\r
+ domain.put(e, link);\r
+ modifiedDomainLinks.add(link);\r
+ return true;\r
+ }\r
+ \r
+ public boolean contains(Object o) {\r
+ return domain.contains(o);\r
+ }\r
+ \r
+ public boolean remove(Object o) {\r
+ Link link = domain.remove(o); \r
+ if(link == null)\r
+ return false;\r
+ removeLink(link);\r
+ if(link.rangeElement != null)\r
+ range.remove(link.rangeElement);\r
+ return true; \r
+ }\r
+ \r
+ @Override\r
+ public Iterator<Resource> iterator() {\r
+ // FIXME does not implement Iterator.remove correctly\r
+ return domain.keySet().iterator();\r
+ }\r
+\r
+ @Override\r
+ public int size() {\r
+ return domain.size();\r
+ }\r
+ \r
+ };\r
+ \r
+ Set<Object> rangeSet = new AbstractSet<Object>() {\r
+\r
+ public boolean add(Object e) {\r
+ if(range.containsKey(e))\r
+ return false;\r
+ Link link = new Link(null, null, e);\r
+ range.put(e, link);\r
+ modifiedRangeLinks.add(link);\r
+ return true;\r
+ }\r
+ \r
+ public boolean contains(Object o) {\r
+ return range.contains(o);\r
+ }\r
+ \r
+ public boolean remove(Object o) {\r
+ Link link = range.remove(o); \r
+ if(link == null)\r
+ return false;\r
+ removeLink(link);\r
+ if(link.domainElement != null)\r
+ domain.remove(link.domainElement);\r
+ return true;\r
+ }\r
+ \r
+ @Override\r
+ public Iterator<Object> iterator() {\r
+ // FIXME does not implement Iterator.remove correctly\r
+ return range.keySet().iterator();\r
+ }\r
+\r
+ @Override\r
+ public int size() {\r
+ return range.size();\r
+ }\r
+ \r
+ };\r
+ \r
+ class DomainToRange implements IFunction<Resource, Object> {\r
+\r
+ ReadGraph g;\r
+ \r
+ public DomainToRange(ReadGraph g) {\r
+ this.g = g;\r
+ }\r
+\r
+ @Override\r
+ public Object get(Resource element) throws MappingException {\r
+ Link link = domain.get(element);\r
+ if(link == null) {\r
+ ILinkType type = schema.linkTypeOfDomainElement(g, element);\r
+ Object rangeElement = type.createRangeElement(g, element);\r
+ \r
+ link = new Link(type, element, rangeElement);\r
+ domain.put(element, link); \r
+ range.put(rangeElement, link);\r
+ link.domainModified = true;\r
+ modifiedDomainLinks.add(link);\r
+ \r
+ return rangeElement; \r
+ }\r
+ else {\r
+ if(link.type == null) \r
+ createRange(g, link);\r
+ return link.rangeElement;\r
+ }\r
+ }\r
+ \r
+ };\r
+ \r
+ class RangeToDomain implements IFunction<Object, Resource> {\r
+\r
+ WriteGraph g;\r
+ \r
+ public RangeToDomain(WriteGraph g) {\r
+ this.g = g;\r
+ }\r
+ \r
+ @Override\r
+ public Resource get(Object element) throws MappingException {\r
+ Link link = range.get(element);\r
+ if(link == null) {\r
+ ILinkType type = schema.linkTypeOfRangeElement(element); \r
+ Resource domainElement = type.createDomainElement(g, element);\r
+ \r
+ link = new Link(type, domainElement, element);\r
+ domain.put(domainElement, link); \r
+ range.put(element, link);\r
+ link.rangeModified = true;\r
+ modifiedRangeLinks.add(link);\r
+ \r
+ return domainElement; \r
+ }\r
+ else {\r
+ if(link.type == null)\r
+ createDomain(g, link);\r
+ return link.domainElement;\r
+ }\r
+ }\r
+ \r
+ };\r
+ \r
+ @Override\r
+ public Set<Resource> getDomain() {\r
+ return domainSet;\r
+ }\r
+ \r
+ @Override\r
+ public Set<Object> getRange() {\r
+ return rangeSet;\r
+ }\r
+ \r
+ @Override\r
+ public Collection<Resource> updateDomain(WriteGraph g) throws MappingException {\r
+ RangeToDomain map = new RangeToDomain(g);\r
+ ArrayList<Resource> updated = new ArrayList<Resource>();\r
+ while(!modifiedRangeLinks.isEmpty()) {\r
+ Link link = modifiedRangeLinks.remove(modifiedRangeLinks.size()-1);\r
+ link.rangeModified = false;\r
+ if(link.domainModified) {\r
+ link.domainModified = false;\r
+ modifiedDomainLinks.remove(link);\r
+ }\r
+ \r
+ if(link.type == null) {\r
+ createDomain(g, link);\r
+ }\r
+ \r
+ if(link.type.updateDomain(g, map, link.domainElement, link.rangeElement))\r
+ updated.add(link.domainElement);\r
+ } \r
+ return updated;\r
+ }\r
+ \r
+ @Override\r
+ public Collection<Object> updateRange(ReadGraph g) throws MappingException {\r
+ DomainToRange map = new DomainToRange(g);\r
+ ArrayList<Object> updated = new ArrayList<Object>();\r
+ while(!modifiedDomainLinks.isEmpty()) {\r
+ Link link = modifiedDomainLinks.remove(modifiedDomainLinks.size()-1);\r
+ link.domainModified = false;\r
+ if(link.rangeModified) {\r
+ link.rangeModified = false;\r
+ modifiedRangeLinks.remove(link);\r
+ }\r
+ \r
+ if(link.type == null) {\r
+ createRange(g, link);\r
+ }\r
+ \r
+ if(listensDomain) {\r
+ RangeUpdateRequest request = new RangeUpdateRequest(link, map, this);\r
+ g.syncRequest(request, request);\r
+ // TODO check if really modified\r
+ updated.add(link.rangeElement);\r
+ }\r
+ else\r
+ if(link.type.updateRange(g, map, link.domainElement, link.rangeElement))\r
+ updated.add(link.rangeElement);\r
+ } \r
+ return updated;\r
+ }\r
+\r
+ @Override\r
+ public Object get(Resource domainElement) {\r
+ Link link = domain.get(domainElement);\r
+ if(link == null)\r
+ return null;\r
+ return link.rangeElement;\r
+ }\r
+\r
+ @Override\r
+ public Resource inverseGet(Object rangeElement) {\r
+ Link link = range.get(rangeElement);\r
+ if(link == null)\r
+ return null;\r
+ return link.domainElement;\r
+ }\r
+\r
+ @Override\r
+ public Resource inverseMap(WriteGraph g, Object rangeElement) throws MappingException {\r
+ getRange().add(rangeElement);\r
+ updateDomain(g);\r
+ return inverseGet(rangeElement);\r
+ }\r
+\r
+ @Override\r
+ public Object map(ReadGraph g, Resource domainElement) throws MappingException {\r
+ getDomain().add(domainElement);\r
+ updateRange(g);\r
+ return get(domainElement);\r
+ }\r
+\r
+ void domainModified(Link link) {\r
+ if(!link.domainModified) {\r
+ link.domainModified = true;\r
+ modifiedDomainLinks.add(link);\r
+ if(modifiedDomainLinks.size() == 1) {\r
+ for(IMappingListener listener : listeners)\r
+ listener.domainModified();\r
+ }\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public void domainModified(Resource domainElement) {\r
+ Link link = domain.get(domainElement);\r
+ if(link != null)\r
+ domainModified(link);\r
+ }\r
+\r
+ void rangeModified(Link link) {\r
+ if(!link.rangeModified) {\r
+ link.rangeModified = true;\r
+ modifiedRangeLinks.add(link);\r
+ if(modifiedRangeLinks.size() == 1) {\r
+ for(IMappingListener listener : listeners)\r
+ listener.rangeModified();\r
+ }\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public void rangeModified(Object rangeElement) {\r
+ Link link = range.get(rangeElement);\r
+ if(link != null)\r
+ rangeModified(link);\r
+ }\r
+\r
+ @Override\r
+ public boolean isDomainModified() {\r
+ return !modifiedDomainLinks.isEmpty();\r
+ }\r
+\r
+ @Override\r
+ public boolean isRangeModified() {\r
+ return !modifiedRangeLinks.isEmpty();\r
+ }\r
+\r
+ @Override\r
+ public void addMappingListener(IMappingListener listener) {\r
+ listeners.add(listener);\r
+ }\r
+\r
+ @Override\r
+ public void removeMappingListener(IMappingListener listener) {\r
+ listeners.remove(listener); \r
+ }\r
+\r
+ @Override\r
+ public Collection<Resource> getConflictingDomainElements() {\r
+ ArrayList<Resource> result = new ArrayList<Resource>();\r
+ if(modifiedDomainLinks.size() < modifiedRangeLinks.size()) {\r
+ for(Link link : modifiedDomainLinks)\r
+ if(link.rangeModified)\r
+ result.add(link.domainElement);\r
+ }\r
+ else {\r
+ for(Link link : modifiedRangeLinks)\r
+ if(link.domainModified)\r
+ result.add(link.domainElement);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public Collection<Object> getConflictingRangeElements() {\r
+ ArrayList<Object> result = new ArrayList<Object>();\r
+ if(modifiedDomainLinks.size() < modifiedRangeLinks.size()) {\r
+ for(Link link : modifiedDomainLinks)\r
+ if(link.rangeModified)\r
+ result.add(link.rangeElement);\r
+ }\r
+ else {\r
+ for(Link link : modifiedRangeLinks)\r
+ if(link.domainModified)\r
+ result.add(link.rangeElement);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public void dispose() {\r
+ disposed = true;\r
+ }\r
+ \r
+ public boolean isDisposed() {\r
+ return disposed;\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap.impl;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.procedure.SyncListener;\r
+import org.simantics.db.request.Read;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.MappingException;\r
+\r
+public class RangeUpdateRequest implements Read<Boolean>, SyncListener<Boolean> {\r
+\r
+ Link link;\r
+ /*\r
+ * Note that this map uses a read request that it has got from caller and \r
+ * not the one that is used in updateRange. This is intentional.\r
+ */\r
+ IFunction<Resource, Object> map; // map==null is used to flag that request is performed once\r
+ Mapping mapping; // mapping==null is used as a flag the request disposed\r
+ \r
+ public RangeUpdateRequest(Link link, IFunction<Resource, Object> map, Mapping mapping) {\r
+ this.link = link;\r
+ this.map = map;\r
+ this.mapping = mapping;\r
+ }\r
+\r
+ @Override\r
+ public Boolean perform(ReadGraph g) throws DatabaseException {\r
+ if(map != null) {\r
+ link.type.updateRange(g, map, link.domainElement, link.rangeElement);\r
+ map = null;\r
+ return Boolean.TRUE;\r
+ }\r
+ else if(mapping != null) {\r
+ mapping.domainModified(link);\r
+ mapping = null;\r
+ return Boolean.FALSE;\r
+ }\r
+ else\r
+ return null;\r
+ }\r
+ \r
+ @Override\r
+ public void exception(ReadGraph graph, Throwable throwable)\r
+ throws DatabaseException {\r
+ if(throwable instanceof DatabaseException)\r
+ throw (DatabaseException)throwable;\r
+ else\r
+ throw new MappingException(throwable);\r
+ }\r
+\r
+ @Override\r
+ public void execute(ReadGraph graph, Boolean result)\r
+ throws DatabaseException { \r
+ }\r
+\r
+ @Override\r
+ public boolean isDisposed() {\r
+ return mapping == null || link.removed || mapping.isDisposed();\r
+ }\r
+ \r
+ \r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap.impl;\r
+\r
+import gnu.trove.THashMap;\r
+import gnu.trove.TObjectIdentityHashingStrategy;\r
+\r
+import java.util.AbstractSet;\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+import java.util.Iterator;\r
+import java.util.Set;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.ILinkType;\r
+import org.simantics.objmap.IMapping;\r
+import org.simantics.objmap.IMappingListener;\r
+import org.simantics.objmap.IMappingSchema;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * An implementation of IMapping. The class should not be created\r
+ * directly but using methods in Mappings.\r
+ * @see org.simantics.objmap.Mappings\r
+ * @author Hannu Niemistö\r
+ */\r
+public class UnidirectionalMapping implements IMapping {\r
+\r
+ private static final TObjectIdentityHashingStrategy<Object> IDENTITY_HASHING =\r
+ new TObjectIdentityHashingStrategy<Object>();\r
+ \r
+ IMappingSchema schema;\r
+ \r
+ THashMap<Resource, Link> domain = new THashMap<Resource, Link>();\r
+ ArrayList<IMappingListener> listeners = new ArrayList<IMappingListener>();\r
+ \r
+ ArrayList<Link> modifiedDomainLinks = new ArrayList<Link>();\r
+ boolean disposed = false;\r
+ \r
+ public UnidirectionalMapping(IMappingSchema schema) {\r
+ this.schema = schema;\r
+ }\r
+\r
+ private void removeLink(Link link) {\r
+ if(link.domainModified)\r
+ modifiedDomainLinks.remove(link);\r
+ link.removed = true;\r
+ }\r
+ \r
+ private void createDomain(WriteGraph g, Link link) throws MappingException {\r
+ ILinkType type = schema.linkTypeOfRangeElement(link.rangeElement);\r
+ Resource domainElement = type.createDomainElement(g, link.rangeElement);\r
+ \r
+ link.type = type;\r
+ link.domainElement = domainElement;\r
+ domain.put(domainElement, link);\r
+ }\r
+ \r
+ private void createRange(ReadGraph g, Link link) throws MappingException {\r
+ ILinkType type = schema.linkTypeOfDomainElement(g, link.domainElement); \r
+ Object rangeElement = type.createRangeElement(g, link.domainElement);\r
+ \r
+ link.type = type;\r
+ link.rangeElement = rangeElement;\r
+ }\r
+ \r
+ Set<Resource> domainSet = new AbstractSet<Resource>() {\r
+\r
+ public boolean add(Resource e) {\r
+ if(domain.containsKey(e))\r
+ return false;\r
+ Link link = new Link(null, e, null);\r
+ domain.put(e, link);\r
+ modifiedDomainLinks.add(link);\r
+ return true;\r
+ }\r
+ \r
+ public boolean contains(Object o) {\r
+ return domain.contains(o);\r
+ }\r
+ \r
+ public boolean remove(Object o) {\r
+ Link link = domain.remove(o); \r
+ if(link == null)\r
+ return false;\r
+ removeLink(link);\r
+ return true; \r
+ }\r
+ \r
+ @Override\r
+ public Iterator<Resource> iterator() {\r
+ // FIXME does not implement Iterator.remove correctly\r
+ return domain.keySet().iterator();\r
+ }\r
+\r
+ @Override\r
+ public int size() {\r
+ return domain.size();\r
+ }\r
+ \r
+ };\r
+ \r
+ class DomainToRange implements IFunction<Resource, Object> {\r
+\r
+ ReadGraph g;\r
+ \r
+ public DomainToRange(ReadGraph g) {\r
+ this.g = g;\r
+ }\r
+\r
+ @Override\r
+ public Object get(Resource element) throws MappingException {\r
+ Link link = domain.get(element);\r
+ if(link == null) {\r
+ ILinkType type = schema.linkTypeOfDomainElement(g, element);\r
+ Object rangeElement = type.createRangeElement(g, element);\r
+ \r
+ link = new Link(type, element, rangeElement);\r
+ domain.put(element, link); \r
+ link.domainModified = true;\r
+ modifiedDomainLinks.add(link);\r
+ \r
+ return rangeElement; \r
+ }\r
+ else {\r
+ if(link.type == null) \r
+ createRange(g, link);\r
+ return link.rangeElement;\r
+ }\r
+ }\r
+ \r
+ };\r
+ \r
+ @Override\r
+ public Set<Resource> getDomain() {\r
+ return domainSet;\r
+ }\r
+ \r
+ @Override\r
+ public Set<Object> getRange() {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+ \r
+ @Override\r
+ public Collection<Resource> updateDomain(WriteGraph g) throws MappingException {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+ \r
+ @Override\r
+ public Collection<Object> updateRange(ReadGraph g) throws MappingException {\r
+ DomainToRange map = new DomainToRange(g);\r
+ ArrayList<Object> updated = new ArrayList<Object>();\r
+ while(!modifiedDomainLinks.isEmpty()) {\r
+ Link link = modifiedDomainLinks.remove(modifiedDomainLinks.size()-1);\r
+ link.domainModified = false; \r
+ if(link.type == null) {\r
+ createRange(g, link);\r
+ }\r
+ \r
+ link.type.updateRange(g, map, link.domainElement, link.rangeElement);\r
+ updated.add(link.rangeElement);\r
+ } \r
+ return updated;\r
+ }\r
+\r
+ @Override\r
+ public Object get(Resource domainElement) {\r
+ Link link = domain.get(domainElement);\r
+ if(link == null)\r
+ return null;\r
+ return link.rangeElement;\r
+ }\r
+\r
+ @Override\r
+ public Resource inverseGet(Object rangeElement) {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+\r
+ @Override\r
+ public Resource inverseMap(WriteGraph g, Object rangeElement) throws MappingException {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+\r
+ @Override\r
+ public Object map(ReadGraph g, Resource domainElement) throws MappingException {\r
+ getDomain().add(domainElement);\r
+ updateRange(g);\r
+ return get(domainElement);\r
+ }\r
+\r
+ void domainModified(Link link) {\r
+ if(!link.domainModified) {\r
+ link.domainModified = true;\r
+ modifiedDomainLinks.add(link);\r
+ if(modifiedDomainLinks.size() == 1) {\r
+ for(IMappingListener listener : listeners)\r
+ listener.domainModified();\r
+ }\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public void domainModified(Resource domainElement) {\r
+ Link link = domain.get(domainElement);\r
+ if(link != null)\r
+ domainModified(link);\r
+ }\r
+\r
+ @Override\r
+ public boolean isDomainModified() {\r
+ return !modifiedDomainLinks.isEmpty();\r
+ }\r
+\r
+ @Override\r
+ public boolean isRangeModified() {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+\r
+ @Override\r
+ public void addMappingListener(IMappingListener listener) {\r
+ listeners.add(listener);\r
+ }\r
+\r
+ @Override\r
+ public void removeMappingListener(IMappingListener listener) {\r
+ listeners.remove(listener); \r
+ }\r
+\r
+ @Override\r
+ public Collection<Resource> getConflictingDomainElements() {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+\r
+ @Override\r
+ public Collection<Object> getConflictingRangeElements() {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+\r
+ @Override\r
+ public void dispose() {\r
+ disposed = true;\r
+ }\r
+ \r
+ public boolean isDisposed() {\r
+ return disposed;\r
+ }\r
+\r
+ @Override\r
+ public void rangeModified(Object rangeElement) {\r
+ throw new UnsupportedOperationException();\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap.rules;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.MappingException;\r
+import org.simantics.objmap.rules.domain.IDomainAccessor;\r
+import org.simantics.objmap.rules.range.IRangeAccessor;\r
+\r
+/**\r
+ * A rule that synchronizes collection of elements between\r
+ * domain and range accessors. Elements are mapped from\r
+ * between domain and range during the synchronization.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class MappedElementRule implements IMappingRule {\r
+ IDomainAccessor<Resource> domainAccessor;\r
+ IRangeAccessor<Object> rangeAccessor;\r
+ \r
+ public MappedElementRule(IDomainAccessor<Resource> domainAccessor,\r
+ IRangeAccessor<Object> rangeAccessor) {\r
+ this.domainAccessor = domainAccessor;\r
+ this.rangeAccessor = rangeAccessor;\r
+ }\r
+\r
+ @Override\r
+ public boolean updateDomain(WriteGraph g, IFunction<Object, Resource> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ Object value = rangeAccessor.get(rangeElement);\r
+ Resource mappedValue = value == null ? null : map.get(value);\r
+ return domainAccessor.set(g, domainElement, mappedValue);\r
+ }\r
+\r
+ @Override\r
+ public boolean updateRange(ReadGraph g, IFunction<Resource, Object> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ Resource value = domainAccessor.get(g, domainElement);\r
+ Object mappedValue = value == null ? null : map.get(value);\r
+ return rangeAccessor.set(rangeElement, mappedValue);\r
+ } \r
+}\r
--- /dev/null
+package org.simantics.objmap.rules;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.MappingException;\r
+import org.simantics.objmap.rules.domain.IDomainAccessor;\r
+import org.simantics.objmap.rules.range.IRangeAccessor;\r
+\r
+/**\r
+ * A rule that synchronizes collection of elements between\r
+ * domain and range accessors. Elements are mapped from\r
+ * between domain and range during the synchronization.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class MappedElementsRule implements IMappingRule {\r
+ IDomainAccessor<Collection<Resource>> domainAccessor;\r
+ IRangeAccessor<Collection<Object>> rangeAccessor;\r
+ \r
+ public MappedElementsRule(IDomainAccessor<Collection<Resource>> domainAccessor,\r
+ IRangeAccessor<Collection<Object>> rangeAccessor) {\r
+ this.domainAccessor = domainAccessor;\r
+ this.rangeAccessor = rangeAccessor;\r
+ }\r
+\r
+ @Override\r
+ public boolean updateDomain(WriteGraph g, IFunction<Object, Resource> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ Collection<Object> value = rangeAccessor.get(rangeElement);\r
+ ArrayList<Resource> mappedValue = new ArrayList<Resource>(value.size());\r
+ for(Object obj : value)\r
+ mappedValue.add(map.get(obj));\r
+ return domainAccessor.set(g, domainElement, mappedValue);\r
+ }\r
+\r
+ @Override\r
+ public boolean updateRange(ReadGraph g, IFunction<Resource, Object> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ Collection<Resource> value = domainAccessor.get(g, domainElement);\r
+ ArrayList<Object> mappedValue = new ArrayList<Object>(value.size());\r
+ for(Resource r : value)\r
+ mappedValue.add(map.get(r));\r
+ return rangeAccessor.set(rangeElement, mappedValue);\r
+ } \r
+}\r
--- /dev/null
+package org.simantics.objmap.rules;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.MappingException;\r
+import org.simantics.objmap.rules.domain.IDomainAccessor;\r
+import org.simantics.objmap.rules.range.IRangeAccessor;\r
+\r
+/**\r
+ * A rule that synchronizes values between domain and\r
+ * range accessors.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class ValueRule implements IMappingRule {\r
+ IDomainAccessor<Object> domainAccessor;\r
+ IRangeAccessor<Object> rangeAccessor;\r
+ \r
+ public ValueRule(IDomainAccessor<Object> domainAccessor,\r
+ IRangeAccessor<Object> rangeAccessor) {\r
+ this.domainAccessor = domainAccessor;\r
+ this.rangeAccessor = rangeAccessor;\r
+ }\r
+\r
+ @Override\r
+ public boolean updateDomain(WriteGraph g, IFunction<Object, Resource> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ Object value = rangeAccessor.get(rangeElement);\r
+ return domainAccessor.set(g, domainElement, value);\r
+ }\r
+\r
+ @Override\r
+ public boolean updateRange(ReadGraph g, IFunction<Resource, Object> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ Object value = domainAccessor.get(g, domainElement);\r
+ return rangeAccessor.set(rangeElement, value);\r
+ } \r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.domain;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * Provides access to some property of domain elements.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IDomainAccessor<T> {\r
+ T get(ReadGraph g, Resource element) throws MappingException;\r
+ boolean set(WriteGraph g, Resource element, T value) throws MappingException;\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.domain;\r
+\r
+import java.util.Arrays;\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+\r
+/**\r
+ * Static utility methods for rule implementations.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class MappingUtils {\r
+\r
+ /**\r
+ * Adds and removes statements to/from the database so that <code>objects</code>\r
+ * will be exactly the objects connected to <code>subject</code> by <code>predicate</code>.\r
+ * Returns true if the method made modifications to the database.\r
+ */\r
+ public static boolean synchronizeStatements(WriteGraph g, Resource subject, Resource predicate, Resource[] objects) \r
+ throws DatabaseException {\r
+ Collection<Resource> currentObjects0 = g.getObjects(subject, predicate);\r
+ Resource[] currentObjects = currentObjects0.toArray(new Resource[currentObjects0.size()]);\r
+ \r
+ Arrays.sort(objects);\r
+ Arrays.sort(currentObjects);\r
+ \r
+ boolean modified = false;\r
+ int i=0, j=0; \r
+ while(true) {\r
+ int cmp = currentObjects[i].compareTo(objects[j]);\r
+ if(cmp < 0) {\r
+ g.deny(subject, predicate, currentObjects[i]);\r
+ modified = true;\r
+ ++i;\r
+ if(i >= currentObjects.length)\r
+ break;\r
+ }\r
+ else if(cmp > 0) {\r
+ g.claim(subject, predicate, objects[j]);\r
+ modified = true;\r
+ ++j;\r
+ if(j >= objects.length)\r
+ break;\r
+ }\r
+ else {\r
+ ++i; ++j;\r
+ if(i >= currentObjects.length)\r
+ break;\r
+ if(j >= objects.length)\r
+ break;\r
+ }\r
+ }\r
+ while(i < currentObjects.length) {\r
+ g.deny(subject, predicate, currentObjects[i]);\r
+ modified = true;\r
+ ++i;\r
+ }\r
+ while(j < objects.length) {\r
+ g.claim(subject, predicate, objects[j]);\r
+ modified = true;\r
+ ++j;\r
+ }\r
+ return modified;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.domain;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * Accesses a resource attached to the element by given functional relation.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class RelatedObjectAccessor implements IDomainAccessor<Resource> {\r
+\r
+ Resource relation;\r
+ \r
+ public RelatedObjectAccessor(Resource relation) {\r
+ this.relation = relation;\r
+ }\r
+\r
+ @Override\r
+ public Resource get(ReadGraph g, Resource element) throws MappingException {\r
+ try {\r
+ return g.getPossibleObject(element, relation);\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public boolean set(WriteGraph g, Resource element, Resource value)\r
+ throws MappingException {\r
+ try {\r
+ Resource resource = g.getPossibleObject(element, relation);\r
+ if(resource == null) {\r
+ if(value == null)\r
+ return false;\r
+ g.claim(element, relation, value);\r
+ return true;\r
+ }\r
+ else if(resource.equals(value))\r
+ return false;\r
+ else {\r
+ g.deny(element, relation);\r
+ if(value != null)\r
+ g.claim(element, relation, value);\r
+ return true;\r
+ }\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ \r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.domain;\r
+\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * Accesses the set of objects attached to the element by the given relation.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class RelatedObjectsAccessor implements IDomainAccessor<Collection<Resource>> {\r
+\r
+ Resource relation;\r
+\r
+ public RelatedObjectsAccessor(Resource relation) {\r
+ this.relation = relation;\r
+ }\r
+\r
+ @Override\r
+ public Collection<Resource> get(ReadGraph g, Resource element) throws MappingException {\r
+ try {\r
+ return g.getObjects(element, relation);\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public boolean set(WriteGraph g, Resource element, Collection<Resource> value)\r
+ throws MappingException {\r
+ try {\r
+ return MappingUtils.synchronizeStatements(g, element, relation, value.toArray(new Resource[value.size()]));\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ \r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.domain;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * Accesses a value attached to the element by given functional relation.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class RelatedValueAccessor implements IDomainAccessor<Object> {\r
+\r
+ Resource relation;\r
+ Resource valueType;\r
+\r
+ public RelatedValueAccessor(Resource relation, Resource valueType) {\r
+ this.relation = relation;\r
+ this.valueType = valueType;\r
+ }\r
+\r
+ @Override\r
+ public Object get(ReadGraph g, Resource element) throws MappingException {\r
+ try {\r
+ Resource valueResource = g.getPossibleObject(element, relation);\r
+ if(valueResource == null)\r
+ return null;\r
+ return g.getValue(valueResource);\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+ \r
+ @Override\r
+ public boolean set(WriteGraph g, Resource element, Object value)\r
+ throws MappingException {\r
+ try {\r
+ Resource valueResource = g.getPossibleObject(element, relation);\r
+ if(valueResource == null) {\r
+ if(value == null)\r
+ return false;\r
+ valueResource = g.newResource();\r
+ g.claim(valueResource, g.getBuiltins().InstanceOf, \r
+ valueType);\r
+ g.claim(element, relation, valueResource);\r
+ g.claimValue(valueResource, value); \r
+ return true;\r
+ }\r
+ else {\r
+ if(value == null) {\r
+ g.deny(valueResource);\r
+ return true;\r
+ } \r
+ Object currentValue = g.getValue(valueResource);\r
+ if(currentValue.equals(value))\r
+ return false;\r
+ g.claimValue(valueResource, value);\r
+ return true;\r
+ }\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ \r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.factory;\r
+\r
+import java.lang.annotation.Annotation;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.IMappingRule;\r
+\r
+public interface IClassRuleFactory {\r
+ IMappingRule create(ReadGraph g, Annotation annotation, Class<?> clazz) throws DatabaseException;\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.factory;\r
+\r
+import java.lang.annotation.Annotation;\r
+import java.lang.reflect.Field;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.IMappingRule;\r
+\r
+public interface IFieldRuleFactory {\r
+ IMappingRule create(ReadGraph g, Annotation annotation, Field field) throws DatabaseException;\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.factory;\r
+\r
+import java.lang.annotation.Annotation;\r
+import java.lang.reflect.Method;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.IMappingRule;\r
+\r
+public interface IMethodRuleFactory {\r
+ IMappingRule create(ReadGraph g, Annotation annotation, Method method) throws DatabaseException;\r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.range;\r
+\r
+import java.lang.reflect.Field;\r
+\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * Accesses the given field of the element.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class FieldAccessor<T> implements IRangeAccessor<T> {\r
+ Field field;\r
+\r
+ public FieldAccessor(Field field) {\r
+ this.field = field;\r
+ }\r
+\r
+ @Override\r
+ public T get(Object element) throws MappingException {\r
+ try {\r
+ return (T)field.get(element);\r
+ } catch (IllegalArgumentException e) {\r
+ throw new MappingException(e);\r
+ } catch (IllegalAccessException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public boolean set(Object element, T value) throws MappingException {\r
+ try {\r
+ Object currentValue = field.get(element);\r
+ if(currentValue == null ? value == null : currentValue.equals(value))\r
+ return false;\r
+ field.set(element, value);\r
+ return true;\r
+ } catch (IllegalArgumentException e) {\r
+ throw new MappingException(e);\r
+ } catch (IllegalAccessException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ } \r
+}\r
--- /dev/null
+package org.simantics.objmap.rules.range;\r
+\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * Provides access to some property of range elements.\r
+ * @author Hannu Niemistö\r
+ */\r
+public interface IRangeAccessor<T> {\r
+ T get(Object element) throws MappingException;\r
+ boolean set(Object element, T value) throws MappingException;\r
+}\r
--- /dev/null
+package org.simantics.objmap.schema;\r
+\r
+import java.lang.annotation.Annotation;\r
+import java.lang.reflect.Field;\r
+import java.lang.reflect.Method;\r
+import java.util.ArrayList;\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.objmap.annotations.meta.HasClassRuleFactory;\r
+import org.simantics.objmap.annotations.meta.HasFieldRuleFactory;\r
+import org.simantics.objmap.annotations.meta.HasMethodRuleFactory;\r
+\r
+/**\r
+ * Static utility methods for mapping schemas\r
+ * @author Hannu Niemistö\r
+ */\r
+public class MappingSchemas {\r
+ \r
+ /**\r
+ * Creates a new SimpleLinkType based on the annotations in the given class.\r
+ * @throws IllegalAccessException \r
+ * @throws InstantiationException \r
+ * @see GraphType\r
+ * @see RelatedValue\r
+ */\r
+ public static SimpleLinkType fromAnnotations(ReadGraph g, Class<?> clazz) throws DatabaseException, InstantiationException, IllegalAccessException {\r
+ GraphType graphType = clazz.getAnnotation(GraphType.class);\r
+ \r
+ ArrayList<IMappingRule> rules = new ArrayList<IMappingRule>();\r
+ collectRulesFromAnnotations(g, clazz, rules);\r
+ \r
+ return new SimpleLinkType(\r
+ g.getResourceByURI(graphType.value()), \r
+ clazz, rules); \r
+ }\r
+ \r
+ public static void collectRulesFromAnnotations(ReadGraph g, Class<?> clazz, Collection<IMappingRule> rules) throws DatabaseException, InstantiationException, IllegalAccessException {\r
+ Class<?> superclass = clazz.getSuperclass();\r
+ if(superclass != null)\r
+ collectRulesFromAnnotations(g, superclass, rules);\r
+ \r
+ for(Annotation annotation : clazz.getAnnotations()) {\r
+ HasClassRuleFactory factory = \r
+ annotation.annotationType().getAnnotation(HasClassRuleFactory.class);\r
+ if(factory != null) {\r
+ rules.add(factory.value().newInstance()\r
+ .create(g, annotation, clazz));\r
+ }\r
+ }\r
+\r
+ for(Field f : clazz.getDeclaredFields()) {\r
+ f.setAccessible(true);\r
+\r
+ for(Annotation annotation : f.getAnnotations()) {\r
+ HasFieldRuleFactory factory = \r
+ annotation.annotationType().getAnnotation(HasFieldRuleFactory.class);\r
+ if(factory != null) {\r
+ rules.add(factory.value().newInstance()\r
+ .create(g, annotation, f));\r
+ }\r
+ }\r
+ }\r
+\r
+ for(Method m : clazz.getDeclaredMethods()) {\r
+ m.setAccessible(true);\r
+\r
+ for(Annotation annotation : m.getAnnotations()) {\r
+ HasMethodRuleFactory factory = \r
+ annotation.annotationType().getAnnotation(HasMethodRuleFactory.class);\r
+ if(factory != null) {\r
+ rules.add(factory.value().newInstance()\r
+ .create(g, annotation, m));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.objmap.schema;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.objmap.IFunction;\r
+import org.simantics.objmap.ILinkType;\r
+import org.simantics.objmap.IMappingRule;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * A link type that is associated with single domain and range type (class).\r
+ * SimpleLinkType is composed of simpler rules whose combination determines\r
+ * its update policy.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class SimpleLinkType implements ILinkType {\r
+ \r
+ Resource domainType;\r
+ Class<?> rangeType;\r
+ ArrayList<IMappingRule> rules;\r
+ \r
+ public SimpleLinkType(Resource domainType, Class<?> rangeType,\r
+ ArrayList<IMappingRule> rules) {\r
+ this.domainType = domainType;\r
+ this.rangeType = rangeType;\r
+ this.rules = rules;\r
+ }\r
+\r
+ public SimpleLinkType(Resource domainType, Class<?> rangeType) {\r
+ this(domainType, rangeType, new ArrayList<IMappingRule>());\r
+ }\r
+\r
+ /**\r
+ * Adds a new rule to this link type that is enforced\r
+ * during updates.\r
+ */\r
+ public void addRule(IMappingRule rule) {\r
+ rules.add(rule);\r
+ }\r
+ \r
+ @Override\r
+ public Resource createDomainElement(WriteGraph g, Object rangeElement)\r
+ throws MappingException {\r
+ try {\r
+ Resource result = g.newResource();\r
+ g.claim(result, g.getBuiltins().InstanceOf, domainType);\r
+ return result;\r
+ } catch(DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+ @Override\r
+ public Object createRangeElement(ReadGraph g, Resource domainElement)\r
+ throws MappingException {\r
+ try {\r
+ return rangeType.newInstance();\r
+ } catch (InstantiationException e) {\r
+ throw new MappingException(e);\r
+ } catch (IllegalAccessException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+ @Override\r
+ public boolean updateDomain(WriteGraph g, IFunction<Object, Resource> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ boolean updated = false;\r
+ for(IMappingRule rule : rules)\r
+ updated |= rule.updateDomain(g, map, domainElement, rangeElement);\r
+ return updated;\r
+ }\r
+ @Override\r
+ public boolean updateRange(ReadGraph g, IFunction<Resource, Object> map,\r
+ Resource domainElement, Object rangeElement)\r
+ throws MappingException {\r
+ boolean updated = false;\r
+ for(IMappingRule rule : rules)\r
+ updated |= rule.updateRange(g, map, domainElement, rangeElement);\r
+ return updated;\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.objmap.schema;\r
+\r
+import gnu.trove.THashMap;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.utils.direct.GraphUtils;\r
+import org.simantics.objmap.ILinkType;\r
+import org.simantics.objmap.IMappingSchema;\r
+import org.simantics.objmap.MappingException;\r
+\r
+/**\r
+ * An implementation of IMappingSchema that contains\r
+ * only SimpleLinkTypes. The link type of any domain\r
+ * element is based solely on its type in database and\r
+ * the link type of any range element is based on its class.\r
+ * @author Hannu Niemistö\r
+ */\r
+public class SimpleSchema implements IMappingSchema {\r
+\r
+ THashMap<Resource, SimpleLinkType> domainLinkTypes = \r
+ new THashMap<Resource, SimpleLinkType>();\r
+ THashMap<Class<?>, SimpleLinkType> rangeLinkTypes = \r
+ new THashMap<Class<?>, SimpleLinkType>();\r
+ \r
+ public void addLinkType(SimpleLinkType linkType) {\r
+ domainLinkTypes.put(linkType.domainType, linkType);\r
+ rangeLinkTypes.put(linkType.rangeType, linkType);\r
+ }\r
+ \r
+ @Override\r
+ public ILinkType linkTypeOfDomainElement(ReadGraph g, Resource element) throws MappingException { \r
+ try {\r
+ ILinkType type = domainLinkTypes.get(\r
+ g.getSingleObject(element, g.getBuiltins().InstanceOf));\r
+ if(type == null) \r
+ throw new MappingException("Didn't find a link type for " +\r
+ GraphUtils.getReadableName(g, element) + "."\r
+ );\r
+ return type;\r
+ } catch (DatabaseException e) {\r
+ throw new MappingException(e);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public ILinkType linkTypeOfRangeElement(Object element) throws MappingException {\r
+ ILinkType type = rangeLinkTypes.get(element.getClass());\r
+ if(type == null) \r
+ throw new MappingException("Didn't find a link type for " + element + ".");\r
+ return type;\r
+ }\r
+\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+2971f9d3bbe121d0c33dcf91faf9ee88abdf54a8 6
+2971f9d3bbe121d0c33dcf91faf9ee88abdf54a8 default
--- /dev/null
+[paths]\r
+default=ssh://simusite/org.simantics.sysdyn.ui \r
--- /dev/null
+revlogv1
+store
+fncache
--- /dev/null
+data/.classpath.i
+data/.hgignore.i
+data/.project.i
+data/.settings/org.eclipse.jdt.core.prefs.i
+data/META-INF/MANIFEST.MF.i
+data/build.properties.i
+data/plugin.xml.i
+data/src/org/simantics/sysdyn/SysdynResource.java.i
+data/src/org/simantics/sysdyn/ui/ArcElement.java.i
+data/src/org/simantics/sysdyn/ui/Arcs.java.i
+data/src/org/simantics/sysdyn/ui/AuxiliaryElement.java.i
+data/src/org/simantics/sysdyn/ui/Connect.java.i
+data/src/org/simantics/sysdyn/ui/CreateAuxiliary.java.i
+data/src/org/simantics/sysdyn/ui/TestDiagramEditor.java.i
+data/src/org/simantics/sysdyn/ui/editor/SysdynDiagramEditor.java.i
+data/src/org/simantics/sysdyn/ui/editor/SysdynDiagramSchema.java.i
+data/src/org/simantics/sysdyn/ui/SysdynResource.java.i
+data/src/org/simantics/sysdyn/ui/actions/Connect.java.i
+data/src/org/simantics/sysdyn/ui/actions/CreateAuxiliary.java.i
+data/src/org/simantics/sysdyn/ui/actions/CreateStock.java.i
+data/src/org/simantics/sysdyn/ui/elements/ArcElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/Arcs.java.i
+data/src/org/simantics/sysdyn/ui/elements/AuxiliaryElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/RectangularElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/StockElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/TextElement.java.i
+data/doc/manual.mediawiki.i
+data/src/org/simantics/sysdyn/ui/actions/CreateCloud.java.i
+data/src/org/simantics/sysdyn/ui/actions/CreateValve.java.i
+data/src/org/simantics/sysdyn/ui/elements/CloudElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/DependencyElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/FlowElement.java.i
+data/src/org/simantics/sysdyn/ui/elements/Flows.java.i
+data/src/org/simantics/sysdyn/ui/elements/TextFieldNode.java.i
+data/src/org/simantics/sysdyn/ui/elements/ValveElement.java.i
--- /dev/null
+default
\ No newline at end of file
--- /dev/null
+syntax: regexp\r
+^bin/
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>org.simantics.sysdyn.ui</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.ManifestBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.SchemaBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.pde.PluginNature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Tue Nov 10 13:35:16 EET 2009\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6\r
+org.eclipse.jdt.core.compiler.compliance=1.6\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.6\r
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Ui
+Bundle-SymbolicName: org.simantics.sysdyn.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.simantics.h2d;bundle-version="1.0.0",
+ org.simantics.db;bundle-version="0.6.2",
+ org.simantics.db.management;bundle-version="0.6.2",
+ org.simantics.layer0.utils;bundle-version="0.6.2",
+ org.simantics.scenegraph;bundle-version="1.0.0",
+ org.junit4;bundle-version="4.5.0",
+ org.simantics.ui;bundle-version="1.0.0",
+ org.eclipse.ui;bundle-version="3.5.0",
+ org.eclipse.core.runtime;bundle-version="3.5.0",
+ org.simantics.objmap;bundle-version="0.1.0"
--- /dev/null
+source.. = src/\r
+output.. = bin/\r
+bin.includes = META-INF/,\\r
+ .,\\r
+ plugin.xml\r
--- /dev/null
+Possible connections between sysdyn elements:\r
+\r
+{| border="1"\r
+| \r
+| \r
+| colspan="4", align="center" | To\r
+|-\r
+| \r
+| \r
+| Auxiliary\r
+| Stock\r
+| Valve\r
+| Cloud\r
+|-\r
+| rowspan="4" | From\r
+| Auxiliary\r
+| dependency\r
+| -\r
+| dependency\r
+| -\r
+|-\r
+| Stock\r
+| dependency\r
+| -\r
+| flow / dependency\r
+| -\r
+|-\r
+| Valve\r
+| dependency\r
+| flow\r
+| dependency (?)\r
+| flow\r
+|-\r
+| Cloud\r
+| -\r
+| -\r
+| flow\r
+| -\r
+|}\r
+\r
+Connection actions between sysdyn elements:\r
+\r
+{| border="1"\r
+| \r
+| \r
+| colspan="4", align="center" | To\r
+|-\r
+| \r
+| \r
+| Auxiliary\r
+| Stock\r
+| Valve\r
+| Cloud\r
+|-\r
+| rowspan="4" | From\r
+| Auxiliary\r
+| dependency\r
+| -\r
+| dependency\r
+| -\r
+|-\r
+| Stock\r
+| dependency\r
+| valve + 2 x flow\r
+| flow / dependency\r
+| valve + 2 x flow\r
+|-\r
+| Valve\r
+| dependency\r
+| flow\r
+| dependency (?)\r
+| flow\r
+|-\r
+| Cloud\r
+| -\r
+| valve + 2 x flow\r
+| flow\r
+| -\r
+|}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<?eclipse version="3.4"?>\r
+<plugin>\r
+ <extension\r
+ point="org.eclipse.ui.editors">\r
+ <editor\r
+ class="org.simantics.sysdyn.ui.editor.SysdynDiagramEditor"\r
+ default="false"\r
+ id="org.simantics.sysdyn.ui.diagramEditor"\r
+ name="Sysdyn diagram editor">\r
+ </editor>\r
+ </extension>\r
+ <extension\r
+ point="org.simantics.ui.resourceEditorAdapter">\r
+ <adapter\r
+ editorId="org.simantics.sysdyn.ui.diagramEditor"\r
+ priority="3"\r
+ type_uris="http://www.simantics.org/Sysdyn#Configuration">\r
+ </adapter>\r
+ </extension>\r
+ <extension\r
+ point="org.eclipse.ui.views">\r
+ <category\r
+ id="org.simantics.sysdyn.ui.category"\r
+ name="System Dynamics">\r
+ </category>\r
+ <view\r
+ category="org.simantics.sysdyn.ui.category"\r
+ class="org.simantics.sysdyn.ui.modelica.ModelicaView"\r
+ id="org.simantics.sysdyn.ui.modelica.view"\r
+ name="Modelica View"\r
+ restorable="true">\r
+ </view>\r
+ </extension>\r
+\r
+</plugin>\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.sysdyn;\r
+\r
+\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.exception.DatabaseException;\r
+\r
+public class SysdynResource {\r
+ \r
+ public final Resource Auxiliary;\r
+ public final Resource Cloud;\r
+ public final Resource Configuration;\r
+ public final Resource Dependency;\r
+ public final Resource Flow;\r
+ public final Resource HasAngle;\r
+ public final Resource HasHead;\r
+ public final Resource HasTail;\r
+ public final Resource HasX;\r
+ public final Resource HasY;\r
+ public final Resource IndependentVariable;\r
+ public final Resource IsHeadOf;\r
+ public final Resource IsTailOf;\r
+ public final Resource Stock;\r
+ public final Resource TestConfiguration;\r
+ public final Resource Valve;\r
+ public final Resource Variable;\r
+ \r
+ public static class URIs {\r
+ public static final String Auxiliary = "http://www.simantics.org/Sysdyn#Auxiliary";\r
+ public static final String Cloud = "http://www.simantics.org/Sysdyn#Cloud";\r
+ public static final String Configuration = "http://www.simantics.org/Sysdyn#Configuration";\r
+ public static final String Dependency = "http://www.simantics.org/Sysdyn#Dependency";\r
+ public static final String Flow = "http://www.simantics.org/Sysdyn#Flow";\r
+ public static final String HasAngle = "http://www.simantics.org/Sysdyn#HasAngle";\r
+ public static final String HasHead = "http://www.simantics.org/Sysdyn#HasHead";\r
+ public static final String HasTail = "http://www.simantics.org/Sysdyn#HasTail";\r
+ public static final String HasX = "http://www.simantics.org/Sysdyn#HasX";\r
+ public static final String HasY = "http://www.simantics.org/Sysdyn#HasY";\r
+ public static final String IndependentVariable = "http://www.simantics.org/Sysdyn#IndependentVariable";\r
+ public static final String IsHeadOf = "http://www.simantics.org/Sysdyn#IsHeadOf";\r
+ public static final String IsTailOf = "http://www.simantics.org/Sysdyn#IsTailOf";\r
+ public static final String Stock = "http://www.simantics.org/Sysdyn#Stock";\r
+ public static final String TestConfiguration = "http://www.simantics.org/Sysdyn#TestConfiguration";\r
+ public static final String Valve = "http://www.simantics.org/Sysdyn#Valve";\r
+ public static final String Variable = "http://www.simantics.org/Sysdyn#Variable";\r
+ }\r
+ \r
+ public static Resource getResourceOrNull(ReadGraph graph, String uri) {\r
+ try {\r
+ return graph.getResourceByURI(uri);\r
+ } catch(DatabaseException e) {\r
+ System.err.println(e.getMessage());\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public SysdynResource(ReadGraph graph) {\r
+ Auxiliary = getResourceOrNull(graph, URIs.Auxiliary);\r
+ Cloud = getResourceOrNull(graph, URIs.Cloud);\r
+ Configuration = getResourceOrNull(graph, URIs.Configuration);\r
+ Dependency = getResourceOrNull(graph, URIs.Dependency);\r
+ Flow = getResourceOrNull(graph, URIs.Flow);\r
+ HasAngle = getResourceOrNull(graph, URIs.HasAngle);\r
+ HasHead = getResourceOrNull(graph, URIs.HasHead);\r
+ HasTail = getResourceOrNull(graph, URIs.HasTail);\r
+ HasX = getResourceOrNull(graph, URIs.HasX);\r
+ HasY = getResourceOrNull(graph, URIs.HasY);\r
+ IndependentVariable = getResourceOrNull(graph, URIs.IndependentVariable);\r
+ IsHeadOf = getResourceOrNull(graph, URIs.IsHeadOf);\r
+ IsTailOf = getResourceOrNull(graph, URIs.IsTailOf);\r
+ Stock = getResourceOrNull(graph, URIs.Stock);\r
+ TestConfiguration = getResourceOrNull(graph, URIs.TestConfiguration);\r
+ Valve = getResourceOrNull(graph, URIs.Valve);\r
+ Variable = getResourceOrNull(graph, URIs.Variable);\r
+ }\r
+ \r
+ public static SysdynResource getInstance(ReadGraph graph) {\r
+ Session session = graph.getSession();\r
+ SysdynResource ret = session.getService(SysdynResource.class);\r
+ if(ret == null) {\r
+ ret = new SysdynResource(graph);\r
+ session.registerService(SysdynResource.class, ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.sysdyn.ui;\r
+\r
+\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.exception.DatabaseException;\r
+\r
+public class SysdynResource {\r
+ \r
+ public final Resource HasX;\r
+ public final Resource HasY;\r
+ public final Resource SysdynModel;\r
+ public final Resource SysdynModelManager;\r
+ public final Resource SysdynModellingDomain;\r
+ public final Resource TestDiagram;\r
+ public final Resource Variable;\r
+ public final Resource VariableElement;\r
+ \r
+ public static class URIs {\r
+ public static final String HasX = "http://www.simantics.org/Sysdyn#HasX";\r
+ public static final String HasY = "http://www.simantics.org/Sysdyn#HasY";\r
+ public static final String SysdynModel = "http://www.simantics.org/Sysdyn#SysdynModel";\r
+ public static final String SysdynModelManager = "http://www.simantics.org/Sysdyn#SysdynModelManager";\r
+ public static final String SysdynModellingDomain = "http://www.simantics.org/Sysdyn#SysdynModellingDomain";\r
+ public static final String TestDiagram = "http://www.simantics.org/Sysdyn#TestDiagram";\r
+ public static final String Variable = "http://www.simantics.org/Sysdyn#Variable";\r
+ public static final String VariableElement = "http://www.simantics.org/Sysdyn#VariableElement";\r
+ }\r
+ \r
+ public static Resource getResourceOrNull(ReadGraph graph, String uri) {\r
+ try {\r
+ return graph.getResourceByURI(uri);\r
+ } catch(DatabaseException e) {\r
+ System.err.println(e.getMessage());\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public SysdynResource(ReadGraph graph) {\r
+ HasX = getResourceOrNull(graph, URIs.HasX);\r
+ HasY = getResourceOrNull(graph, URIs.HasY);\r
+ SysdynModel = getResourceOrNull(graph, URIs.SysdynModel);\r
+ SysdynModelManager = getResourceOrNull(graph, URIs.SysdynModelManager);\r
+ SysdynModellingDomain = getResourceOrNull(graph, URIs.SysdynModellingDomain);\r
+ TestDiagram = getResourceOrNull(graph, URIs.TestDiagram);\r
+ Variable = getResourceOrNull(graph, URIs.Variable);\r
+ VariableElement = getResourceOrNull(graph, URIs.VariableElement);\r
+ }\r
+ \r
+ public static SysdynResource getInstance(ReadGraph graph) {\r
+ Session session = graph.getSession();\r
+ SysdynResource ret = session.getService(SysdynResource.class);\r
+ if(ret == null) {\r
+ ret = new SysdynResource(graph);\r
+ session.registerService(SysdynResource.class, ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+\r
--- /dev/null
+package org.simantics.sysdyn.ui;\r
+\r
+import javax.swing.JFrame;\r
+\r
+import org.simantics.h2d.canvas.EditorCanvas;\r
+import org.simantics.h2d.diagram.Diagram;\r
+import org.simantics.h2d.editor.impl.DiagramEditor;\r
+import org.simantics.h2d.event.handler.DefaultEventHandlers;\r
+import org.simantics.sysdyn.ui.actions.Connect;\r
+import org.simantics.sysdyn.ui.actions.CreateAuxiliary;\r
+import org.simantics.sysdyn.ui.actions.CreateCloud;\r
+import org.simantics.sysdyn.ui.actions.CreateStock;\r
+import org.simantics.sysdyn.ui.actions.CreateValve;\r
+\r
+public class TestDiagramEditor extends JFrame {\r
+\r
+ public TestDiagramEditor() {\r
+ super("Test Canvas");\r
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
+ \r
+ Diagram diagram = new Diagram();\r
+ final DiagramEditor editor = new DiagramEditor(getRootPane(), diagram);\r
+ \r
+ DefaultEventHandlers.configure(editor);\r
+ editor.addEventHandler(1, "key(A)", new CreateAuxiliary());\r
+ editor.addEventHandler(1, "key(S)", new CreateStock());\r
+ editor.addEventHandler(1, "key(V)", new CreateValve());\r
+ editor.addEventHandler(1, "key(C)", new CreateCloud());\r
+ editor.addEventHandler(1, "drag(alt+left)", new Connect());\r
+ \r
+ getContentPane().add(new EditorCanvas(editor));\r
+\r
+ setSize(800, 600);\r
+ }\r
+ \r
+ public static void main(String[] args) {\r
+ javax.swing.SwingUtilities.invokeLater(new Runnable() {\r
+ public void run() {\r
+ new TestDiagramEditor().setVisible(true);\r
+ }\r
+ }); \r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.actions;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.handler.Connectable;\r
+import org.simantics.h2d.event.DragEvent;\r
+import org.simantics.h2d.event.handler.DragEventHandler;\r
+import org.simantics.h2d.node.RectangleNode;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+import org.simantics.sysdyn.ui.elements.AuxiliaryElement;\r
+import org.simantics.sysdyn.ui.elements.CloudElement;\r
+import org.simantics.sysdyn.ui.elements.DependencyElement;\r
+import org.simantics.sysdyn.ui.elements.FlowElement;\r
+import org.simantics.sysdyn.ui.elements.StockElement;\r
+import org.simantics.sysdyn.ui.elements.ValveElement;\r
+\r
+public class Connect extends DragEventHandler {\r
+\r
+ Connectable from;\r
+ Connectable to;\r
+ \r
+ RectangleNode fromNode = new RectangleNode(); \r
+ RectangleNode toNode = new RectangleNode();\r
+ \r
+ @Override\r
+ protected boolean begin(IDiagramEditor editor, DragEvent event) {\r
+ for(IElement element : event.pickedElements) {\r
+ Connectable connectable = element.getInterface(Connectable.class);\r
+ if(connectable != null) {\r
+ this.from = connectable;\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ @Override\r
+ protected void update(IDiagramEditor editor, DragEvent event) {\r
+ for(IElement element : editor.pickElements(event.current)) {\r
+ Connectable connectable = element.getInterface(Connectable.class); \r
+ if(connectable != null && connectable != from) {\r
+ if(connectable == to)\r
+ return;\r
+ to = connectable;\r
+ \r
+ Rectangle2D bounds = new Rectangle2D.Double(); \r
+ to.getBounds(bounds);\r
+ bounds.setFrame(\r
+ bounds.getX()-2.0, \r
+ bounds.getY()-2.0, \r
+ bounds.getWidth()+4.0, \r
+ bounds.getHeight()+4.0); \r
+ toNode.init(bounds);\r
+ \r
+ editor.requestRepaint(); \r
+ return;\r
+ }\r
+ }\r
+ to = null;\r
+ toNode.init(fromNode.getBounds());\r
+ editor.requestRepaint();\r
+ }\r
+ \r
+ @Override\r
+ protected void end(IDiagramEditor editor, DragEvent event) {\r
+ if(to != null) {\r
+ IElement newElement;\r
+ if(from instanceof ValveElement && to instanceof StockElement)\r
+ newElement = new FlowElement(from, to);\r
+ else if(from instanceof StockElement && to instanceof ValveElement)\r
+ newElement = new FlowElement(from, to);\r
+ else if( (from instanceof StockElement || from instanceof CloudElement) \r
+ && (to instanceof StockElement || to instanceof CloudElement)) {\r
+ Point2D fromOrigo = from.getOrigo();\r
+ Point2D toOrigo = to.getOrigo();\r
+ newElement = new ValveElement(\r
+ 0.5 * (fromOrigo.getX() + toOrigo.getX()),\r
+ 0.5 * (fromOrigo.getY() + toOrigo.getY())\r
+ );\r
+ editor.getDiagram().addElement(new FlowElement(from, (ValveElement)newElement));\r
+ editor.getDiagram().addElement(new FlowElement(to, (ValveElement)newElement));\r
+ }\r
+ else if(from instanceof ValveElement && to instanceof AuxiliaryElement)\r
+ newElement = new DependencyElement(to, from);\r
+ else if(from instanceof AuxiliaryElement && to instanceof StockElement)\r
+ newElement = new DependencyElement(to, from);\r
+ else \r
+ newElement = new DependencyElement(from, to);\r
+ editor.getDiagram().addElement(newElement);\r
+ }\r
+ \r
+ from = null;\r
+ to = null;\r
+ }\r
+ \r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ fromNode = parent.addNode(RectangleNode.class);\r
+ toNode = parent.addNode(RectangleNode.class);\r
+ \r
+ Rectangle2D bounds = new Rectangle2D.Double(); \r
+ from.getBounds(bounds);\r
+ bounds.setFrame(\r
+ bounds.getX()-2.0, \r
+ bounds.getY()-2.0, \r
+ bounds.getWidth()+4.0, \r
+ bounds.getHeight()+4.0);\r
+ \r
+ fromNode.init(bounds);\r
+ toNode.init(bounds);\r
+ }\r
+ \r
+ @Override\r
+ public void remove() {\r
+ fromNode.remove();\r
+ toNode.remove();\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.actions;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.ILocatableEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.sysdyn.ui.elements.AuxiliaryElement;\r
+import org.simantics.sysdyn.ui.elements.StockElement;\r
+\r
+public class CreateAuxiliary implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ ILocatableEvent event = (ILocatableEvent)_event;\r
+ AuxiliaryElement element = new AuxiliaryElement("Auxiliary", \r
+ event.getLocation().getX(),\r
+ event.getLocation().getY());\r
+ editor.getDiagram().addElement(element);\r
+ element.beginRenameAction(editor);\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.actions;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.ILocatableEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.sysdyn.ui.elements.CloudElement;\r
+\r
+public class CreateCloud implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ ILocatableEvent event = (ILocatableEvent)_event;\r
+ CloudElement element = new CloudElement( \r
+ event.getLocation().getX(),\r
+ event.getLocation().getY());\r
+ editor.getDiagram().addElement(element); \r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.actions;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.ILocatableEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.sysdyn.ui.elements.StockElement;\r
+\r
+public class CreateStock implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ ILocatableEvent event = (ILocatableEvent)_event;\r
+ StockElement element = new StockElement("Stock", \r
+ event.getLocation().getX(),\r
+ event.getLocation().getY());\r
+ editor.getDiagram().addElement(element);\r
+ element.beginRenameAction(editor);\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.actions;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.ILocatableEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.sysdyn.ui.elements.ValveElement;\r
+\r
+public class CreateValve implements IEventHandler {\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ ILocatableEvent event = (ILocatableEvent)_event;\r
+ editor.getDiagram().addElement(new ValveElement( \r
+ event.getLocation().getX(),\r
+ event.getLocation().getY()));\r
+ editor.requestRepaint();\r
+ return true;\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.editor;\r
+\r
+import java.awt.Frame;\r
+import java.util.ArrayList;\r
+\r
+import javax.swing.SwingUtilities;\r
+\r
+import org.eclipse.jface.viewers.StructuredSelection;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.awt.SWT_AWT;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.ui.IEditorInput;\r
+import org.eclipse.ui.IEditorSite;\r
+import org.eclipse.ui.PartInitException;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.h2d.canvas.EditorCanvas;\r
+import org.simantics.h2d.diagram.IDiagram;\r
+import org.simantics.h2d.diagram.IDiagramListener;\r
+import org.simantics.h2d.editor.ISelection;\r
+import org.simantics.h2d.editor.ISelectionListener;\r
+import org.simantics.h2d.editor.impl.DiagramEditor;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.event.handler.DefaultEventHandlers;\r
+import org.simantics.objmap.IMapping;\r
+import org.simantics.objmap.IMappingListener;\r
+import org.simantics.objmap.MappingException;\r
+import org.simantics.objmap.Mappings;\r
+import org.simantics.sysdyn.ui.actions.Connect;\r
+import org.simantics.sysdyn.ui.actions.CreateAuxiliary;\r
+import org.simantics.sysdyn.ui.actions.CreateCloud;\r
+import org.simantics.sysdyn.ui.actions.CreateStock;\r
+import org.simantics.sysdyn.ui.actions.CreateValve;\r
+import org.simantics.ui.SimanticsUI;\r
+import org.simantics.ui.workbench.ResourceEditorPart;\r
+import org.simantics.utils.ui.jface.ActiveSelectionProvider;\r
+\r
+public class SysdynDiagramEditor extends ResourceEditorPart {\r
+\r
+ EditorCanvas canvas;\r
+ IDiagram diagram;\r
+ IMapping mapping;\r
+ Frame frame;\r
+ \r
+ protected void readDiagram(ReadGraph g) throws DatabaseException {\r
+ SysdynDiagramSchema schema = new SysdynDiagramSchema(g);\r
+ mapping = Mappings.createWithListening(schema);\r
+ \r
+ try {\r
+ diagram = (IDiagram)mapping.map(g, getInputResource());\r
+ } catch (MappingException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ \r
+ final Session session = g.getSession();\r
+ mapping.addMappingListener(new IMappingListener() {\r
+ \r
+ @Override\r
+ public void rangeModified() {\r
+ session.asyncRequest(new WriteRequest() {\r
+ \r
+ @Override\r
+ public void perform(WriteGraph graph)\r
+ throws DatabaseException {\r
+ mapping.updateDomain(graph); \r
+ }\r
+ \r
+ });\r
+ }\r
+ \r
+ @Override\r
+ public void domainModified() {\r
+ System.out.println("domainModified");\r
+ session.asyncRequest(new ReadRequest() {\r
+ \r
+ @Override\r
+ public void run(ReadGraph graph) throws DatabaseException {\r
+ mapping.updateRange(graph); \r
+ }\r
+ }); \r
+ }\r
+ \r
+ });\r
+ \r
+ diagram.addDiagramListener(new IDiagramListener() {\r
+ \r
+ @Override\r
+ public void elementAdded(IElement element) {\r
+ mapping.rangeModified(diagram); \r
+ }\r
+ \r
+ @Override\r
+ public void elementRemoved(IElement element) {\r
+ mapping.rangeModified(diagram); \r
+ }\r
+ \r
+ });\r
+ }\r
+ \r
+ @Override\r
+ public void init(IEditorSite site, IEditorInput input)\r
+ throws PartInitException {\r
+ super.init(site, input);\r
+ \r
+ try {\r
+ SimanticsUI.getSession().syncRequest(new ReadRequest() {\r
+ \r
+ @Override\r
+ public void run(ReadGraph g) throws DatabaseException {\r
+ readDiagram(g); \r
+ }\r
+ \r
+ });\r
+ } catch (DatabaseException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ } \r
+ }\r
+ \r
+ @Override\r
+ public void createPartControl(Composite parent) {\r
+ final Composite composite = new Composite(parent, \r
+ SWT.NO_BACKGROUND | SWT.EMBEDDED);\r
+ frame = SWT_AWT.new_Frame(composite);\r
+ \r
+ final ActiveSelectionProvider selectionProvider = new ActiveSelectionProvider();\r
+ getSite().setSelectionProvider(selectionProvider);\r
+ \r
+ SwingUtilities.invokeLater(new Runnable() {\r
+\r
+ @Override\r
+ public void run() { \r
+ DiagramEditor editor = new DiagramEditor(null, diagram); \r
+ \r
+ DefaultEventHandlers.configure(editor);\r
+ editor.addEventHandler(1, "key(A)", new CreateAuxiliary());\r
+ editor.addEventHandler(1, "key(S)", new CreateStock());\r
+ editor.addEventHandler(1, "key(V)", new CreateValve());\r
+ editor.addEventHandler(1, "key(C)", new CreateCloud());\r
+ editor.addEventHandler(1, "drag(alt+left)", new Connect());\r
+ \r
+ canvas = new EditorCanvas(editor);\r
+ frame.add(canvas);\r
+ \r
+ canvas.requestFocus(); \r
+ \r
+ editor.getSelection().addSelectionListener(new ISelectionListener() {\r
+ \r
+ @Override\r
+ public void selectionChanged(ISelection selection) {\r
+ ArrayList<Resource> resources = new ArrayList<Resource>(selection.size());\r
+ for(IElement element : selection)\r
+ resources.add(mapping.inverseGet(element));\r
+ selectionProvider.setSelection(new StructuredSelection(resources));\r
+ }\r
+ \r
+ });\r
+ }\r
+ \r
+ });\r
+ }\r
+\r
+ @Override\r
+ public void setFocus() {\r
+ if(canvas != null)\r
+ canvas.requestFocus(); \r
+ }\r
+ \r
+ @Override\r
+ public void dispose() {\r
+ mapping.dispose();\r
+ frame.dispose();\r
+ \r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.editor;\r
+\r
+import java.util.Collection;\r
+\r
+import org.simantics.db.Builtins;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.h2d.diagram.Diagram;\r
+import org.simantics.objmap.rules.MappedElementsRule;\r
+import org.simantics.objmap.rules.domain.RelatedObjectsAccessor;\r
+import org.simantics.objmap.rules.range.FieldAccessor;\r
+import org.simantics.objmap.schema.MappingSchemas;\r
+import org.simantics.objmap.schema.SimpleLinkType;\r
+import org.simantics.objmap.schema.SimpleSchema;\r
+import org.simantics.sysdyn.SysdynResource;\r
+import org.simantics.sysdyn.ui.elements.AuxiliaryElement;\r
+import org.simantics.sysdyn.ui.elements.CloudElement;\r
+import org.simantics.sysdyn.ui.elements.DependencyElement;\r
+import org.simantics.sysdyn.ui.elements.FlowElement;\r
+import org.simantics.sysdyn.ui.elements.StockElement;\r
+import org.simantics.sysdyn.ui.elements.ValveElement;\r
+\r
+public class SysdynDiagramSchema extends SimpleSchema {\r
+\r
+ public SysdynDiagramSchema(ReadGraph g) throws DatabaseException {\r
+ Builtins b = g.getBuiltins();\r
+ SysdynResource sr = SysdynResource.getInstance(g);\r
+ try {\r
+ {\r
+ SimpleLinkType linkType = \r
+ new SimpleLinkType(sr.Configuration, Diagram.class);\r
+ linkType.addRule(new MappedElementsRule(\r
+ new RelatedObjectsAccessor(b.ConsistsOf),\r
+ new FieldAccessor<Collection<Object>>(Diagram.class.getField("elements"))\r
+ ));\r
+ addLinkType(linkType);\r
+ } \r
+ \r
+ addLinkType(MappingSchemas.fromAnnotations(g, AuxiliaryElement.class)); \r
+ addLinkType(MappingSchemas.fromAnnotations(g, StockElement.class));\r
+ addLinkType(MappingSchemas.fromAnnotations(g, CloudElement.class));\r
+ addLinkType(MappingSchemas.fromAnnotations(g, ValveElement.class));\r
+ addLinkType(MappingSchemas.fromAnnotations(g, DependencyElement.class));\r
+ addLinkType(MappingSchemas.fromAnnotations(g, FlowElement.class));\r
+ } catch(NoSuchFieldException e) {\r
+ e.printStackTrace();\r
+ } catch (InstantiationException e) {\r
+ e.printStackTrace();\r
+ } catch (IllegalAccessException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.geom.Rectangle2D;\r
+\r
+public class Arcs {\r
+\r
+ public static final double PI2 = Math.PI*2.0;\r
+ \r
+ /**\r
+ * Returns angle + 2PI * n such that the\r
+ * result is between -PI and PI.\r
+ */\r
+ public static double normalizeAngle(double angle) {\r
+ return Math.IEEEremainder(angle, PI2);\r
+ }\r
+ \r
+ /**\r
+ * Returns true, if three normalized angles are clockwise oriented.\r
+ */\r
+ public static boolean areClockwiseOrdered(double angle1, double angle2, double angle3) {\r
+ //System.out.println(angle1 + " " + angle2 + " " + angle3);\r
+ return angle1 < angle2 \r
+ ? (angle2 < angle3 || angle3 < angle1)\r
+ : (angle2 < angle3 && angle3 < angle1)\r
+ ;\r
+ }\r
+ \r
+ /**\r
+ * Returns an angle in radians between straight line from (x0,y0) to (x2,y2)\r
+ * and an arc from (x0,y0) to (x2,y2) thru (x1,y1). The angle\r
+ * is measured at (x0,y0) and is between -PI and PI.\r
+ */\r
+ public static double angleOfArc(\r
+ double x0, double y0, \r
+ double x1, double y1,\r
+ double x2, double y2) {\r
+ double dx0 = x1-x0;\r
+ double dy0 = y1-y0;\r
+ double dx1 = x1-x2;\r
+ double dy1 = y1-y2;\r
+ double dx = x2-x0;\r
+ double dy = y2-y0;\r
+ // Length of cross product (p1-p0)x(p2-p0)\r
+ double dd = dx0*dy - dy0*dx; \r
+ \r
+ if(Math.abs(dd) < 1e-6) // Points are (almost) collinear\r
+ return 0.0;\r
+ else { \r
+ // (p1-p0)*(p1-p2) / dd\r
+ double offset = (dx0*dx1 + dy0*dy1) / dd;\r
+ double angle = Math.PI*0.5 - Math.atan(offset);\r
+ if(dd > 0.0)\r
+ angle = angle-Math.PI;\r
+ return angle;\r
+ \r
+ }\r
+ }\r
+ \r
+ private static double updateBestNextAngle(double curAngle, double bestAngle, double newAngle) {\r
+ if(newAngle < curAngle)\r
+ newAngle += PI2;\r
+ if(newAngle < bestAngle)\r
+ return newAngle;\r
+ return bestAngle; \r
+ } \r
+ \r
+ private static double updateBestPrevAngle(double curAngle, double bestAngle, double newAngle) {\r
+ if(newAngle > curAngle)\r
+ newAngle -= PI2;\r
+ if(newAngle > bestAngle)\r
+ return newAngle;\r
+ return bestAngle; \r
+ } \r
+ \r
+ public static double nextIntersectingAngle(double cx, double cy, double r,\r
+ double curAngle, Rectangle2D rect, boolean dir) {\r
+ if(!dir) {\r
+ double bestAngle = curAngle + PI2;\r
+ {\r
+ double dx = rect.getMinX() - cx;\r
+ if(Math.abs(dx) < r) {\r
+ double angle = normalizeAngle(Math.acos(dx / r));\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, -angle);\r
+ }\r
+ }\r
+ {\r
+ double dx = rect.getMaxX() - cx;\r
+ if(Math.abs(dx) < r) {\r
+ double angle = normalizeAngle(Math.acos(dx / r));\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, -angle);\r
+ }\r
+ }\r
+ {\r
+ double dy = cy - rect.getMinY();\r
+ if(Math.abs(dy) < r) {\r
+ double angle = Math.asin(dy / r);\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, \r
+ normalizeAngle(Math.PI-angle));\r
+ }\r
+ }\r
+ {\r
+ double dy = cy - rect.getMaxY();\r
+ if(Math.abs(dy) < r) {\r
+ double angle = Math.asin(dy / r);\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestNextAngle(curAngle, bestAngle, \r
+ normalizeAngle(Math.PI-angle));\r
+ }\r
+ }\r
+ return normalizeAngle(bestAngle);\r
+ } \r
+ else {\r
+ double bestAngle = curAngle - PI2;\r
+ {\r
+ double dx = rect.getMinX() - cx;\r
+ if(Math.abs(dx) < r) {\r
+ double angle = normalizeAngle(Math.acos(dx / r));\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, -angle);\r
+ }\r
+ }\r
+ {\r
+ double dx = rect.getMaxX() - cx;\r
+ if(Math.abs(dx) < r) {\r
+ double angle = normalizeAngle(Math.acos(dx / r));\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, -angle);\r
+ }\r
+ }\r
+ {\r
+ double dy = cy - rect.getMinY();\r
+ if(Math.abs(dy) < r) {\r
+ double angle = Math.asin(dy / r);\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, \r
+ normalizeAngle(Math.PI-angle));\r
+ }\r
+ }\r
+ {\r
+ double dy = cy - rect.getMaxY();\r
+ if(Math.abs(dy) < r) {\r
+ double angle = Math.asin(dy / r);\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, angle);\r
+ bestAngle = updateBestPrevAngle(curAngle, bestAngle, \r
+ normalizeAngle(Math.PI-angle));\r
+ }\r
+ }\r
+ return normalizeAngle(bestAngle);\r
+ }\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Auxiliary")\r
+public class AuxiliaryElement extends TextElement {\r
+ \r
+ public AuxiliaryElement() { \r
+ }\r
+ \r
+ public AuxiliaryElement(String label, double x, double y) {\r
+ super(label, x, y);\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.BasicStroke;\r
+import java.awt.Color;\r
+import java.awt.geom.Path2D;\r
+\r
+import org.simantics.h2d.element.handler.Connectable;\r
+import org.simantics.h2d.node.ShapeNode;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Cloud")\r
+public class CloudElement extends RectangularElement implements Connectable {\r
+ \r
+ public static final double CLOUD_SIZE_X = 5.0;\r
+ public static final double CLOUD_SIZE_Y = 3.0;\r
+ \r
+ public static final double CLOUD_CURVES = 7;\r
+ \r
+ ShapeNode cloudNode;\r
+ boolean rotated = false;\r
+ \r
+ public CloudElement() { \r
+ }\r
+ \r
+ public CloudElement(double x, double y) {\r
+ this.posX = x;\r
+ this.posY = y; \r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ cloudNode = parent.addNode(ShapeNode.class);\r
+ cloudNode.setColor(Color.BLACK);\r
+ cloudNode.setScaleStroke(true);\r
+ cloudNode.setStroke(new BasicStroke(1));\r
+ update();\r
+ }\r
+\r
+ @Override\r
+ public void remove() {\r
+ cloudNode.remove();\r
+ }\r
+ \r
+ @Override\r
+ protected void update() {\r
+ //bounds.setFrame(posX-CLOUD_SIZE_X, posY-CLOUD_SIZE_Y, 2.0*CLOUD_SIZE_X, 2.0*CLOUD_SIZE_Y);\r
+ Path2D path = new Path2D.Double(); \r
+ double ox = CLOUD_SIZE_X;\r
+ double oy = 0.0;\r
+ path.moveTo(posX+ox, posY+oy); \r
+ for(int i=1;i<CLOUD_CURVES+1;++i) {\r
+ double angle = (Math.PI * 2.0 / CLOUD_CURVES) * i;\r
+ double x = Math.cos(angle) * CLOUD_SIZE_X;\r
+ double y = Math.sin(angle) * CLOUD_SIZE_Y;\r
+ path.curveTo(\r
+ posX+(2*ox + x)*0.5, posY+(2*oy + y)*0.5,\r
+ posX+(ox + 2*x)*0.5, posY+(oy + 2*y)*0.5,\r
+ posX + x, posY + y);\r
+ ox = x;\r
+ oy = y;\r
+ }\r
+ cloudNode.setShape(path);\r
+ bounds = path.getBounds2D();\r
+ super.update();\r
+ }\r
+\r
+ public boolean isRotated() {\r
+ return rotated;\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.BasicStroke;\r
+import java.awt.Shape;\r
+import java.awt.geom.Arc2D;\r
+import java.awt.geom.Path2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.Element;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.IElementListener;\r
+import org.simantics.h2d.element.handler.Connectable;\r
+import org.simantics.h2d.event.DragEvent;\r
+import org.simantics.h2d.event.handler.DragEventHandler;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.h2d.node.FilledShapeNode;\r
+import org.simantics.h2d.node.ShapeNode;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedElement;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Dependency")\r
+public class DependencyElement extends Element implements IElementListener {\r
+ \r
+ /*\r
+ * Total length of the arrow is ARROW_LENGTH1 + ARROW_LENGTH2\r
+ */\r
+ public static double ARROW_LENGTH1 = 0.2;\r
+ public static double ARROW_LENGTH2 = 3.0;\r
+ public static double ARROW_WIDTH = 1.8;\r
+ \r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasTail")\r
+ Connectable tail;\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasHead")\r
+ Connectable head;\r
+ @RelatedValue("http://www.simantics.org/Sysdyn#HasAngle")\r
+ double angle = 0.1;\r
+\r
+ // Auxiliary \r
+ double angle0;\r
+ double angle1;\r
+ double cx;\r
+ double cy;\r
+ double r;\r
+ \r
+ // Scene graph\r
+ ShapeNode arcNode;\r
+ FilledShapeNode arrowNode;\r
+ \r
+ public DependencyElement() { \r
+ }\r
+ \r
+ public DependencyElement(Connectable tail, Connectable head) {\r
+ super();\r
+ this.tail = tail;\r
+ this.head = head;\r
+ }\r
+ \r
+ @Override\r
+ public void elementUpdated(IElement element) {\r
+ update(); \r
+ } \r
+\r
+ @Override\r
+ public void remove() {\r
+ arcNode.remove();\r
+ arrowNode.remove();\r
+ tail.removeListener(this);\r
+ head.removeListener(this);\r
+ super.remove();\r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ tail.addListener(this);\r
+ head.addListener(this);\r
+ \r
+ arcNode = parent.addNode(ShapeNode.class);\r
+ arcNode.setScaleStroke(true);\r
+ arcNode.setStroke(new BasicStroke(1));\r
+ arrowNode = parent.addNode(FilledShapeNode.class);\r
+ update();\r
+ }\r
+ \r
+ protected Shape createArrow(double x, double y, double dx, double dy) {\r
+ Path2D path = new Path2D.Double();\r
+ path.moveTo(x+ARROW_LENGTH1*dx, y+ARROW_LENGTH1*dy);\r
+ x -= ARROW_LENGTH2*dx;\r
+ y -= ARROW_LENGTH2*dy;\r
+ path.lineTo(x-ARROW_WIDTH*dy, y+ARROW_WIDTH*dx);\r
+ path.lineTo(x+ARROW_WIDTH*dy, y-ARROW_WIDTH*dx);\r
+ path.closePath();\r
+ return path;\r
+ }\r
+ \r
+ protected void updateSceneGraph() {\r
+ double x0 = tail.getOrigo().getX();\r
+ double y0 = tail.getOrigo().getY();\r
+ double x1 = head.getOrigo().getX();\r
+ double y1 = head.getOrigo().getY();\r
+ \r
+ double offset = \r
+ Math.abs(angle) < 1.0e-6\r
+ ? 1e3 * Math.signum(angle)\r
+ : Math.tan(Math.PI*0.5-angle)*0.5;\r
+ cx = 0.5*(x0+x1) + offset * (y1-y0);\r
+ cy = 0.5*(y0+y1) + offset * (x0-x1);\r
+ double dx0 = x0 - cx;\r
+ double dy0 = y0 - cy;\r
+ double dx1 = x1 - cx;\r
+ double dy1 = y1 - cy;\r
+ r = Math.sqrt(dx0*dx0 + dy0*dy0);\r
+ Rectangle2D bounds = new Rectangle2D.Double();\r
+ tail.getBounds(bounds);\r
+ angle0 = Arcs.nextIntersectingAngle(cx, cy, r, \r
+ Math.atan2(-dy0, dx0), bounds, angle < 0.0);\r
+ head.getBounds(bounds);\r
+ angle1 = Arcs.nextIntersectingAngle(cx, cy, r, \r
+ Math.atan2(-dy1, dx1), bounds, angle > 0.0);\r
+ double extent = angle1-angle0;\r
+ //double arcAngle = angle0;\r
+ if(angle < 0.0) {\r
+ double temp = angle0; \r
+ angle0 = angle1;\r
+ angle1 = temp;\r
+ extent = -extent;\r
+ } \r
+ if(extent < 0)\r
+ extent += Math.PI*2.0;\r
+ else if(extent >= 360.0)\r
+ extent -= Math.PI*2.0;\r
+ Shape shape = new Arc2D.Double(cx-r, cy-r, 2*r, 2*r, \r
+ Math.toDegrees(angle0), \r
+ Math.toDegrees(extent), \r
+ Arc2D.OPEN); \r
+ arcNode.setShape(shape);\r
+ \r
+ double xx = Math.cos(angle > 0.0 ? angle1 : angle0);\r
+ double yy = -Math.sin(angle > 0.0 ? angle1 : angle0);\r
+ Shape arrowShape = createArrow(cx + r*xx, cy + r*yy, \r
+ angle < 0.0 ? -yy : yy, \r
+ angle > 0.0 ? -xx : xx);\r
+ arrowNode.setShape(arrowShape);\r
+ }\r
+ \r
+ public void update() {\r
+ if(arcNode != null)\r
+ updateSceneGraph();\r
+ super.update();\r
+ }\r
+ \r
+ @Override\r
+ public void getBounds(Rectangle2D bounds) {\r
+ bounds.setFrame(arcNode.getBounds());\r
+ }\r
+\r
+ @Override\r
+ public boolean hitTest(double x, double y, double tolerance) {\r
+ double dx = x-cx;\r
+ double dy = y-cy;\r
+ double dist = dx*dx + dy*dy;\r
+ if(dist < (r+tolerance)*(r+tolerance) &&\r
+ dist > (r-tolerance)*(r-tolerance)) {\r
+ double angle = Arcs.normalizeAngle(Math.atan2(-dy, dx));\r
+ if(Arcs.areClockwiseOrdered(angle0, angle, angle1))\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+ \r
+ class EventHandler extends DragEventHandler {\r
+ @Override\r
+ protected boolean begin(IDiagramEditor editor, DragEvent event) {\r
+ return event.startModifiers.equals("left");\r
+ }\r
+ \r
+ @Override\r
+ protected void update(IDiagramEditor editor, DragEvent event) {\r
+ angle = Arcs.angleOfArc(\r
+ tail.getOrigo().getX(), tail.getOrigo().getY(), \r
+ event.current.getX(), event.current.getY(), \r
+ head.getOrigo().getX(), head.getOrigo().getY()\r
+ );\r
+ DependencyElement.this.update();\r
+ editor.requestRepaint();\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public <T> T getInterface(Class<T> clazz) {\r
+ if(clazz == IEventHandler.class) \r
+ return (T)new EventHandler();\r
+ return super.getInterface(clazz);\r
+ }\r
+\r
+ @Override\r
+ public void elementRemoved(IElement element) {\r
+ remove(); \r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.Shape;\r
+import java.awt.geom.Path2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.element.Element;\r
+import org.simantics.h2d.element.IElement;\r
+import org.simantics.h2d.element.IElementListener;\r
+import org.simantics.h2d.element.handler.Connectable;\r
+import org.simantics.h2d.node.FilledShapeNode;\r
+import org.simantics.h2d.node.ShapeNode;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedElement;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Flow")\r
+public class FlowElement extends Element implements IElementListener {\r
+\r
+ public static double ARROW_LENGTH1 = 0.2;\r
+ public static double ARROW_LENGTH2 = 3.0;\r
+ public static double ARROW_WIDTH = 1.8;\r
+ \r
+ static final double OFFSET = 1.5;\r
+ \r
+ /*\r
+ * Total length of the arrow is ARROW_LENGTH1 + ARROW_LENGTH2\r
+ */ \r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasTail")\r
+ Connectable tail;\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasHead")\r
+ Connectable head;\r
+ double angle = 0.1;\r
+\r
+ // Auxiliary \r
+ double angle0;\r
+ double angle1;\r
+ double cx;\r
+ double cy;\r
+ double r;\r
+ \r
+ // Scene graph\r
+ ShapeNode lineNode1;\r
+ ShapeNode lineNode2;\r
+ FilledShapeNode arrowNode;\r
+ \r
+ public FlowElement() { \r
+ }\r
+ \r
+ public FlowElement(Connectable tail, Connectable head) {\r
+ super();\r
+ this.tail = tail;\r
+ this.head = head;\r
+ }\r
+ \r
+ @Override\r
+ public void elementUpdated(IElement element) {\r
+ update(); \r
+ } \r
+\r
+ @Override\r
+ public void remove() {\r
+ lineNode1.remove();\r
+ lineNode2.remove();\r
+ tail.removeListener(this);\r
+ head.removeListener(this);\r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ tail.addListener(this);\r
+ head.addListener(this);\r
+ \r
+ lineNode1 = parent.addNode(ShapeNode.class);\r
+ lineNode1.setScaleStroke(true);\r
+ lineNode2 = parent.addNode(ShapeNode.class);\r
+ lineNode2.setScaleStroke(true);\r
+ \r
+ //arrowNode = parent.addNode(FilledShapeNode.class);\r
+ update();\r
+ }\r
+ \r
+ protected Shape createArrow(double x, double y, double dx, double dy) {\r
+ Path2D path = new Path2D.Double();\r
+ path.moveTo(x+ARROW_LENGTH1*dx, y+ARROW_LENGTH1*dy);\r
+ x -= ARROW_LENGTH2*dx;\r
+ y -= ARROW_LENGTH2*dy;\r
+ path.lineTo(x-ARROW_WIDTH*dy, y+ARROW_WIDTH*dx);\r
+ path.lineTo(x+ARROW_WIDTH*dy, y-ARROW_WIDTH*dx);\r
+ path.closePath();\r
+ return path;\r
+ }\r
+ \r
+ // TODO\r
+ \r
+ private void draw(boolean vertical, double ... coordinates) {\r
+ lineNode1.setShape(Flows.createOffsetLine(vertical, OFFSET, coordinates));\r
+ lineNode2.setShape(Flows.createOffsetLine(vertical, -OFFSET, coordinates));\r
+ }\r
+\r
+ private void draw(Connectable valve, Connectable node) {\r
+ double x0 = valve.getOrigo().getX();\r
+ double y0 = valve.getOrigo().getY(); \r
+ double x1 = node.getOrigo().getX();\r
+ double y1 = node.getOrigo().getY();\r
+\r
+ Rectangle2D rect = new Rectangle2D.Double();\r
+ node.getBounds(rect);\r
+ if( ((ValveElement)valve).rotated ) {\r
+ if(y1 > y0)\r
+ y0 += OFFSET;\r
+ else\r
+ y0 -= OFFSET;\r
+ if(rect.getMinX() <= x0 && rect.getMaxX() >= x0) {\r
+ if(y1 > y0)\r
+ draw(true, y0, x0, rect.getMinY());\r
+ else\r
+ draw(true, y0, x0, rect.getMaxY());\r
+ }\r
+ else {\r
+ if(x1 > x0)\r
+ draw(true, y0, x0, y1, rect.getMinX());\r
+ else\r
+ draw(true, y0, x0, y1, rect.getMaxX());\r
+ }\r
+ }\r
+ else {\r
+ if(x1 > x0)\r
+ x0 += OFFSET;\r
+ else\r
+ x0 -= OFFSET;\r
+ if(rect.getMinY() <= y0 && rect.getMaxY() >= y0) {\r
+ if(x1 > x0)\r
+ draw(false, x0, y0, rect.getMinX());\r
+ else\r
+ draw(false, x0, y0, rect.getMaxX());\r
+ }\r
+ else {\r
+ if(y1 > y0)\r
+ draw(false, x0, y0, x1, rect.getMinY());\r
+ else\r
+ draw(false, x0, y0, x1, rect.getMaxY());\r
+ }\r
+ }\r
+ }\r
+\r
+ protected void updateSceneGraph() {\r
+ if(tail instanceof ValveElement)\r
+ draw(tail, head);\r
+ else if(head instanceof ValveElement)\r
+ draw(head, tail);\r
+ }\r
+ \r
+ // TODO\r
+ \r
+ public void update() {\r
+ if(lineNode1 != null)\r
+ updateSceneGraph();\r
+ super.update();\r
+ }\r
+ \r
+ @Override\r
+ public void getBounds(Rectangle2D bounds) {\r
+ bounds.setFrame(lineNode1.getBounds());\r
+ }\r
+\r
+ @Override\r
+ public boolean hitTest(double x, double y, double tolerance) {\r
+ // TODO\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public <T> T getInterface(Class<T> clazz) { \r
+ return super.getInterface(clazz);\r
+ }\r
+\r
+ @Override\r
+ public void elementRemoved(IElement element) {\r
+ remove(); \r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.geom.Path2D;\r
+\r
+public class Flows {\r
+ public static Path2D createLine(boolean vertical, double ... coordinates) {\r
+ Path2D path = new Path2D.Double();\r
+ if(vertical)\r
+ path.moveTo(coordinates[1], coordinates[0]);\r
+ else\r
+ path.moveTo(coordinates[0], coordinates[1]);\r
+ for(int i=2;i<coordinates.length;++i, vertical = !vertical) {\r
+ if(vertical)\r
+ path.lineTo(coordinates[i-1], coordinates[i]);\r
+ else\r
+ path.lineTo(coordinates[i], coordinates[i-1]);\r
+ }\r
+ return path;\r
+ }\r
+ \r
+ public static Path2D createOffsetLine(boolean vertical, double offset, double ... coordinates) {\r
+ double[] newCoordinats = new double[coordinates.length];\r
+ newCoordinats[0] = coordinates[0];\r
+ newCoordinats[coordinates.length-1] = coordinates[coordinates.length-1];\r
+ for(int i=1;i<coordinates.length-1;++i) {\r
+ if(coordinates[i-1] < coordinates[i+1] ^ (i&1)==1)\r
+ newCoordinats[i] = coordinates[i]+offset;\r
+ else\r
+ newCoordinats[i] = coordinates[i]-offset;\r
+ }\r
+ return createLine(vertical, newCoordinats);\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.geom.Point2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.element.Element;\r
+import org.simantics.h2d.element.handler.Movable;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+\r
+/**\r
+ * Base class of elements that have rectangular shape (for hit testing)\r
+ * and which can be moved.\r
+ * @author Hannu Niemistö\r
+ */\r
+public abstract class RectangularElement extends Element implements Movable {\r
+ \r
+ protected Rectangle2D bounds = new Rectangle2D.Double();\r
+ \r
+ @RelatedValue("http://www.simantics.org/Sysdyn#HasX")\r
+ protected double posX;\r
+ @RelatedValue("http://www.simantics.org/Sysdyn#HasY")\r
+ protected double posY; \r
+ \r
+ public RectangularElement() { \r
+ }\r
+ \r
+ @Override\r
+ public void getBounds(Rectangle2D bounds) {\r
+ bounds.setFrame(this.bounds);\r
+ }\r
+\r
+ @Override\r
+ public boolean hitTest(double x, double y, double tolerance) {\r
+ return bounds.intersects(x-tolerance, y-tolerance, 2.0*tolerance, 2.0*tolerance);\r
+ } \r
+ \r
+ @Override\r
+ public void move(double deltaX, double deltaY) {\r
+ posX += deltaX;\r
+ posY += deltaY;\r
+ update();\r
+ }\r
+ \r
+ public Point2D getOrigo() {\r
+ return new Point2D.Double(posX, posY);\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import org.simantics.h2d.node.RectangleNode;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Stock")\r
+public class StockElement extends TextElement {\r
+ \r
+ RectangleNode rectangleNode;\r
+ \r
+ public StockElement() { \r
+ }\r
+ \r
+ public StockElement(String label, double x, double y) {\r
+ super(label, x, y);\r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ rectangleNode = parent.addNode(RectangleNode.class);\r
+ super.init(parent);\r
+ }\r
+ \r
+ @Override\r
+ public void remove() {\r
+ rectangleNode.remove();\r
+ super.remove();\r
+ }\r
+\r
+ @Override\r
+ protected void update() {\r
+ super.update();\r
+ if(rectangleNode != null)\r
+ rectangleNode.init(bounds);\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.Color;\r
+import java.awt.Font;\r
+import java.awt.font.FontRenderContext;\r
+import java.awt.geom.AffineTransform;\r
+import java.awt.geom.Rectangle2D;\r
+\r
+import org.simantics.h2d.action.IAction;\r
+import org.simantics.h2d.editor.IDiagramEditor;\r
+import org.simantics.h2d.element.handler.Connectable;\r
+import org.simantics.h2d.element.handler.Movable;\r
+import org.simantics.h2d.event.ClickEvent;\r
+import org.simantics.h2d.event.IEvent;\r
+import org.simantics.h2d.event.KeyboardEvent;\r
+import org.simantics.h2d.event.handler.IEventHandler;\r
+import org.simantics.h2d.node.ITextListener;\r
+import org.simantics.h2d.node.TextNode;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Auxiliary")\r
+public class TextElement extends RectangularElement implements Movable, Connectable, IEventHandler {\r
+ \r
+ static final Font FONT = new Font("sans-serif", Font.PLAIN, 12);\r
+ static final double FONT_SCALE = 0.3;\r
+ static final AffineTransform FONT_TRANSFORM = new AffineTransform(FONT_SCALE, 0.0, 0.0, FONT_SCALE, 0.0, 0.0);\r
+ \r
+ static final double XPADDING = 4.0;\r
+ static final double YPADDING = 2.0;\r
+ static final FontRenderContext FRC = new FontRenderContext(FONT_TRANSFORM, true, true);\r
+\r
+ // Properties\r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName")\r
+ public String label = "Unnamed";\r
+ \r
+ // Auxiliary fields\r
+ double textX;\r
+ double textY;\r
+ \r
+ TextNode textNode;\r
+ \r
+ public TextElement() { \r
+ }\r
+ \r
+ public TextElement(String label, double x, double y) {\r
+ this.label = label;\r
+ this.posX = x;\r
+ this.posY = y;\r
+ }\r
+\r
+ @Override\r
+ public void remove() {\r
+ textNode.remove();\r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ textNode = parent.addNode(TextNode.class);\r
+ update();\r
+ }\r
+ \r
+ @Override\r
+ protected void update() {\r
+ Rectangle2D textBounds = FONT.getStringBounds(label, FRC);\r
+ textBounds.setFrame(\r
+ textBounds.getX()*FONT_SCALE,\r
+ textBounds.getY()*FONT_SCALE,\r
+ textBounds.getWidth()*FONT_SCALE,\r
+ textBounds.getHeight()*FONT_SCALE\r
+ );\r
+ \r
+ textX = posX-textBounds.getCenterX();\r
+ textY = posY-textBounds.getCenterY();\r
+ bounds.setFrame(\r
+ posX-textBounds.getWidth()*0.5-XPADDING,\r
+ posY-textBounds.getHeight()*0.5-YPADDING,\r
+ textBounds.getWidth()+XPADDING*2,\r
+ textBounds.getHeight()+YPADDING*2\r
+ ); \r
+ \r
+ if(textNode != null)\r
+ textNode.init(label, FONT, Color.BLACK, textX, textY, FONT_SCALE);\r
+ \r
+ super.update();\r
+ }\r
+\r
+ class TextEditingAction implements IAction, ITextListener {\r
+ \r
+ String oldText;\r
+ IDiagramEditor editor;\r
+\r
+ public TextEditingAction(IDiagramEditor editor) {\r
+ super();\r
+ this.editor = editor;\r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ oldText = textNode.getText();\r
+ textNode.setEditMode(true); \r
+ textNode.setTextListener(this);\r
+ /*textFieldNode = parent.addNode(TextFieldNode.class);\r
+ textFieldNode.init(10.0, 10.0);*/\r
+ }\r
+\r
+ @Override\r
+ public void remove() {\r
+ textNode.setEditMode(false);\r
+ textNode.setTextListener(null);\r
+ //textFieldNode.remove(); \r
+ }\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ System.out.println("action");\r
+ if(_event instanceof KeyboardEvent) {\r
+ KeyboardEvent event = (KeyboardEvent)_event;\r
+ if(event.key.equals("Escape")) {\r
+ label = oldText;\r
+ update();\r
+ editor.removeAction(this); \r
+ editor.requestRepaint(); \r
+ }\r
+ else if(event.key.equals("Enter"))\r
+ editor.removeAction(this);\r
+ return true;\r
+ }\r
+ else if(_event instanceof ClickEvent) {\r
+ editor.removeAction(this);\r
+ }\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public void textChanged() {\r
+ label = textNode.getText();\r
+ update();\r
+ editor.requestRepaint();\r
+ }\r
+ \r
+ }\r
+ \r
+ public void beginRenameAction(IDiagramEditor editor) {\r
+ editor.addAction(new TextEditingAction(editor));\r
+ }\r
+\r
+ @Override\r
+ public boolean handle(IDiagramEditor editor, IEvent _event) {\r
+ if(_event instanceof KeyboardEvent) {\r
+ KeyboardEvent event = (KeyboardEvent)_event;\r
+ if(event.key.equals("F2")) {\r
+ beginRenameAction(editor);\r
+ return true;\r
+ } \r
+ }\r
+ return false;\r
+ } \r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.elements;\r
+\r
+import java.awt.BasicStroke;\r
+import java.awt.Color;\r
+import java.awt.geom.Path2D;\r
+\r
+import org.simantics.h2d.element.handler.Connectable;\r
+import org.simantics.h2d.element.handler.Rotatable;\r
+import org.simantics.h2d.node.ShapeNode;\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.scenegraph.g2d.G2DParentNode;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Valve")\r
+public class ValveElement extends RectangularElement implements Connectable, Rotatable {\r
+ \r
+ public static final double VALVE_SIZE = 5.0;\r
+ \r
+ ShapeNode valveNode;\r
+ boolean rotated = false;\r
+ \r
+ public ValveElement() { \r
+ }\r
+ \r
+ public ValveElement(double x, double y) {\r
+ this.posX = x;\r
+ this.posY = y; \r
+ }\r
+\r
+ @Override\r
+ public void init(G2DParentNode parent) {\r
+ valveNode = parent.addNode(ShapeNode.class);\r
+ valveNode.setColor(Color.BLACK);\r
+ valveNode.setScaleStroke(true);\r
+ valveNode.setStroke(new BasicStroke(1));\r
+ update();\r
+ }\r
+\r
+ @Override\r
+ public void remove() {\r
+ valveNode.remove();\r
+ }\r
+ \r
+ @Override\r
+ protected void update() {\r
+ bounds.setFrame(posX-VALVE_SIZE, posY-VALVE_SIZE, 2.0*VALVE_SIZE, 2.0*VALVE_SIZE);\r
+ Path2D path = new Path2D.Double();\r
+ path.moveTo(posX-VALVE_SIZE, posY-VALVE_SIZE);\r
+ if(rotated) {\r
+ path.lineTo(posX-VALVE_SIZE, posY+VALVE_SIZE);\r
+ path.lineTo(posX+VALVE_SIZE, posY-VALVE_SIZE);\r
+ }\r
+ else { \r
+ path.lineTo(posX+VALVE_SIZE, posY-VALVE_SIZE);\r
+ path.lineTo(posX-VALVE_SIZE, posY+VALVE_SIZE); \r
+ }\r
+ path.lineTo(posX+VALVE_SIZE, posY+VALVE_SIZE);\r
+ path.closePath();\r
+ valveNode.setShape(path);\r
+ super.update();\r
+ }\r
+\r
+ @Override\r
+ public void rotate(int amount) {\r
+ if((amount & 1) == 1) {\r
+ rotated = !rotated;\r
+ update();\r
+ }\r
+ }\r
+\r
+ public boolean isRotated() {\r
+ return rotated;\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.ui.modelica;\r
+\r
+import org.eclipse.jface.viewers.ISelection;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.ui.ISelectionListener;\r
+import org.eclipse.ui.IWorkbenchPart;\r
+import org.eclipse.ui.part.ViewPart;\r
+\r
+public class ModelicaView extends ViewPart implements ISelectionListener {\r
+ \r
+ @Override \r
+ public void createPartControl(Composite parent) {\r
+ getSite().getPage().addPostSelectionListener(this);\r
+ new Label(parent, SWT.NONE).setText("Hello World!");\r
+ } \r
+\r
+ @Override\r
+ public void setFocus() {\r
+ // TODO Auto-generated method stub\r
+\r
+ }\r
+\r
+ @Override\r
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {\r
+ System.out.println("selection changed");\r
+ }\r
+\r
+}\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+[paths]\r
+default=ssh://simusite/org.simantics.sysdyn
\ No newline at end of file
--- /dev/null
+revlogv1
+store
+fncache
--- /dev/null
+data/.classpath.i
+data/.hgignore.i
+data/.project.i
+data/.settings/org.eclipse.jdt.core.prefs.i
+data/META-INF/MANIFEST.MF.i
+data/build.properties.i
+data/src/org/simantics/sysdyn/modelica/ModelicaWriter.java.i
+data/src/org/simantics/sysdyn/representation/Auxiliary.java.i
+data/src/org/simantics/sysdyn/representation/Cloud.java.i
+data/src/org/simantics/sysdyn/representation/Configuration.java.i
+data/src/org/simantics/sysdyn/representation/Dependency.java.i
+data/src/org/simantics/sysdyn/representation/Flow.java.i
+data/src/org/simantics/sysdyn/representation/IElement.java.i
+data/src/org/simantics/sysdyn/representation/Stock.java.i
+data/src/org/simantics/sysdyn/representation/Valve.java.i
+data/src/org/simantics/sysdyn/representation/Variable.java.i
+data/src/org/simantics/sysdyn/representation/visitors/ElementVisitorVoidAdapter.java.i
+data/src/org/simantics/sysdyn/representation/visitors/IElementVisitorVoid.java.i
--- /dev/null
+default
\ No newline at end of file
--- /dev/null
+syntax: regexp\r
+^bin/
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>org.simantics.sysdyn</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.ManifestBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.pde.SchemaBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>org.eclipse.pde.PluginNature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Mon Nov 16 15:37:44 EET 2009\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6\r
+org.eclipse.jdt.core.compiler.compliance=1.6\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.source=1.6\r
--- /dev/null
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Sysdyn
+Bundle-SymbolicName: org.simantics.sysdyn
+Bundle-Version: 1.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: org.simantics.objmap;bundle-version="0.1.0"
--- /dev/null
+source.. = src/\r
+output.. = bin/\r
+bin.includes = META-INF/,\\r
+ .\r
--- /dev/null
+package org.simantics.sysdyn.modelica;\r
+\r
+import org.simantics.sysdyn.representation.Auxiliary;\r
+import org.simantics.sysdyn.representation.Configuration;\r
+import org.simantics.sysdyn.representation.IElement;\r
+import org.simantics.sysdyn.representation.Stock;\r
+import org.simantics.sysdyn.representation.Valve;\r
+import org.simantics.sysdyn.representation.visitors.ElementVisitorVoidAdapter;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+public class ModelicaWriter {\r
+\r
+ StringBuilder b;\r
+ \r
+ IElementVisitorVoid componentWriter = new ElementVisitorVoidAdapter() {\r
+ public void visit(Auxiliary auxiliary) {\r
+ b.append(" Real ").append(escape(auxiliary.name)).append(";\n");\r
+ }\r
+ public void visit(Stock stock) {\r
+ b.append(" Real ").append(escape(stock.name)).append(";\n");\r
+ } \r
+ public void visit(Valve valve) {\r
+ // TODO\r
+ }\r
+ };\r
+ \r
+ IElementVisitorVoid equationWriter = new ElementVisitorVoidAdapter() {\r
+ public void visit(Auxiliary auxiliary) {\r
+ b.append(" ").append(escape(auxiliary.name))\r
+ .append(" = ").append(auxiliary.value).append(";\n");\r
+ }\r
+ public void visit(Stock stock) {\r
+ } \r
+ public void visit(Valve valve) {\r
+ }\r
+ };\r
+ \r
+ public void write(Configuration conf) {\r
+ conf.update();\r
+ b.append("model ").append(conf.name).append('\n');\r
+ for(IElement element : conf.elements)\r
+ element.accept(componentWriter);\r
+ b.append("equation\n");\r
+ for(IElement element : conf.elements)\r
+ element.accept(equationWriter);\r
+ b.append("end ").append(conf.name).append(";\n");\r
+ }\r
+ \r
+ public String escape(String name) {\r
+ return name;\r
+ }\r
+ \r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Auxiliary")\r
+public class Auxiliary extends Variable {\r
+ // TODO\r
+ public String value;\r
+\r
+ @Override\r
+ public void accept(IElementVisitorVoid v) {\r
+ v.visit(this); \r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Cloud")\r
+public class Cloud implements IElement {\r
+ @Override\r
+ public void accept(IElementVisitorVoid v) {\r
+ v.visit(this); \r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+import org.simantics.sysdyn.representation.visitors.ElementVisitorVoidAdapter;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Configuration")\r
+public class Configuration {\r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName")\r
+ public String name = "Unnamed";\r
+ \r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf")\r
+ public ArrayList<IElement> elements = new ArrayList<IElement>();\r
+ \r
+ IElementVisitorVoid clearVisitor = new ElementVisitorVoidAdapter() {\r
+ public void visit(Stock stock) {\r
+ stock.incomingFlows.clear();\r
+ stock.outgoingFlows.clear();\r
+ }\r
+ };\r
+ \r
+ IElementVisitorVoid updateVisitor = new ElementVisitorVoidAdapter() {\r
+ public void visit(Flow flow) {\r
+ if(flow.head instanceof Stock) {\r
+ ((Stock)flow.head).incomingFlows.add((Variable)flow.tail);\r
+ }\r
+ else if(flow.tail instanceof Stock) {\r
+ ((Stock)flow.tail).outgoingFlows.add((Variable)flow.head);\r
+ }\r
+ }\r
+ };\r
+ \r
+ public void update() {\r
+ for(IElement element : elements)\r
+ element.accept(clearVisitor);\r
+ for(IElement element : elements)\r
+ element.accept(updateVisitor);\r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedElement;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Cloud")\r
+public class Dependency implements IElement {\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasTail")\r
+ public IElement tail;\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasHead")\r
+ public IElement head;\r
+ \r
+ @Override\r
+ public void accept(IElementVisitorVoid v) {\r
+ v.visit(this); \r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.objmap.annotations.RelatedElement;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Cloud")\r
+public class Flow implements IElement {\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasTail")\r
+ public IElement tail;\r
+ @RelatedElement("http://www.simantics.org/Sysdyn#HasHead")\r
+ public IElement head;\r
+ \r
+ @Override\r
+ public void accept(IElementVisitorVoid v) {\r
+ v.visit(this); \r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+public interface IElement {\r
+ void accept(IElementVisitorVoid v);\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import java.util.ArrayList;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Stock")\r
+public class Stock extends Variable {\r
+ public ArrayList<Variable> incomingFlows = new ArrayList<Variable>(2);\r
+ public ArrayList<Variable> outgoingFlows = new ArrayList<Variable>(2);\r
+ \r
+ public Stock() {\r
+ name = "Valve" + hashCode(); // FIXME\r
+ }\r
+ \r
+ @Override\r
+ public void accept(IElementVisitorVoid v) {\r
+ v.visit(this); \r
+ }\r
+}\r
+\r
+\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.objmap.annotations.GraphType;\r
+import org.simantics.sysdyn.representation.visitors.IElementVisitorVoid;\r
+\r
+@GraphType("http://www.simantics.org/Sysdyn#Valve")\r
+public class Valve implements IElement {\r
+ @Override\r
+ public void accept(IElementVisitorVoid v) {\r
+ v.visit(this); \r
+ }\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation;\r
+\r
+import org.simantics.objmap.annotations.RelatedValue;\r
+\r
+public abstract class Variable implements IElement {\r
+ @RelatedValue("http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName")\r
+ public String name;\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation.visitors;\r
+\r
+import org.simantics.sysdyn.representation.Auxiliary;\r
+import org.simantics.sysdyn.representation.Cloud;\r
+import org.simantics.sysdyn.representation.Dependency;\r
+import org.simantics.sysdyn.representation.Flow;\r
+import org.simantics.sysdyn.representation.Stock;\r
+import org.simantics.sysdyn.representation.Valve;\r
+\r
+public class ElementVisitorVoidAdapter implements IElementVisitorVoid {\r
+\r
+ @Override\r
+ public void visit(Auxiliary auxiliary) {\r
+ }\r
+\r
+ @Override\r
+ public void visit(Stock stock) {\r
+ }\r
+\r
+ @Override\r
+ public void visit(Valve valve) {\r
+ }\r
+\r
+ @Override\r
+ public void visit(Cloud cloud) {\r
+ }\r
+\r
+ @Override\r
+ public void visit(Dependency dependency) {\r
+ }\r
+\r
+ @Override\r
+ public void visit(Flow flow) {\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.simantics.sysdyn.representation.visitors;\r
+\r
+import org.simantics.sysdyn.representation.Auxiliary;\r
+import org.simantics.sysdyn.representation.Cloud;\r
+import org.simantics.sysdyn.representation.Dependency;\r
+import org.simantics.sysdyn.representation.Flow;\r
+import org.simantics.sysdyn.representation.Stock;\r
+import org.simantics.sysdyn.representation.Valve;\r
+\r
+public interface IElementVisitorVoid {\r
+\r
+ void visit(Auxiliary auxiliary);\r
+ void visit(Stock stock);\r
+ void visit(Valve valve);\r
+ void visit(Cloud cloud);\r
+ void visit(Dependency dependency);\r
+ void visit(Flow flow); \r
+ \r
+}\r
--- /dev/null
+5a5765503c4c4eb33b41b2006e90d27704403ded 4
+5a5765503c4c4eb33b41b2006e90d27704403ded default
--- /dev/null
+[paths]\r
+default = ssh://simusite/sysdyn_ontologies
\ No newline at end of file
--- /dev/null
+revlogv1
+store
+fncache
--- /dev/null
+data/.hgignore.i
+data/.project.i
+data/dependencies.txt.i
+data/generate_sysdyn.bat.i
+data/install.map.i
+data/sysdyn.graph.i
+data/sysdynOld.graph.i
--- /dev/null
+default
\ No newline at end of file
--- /dev/null
+syntax: regexp\r
+^c_sharp/\r
+^org/\r
+^layer0c.bin\r
+^layer0c.txt\r
+^directories.log
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>sysdyn_ontologies</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ </buildSpec>\r
+ <natures>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.db {\r
+\r
+\r
+public class Builtins {\r
+ \r
+ public readonly Resource RootLibrary;\r
+ public readonly Resource Abstract;\r
+ public readonly Resource AbstractContextualList;\r
+ public readonly Resource Acquires;\r
+ public readonly Resource AcquiringRelation;\r
+ public readonly Resource Admin;\r
+ public readonly Resource AllValuesSatisfy;\r
+ public readonly Resource AppliesFirst;\r
+ public readonly Resource AppliesRelation;\r
+ public readonly Resource AppliesThen;\r
+ public readonly Resource Assertion;\r
+ public readonly Resource Asserts;\r
+ public readonly Resource BinaryPredicate;\r
+ public readonly Resource Boolean;\r
+ public readonly Resource BooleanArray;\r
+ public readonly Resource Boolean_;\r
+ public readonly Resource Byte;\r
+ public readonly Resource ByteArray;\r
+ public readonly Resource Cardinality0;\r
+ public readonly Resource Cardinality1;\r
+ public readonly Resource Cardinality2;\r
+ public readonly Resource CardinalityRestriction;\r
+ public readonly Resource Cardinalityatleast1;\r
+ public readonly Resource Cardinalityatmost1;\r
+ public readonly Resource Complex128;\r
+ public readonly Resource Complex64;\r
+ public readonly Resource Complex_;\r
+ public readonly Resource Component;\r
+ public readonly Resource CompositePredicate;\r
+ public readonly Resource ConcernsRelation;\r
+ public readonly Resource ConditionalList;\r
+ public readonly Resource Conjunction;\r
+ public readonly Resource ConsistsOf;\r
+ public readonly Resource ConsistsOfNamespace;\r
+ public readonly Resource Constraint;\r
+ public readonly Resource Context;\r
+ public readonly Resource ContextualList;\r
+ public readonly Resource DataType;\r
+ public readonly Resource DefaultPerspective;\r
+ public readonly Resource DefaultPropertyProvider;\r
+ public readonly Resource DependsOn;\r
+ public readonly Resource Disjunction;\r
+ public readonly Resource DocumentTemplate;\r
+ public readonly Resource Double;\r
+ public readonly Resource DoubleArray;\r
+ public readonly Resource EmptyString;\r
+ public readonly Resource Entity;\r
+ public readonly Resource EntityType;\r
+ public readonly Resource Enumeration;\r
+ public readonly Resource EqualityRequirement;\r
+ public readonly Resource EvaluatesTo;\r
+ public readonly Resource Experiment;\r
+ public readonly Resource ExperimentControl;\r
+ public readonly Resource ExperimentControlFeature;\r
+ public readonly Resource ExperimentLibrary;\r
+ public readonly Resource ExtensionFeature;\r
+ public readonly Resource Extent;\r
+ public readonly Resource ExtentOf;\r
+ public readonly Resource False;\r
+ public readonly Resource Feature;\r
+ public readonly Resource Final;\r
+ public readonly Resource Float;\r
+ public readonly Resource Float32;\r
+ public readonly Resource Float64;\r
+ public readonly Resource FloatArray;\r
+ public readonly Resource Float_;\r
+ public readonly Resource Function;\r
+ public readonly Resource FunctionType;\r
+ public readonly Resource FunctionalRelation;\r
+ public readonly Resource GenericRelation;\r
+ public readonly Resource HasAttributeName;\r
+ public readonly Resource HasBaseUnit;\r
+ public readonly Resource HasBinaryPredicate;\r
+ public readonly Resource HasBindingPattern;\r
+ public readonly Resource HasCardinality;\r
+ public readonly Resource HasChangeCode;\r
+ public readonly Resource HasComment;\r
+ public readonly Resource HasComponentRelation;\r
+ public readonly Resource HasComponentType;\r
+ public readonly Resource HasCondition;\r
+ public readonly Resource HasConfiguration;\r
+ public readonly Resource HasConversion;\r
+ public readonly Resource HasDefaultPerspective;\r
+ public readonly Resource HasDefaultValue;\r
+ public readonly Resource HasDescription;\r
+ public readonly Resource HasDevsComponent;\r
+ public readonly Resource HasDocumentTemplate;\r
+ public readonly Resource HasDocumentation;\r
+ public readonly Resource HasDomain;\r
+ public readonly Resource HasElement;\r
+ public readonly Resource HasElseElement;\r
+ public readonly Resource HasEmail;\r
+ public readonly Resource HasEntity;\r
+ public readonly Resource HasExponent;\r
+ public readonly Resource HasExtensionId;\r
+ public readonly Resource HasExtent;\r
+ public readonly Resource HasFeature;\r
+ public readonly Resource HasGeneratedNamePrefix;\r
+ public readonly Resource HasInheritedProperty;\r
+ public readonly Resource HasInitialState;\r
+ public readonly Resource HasInstance;\r
+ public readonly Resource HasLabel;\r
+ public readonly Resource HasLowerBound;\r
+ public readonly Resource HasMagnitude;\r
+ public readonly Resource HasMaxCardinality;\r
+ public readonly Resource HasMaxLength;\r
+ public readonly Resource HasMethod;\r
+ public readonly Resource HasMinCardinality;\r
+ public readonly Resource HasMinLength;\r
+ public readonly Resource HasModel;\r
+ public readonly Resource HasMultiplicity;\r
+ public readonly Resource HasName;\r
+ public readonly Resource HasNamespace;\r
+ public readonly Resource HasNamespaceRoot;\r
+ public readonly Resource HasNext;\r
+ public readonly Resource HasObject;\r
+ public readonly Resource HasPackageName;\r
+ public readonly Resource HasPasswordHash;\r
+ public readonly Resource HasPattern;\r
+ public readonly Resource HasPerspective;\r
+ public readonly Resource HasPredicate;\r
+ public readonly Resource HasPrevious;\r
+ public readonly Resource HasProperty;\r
+ public readonly Resource HasPropertyDefinition;\r
+ public readonly Resource HasPropertyProvider;\r
+ public readonly Resource HasRange;\r
+ public readonly Resource HasRelation;\r
+ public readonly Resource HasReportFactory;\r
+ public readonly Resource HasRequirement;\r
+ public readonly Resource HasResourceClass;\r
+ public readonly Resource HasReturnType;\r
+ public readonly Resource HasScale;\r
+ public readonly Resource HasShift;\r
+ public readonly Resource HasSignature;\r
+ public readonly Resource HasSingleInstance;\r
+ public readonly Resource HasState;\r
+ public readonly Resource HasStubMethod;\r
+ public readonly Resource HasStubName;\r
+ public readonly Resource HasStubsPackage;\r
+ public readonly Resource HasSymbol;\r
+ public readonly Resource HasTextualIssue;\r
+ public readonly Resource HasThenElement;\r
+ public readonly Resource HasTrigger;\r
+ public readonly Resource HasType;\r
+ public readonly Resource HasUnit;\r
+ public readonly Resource HasUnit_;\r
+ public readonly Resource HasUpperBound;\r
+ public readonly Resource HasValidNumericalRange;\r
+ public readonly Resource HasValueRequirement;\r
+ public readonly Resource HasVersion;\r
+ public readonly Resource Ignore;\r
+ public readonly Resource Includes;\r
+ public readonly Resource Inherits;\r
+ public readonly Resource InstanceOf;\r
+ public readonly Resource Int16;\r
+ public readonly Resource Int32;\r
+ public readonly Resource Int64;\r
+ public readonly Resource Int8;\r
+ public readonly Resource Integer;\r
+ public readonly Resource IntegerArray;\r
+ public readonly Resource IntegerRangeUnion;\r
+ public readonly Resource Integer_;\r
+ public readonly Resource IntersectionPredicate;\r
+ public readonly Resource InverseOf;\r
+ public readonly Resource InverseOfIsRelatedTo;\r
+ public readonly Resource InversePredicate;\r
+ public readonly Resource IsAcquiredBy;\r
+ public readonly Resource IsCompatibleWithFeature;\r
+ public readonly Resource IsComposedOf;\r
+ public readonly Resource IsConfigurationOf;\r
+ public readonly Resource IsDependencyOf;\r
+ public readonly Resource IsIncludedWith;\r
+ public readonly Resource IsIncompatibleWithFeature;\r
+ public readonly Resource IsInheritantlyRelatedTo;\r
+ public readonly Resource IsInheritantlyWeaklyRelatedTo;\r
+ public readonly Resource IsOperation;\r
+ public readonly Resource IsOwnedBy;\r
+ public readonly Resource IsPropagatedWith;\r
+ public readonly Resource IsPropertyDefinitionOf;\r
+ public readonly Resource IsRelatedTo;\r
+ public readonly Resource IsSingleInstanceOf;\r
+ public readonly Resource IsWeaklyRelatedTo;\r
+ public readonly Resource KernelDeveloper;\r
+ public readonly Resource Library;\r
+ public readonly Resource LibraryDeveloper;\r
+ public readonly Resource LifecycleFeature;\r
+ public readonly Resource LinearUnitConversion;\r
+ public readonly Resource LinkedList;\r
+ public readonly Resource Long;\r
+ public readonly Resource LongArray;\r
+ public readonly Resource Model;\r
+ public readonly Resource ModelConfigurator;\r
+ public readonly Resource ModelLibrary;\r
+ public readonly Resource ModelManager;\r
+ public readonly Resource ModelManagerFeature;\r
+ public readonly Resource ModelUser;\r
+ public readonly Resource ModellingDomain;\r
+ public readonly Resource NamedUnit;\r
+ public readonly Resource Namespace;\r
+ public readonly Resource NamespaceLibrary;\r
+ public readonly Resource NamespaceOf;\r
+ public readonly Resource Negation;\r
+ public readonly Resource Number;\r
+ public readonly Resource NumberType;\r
+ public readonly Resource Number_;\r
+ public readonly Resource Ontology;\r
+ public readonly Resource OntologyDevelopmentProject;\r
+ public readonly Resource OntologyRequirementValidationFeature;\r
+ public readonly Resource Operation;\r
+ public readonly Resource OptionType;\r
+ public readonly Resource OrderedSet;\r
+ public readonly Resource OrderedSetElements;\r
+ public readonly Resource OverridableAssertion;\r
+ public readonly Resource PartOf;\r
+ public readonly Resource Perspective;\r
+ public readonly Resource PhysicalDouble;\r
+ public readonly Resource PhysicalFloat;\r
+ public readonly Resource PhysicalInteger;\r
+ public readonly Resource PhysicalPropertyType;\r
+ public readonly Resource PowerUnit;\r
+ public readonly Resource Predicate;\r
+ public readonly Resource ProductUnit;\r
+ public readonly Resource Project2;\r
+ public readonly Resource ProjectType2;\r
+ public readonly Resource Propagates;\r
+ public readonly Resource PropagatesFrom;\r
+ public readonly Resource PropagatesTo;\r
+ public readonly Resource Property;\r
+ public readonly Resource PropertyDefinition;\r
+ public readonly Resource PropertyLibrary;\r
+ public readonly Resource PropertyOf;\r
+ public readonly Resource PropertyProvider;\r
+ public readonly Resource PropertyType;\r
+ public readonly Resource Query;\r
+ public readonly Resource Real;\r
+ public readonly Resource RecordType;\r
+ public readonly Resource RegularExpression;\r
+ public readonly Resource Relation;\r
+ public readonly Resource RelationApplication;\r
+ public readonly Resource RelationLibrary;\r
+ public readonly Resource RelationRequirement;\r
+ public readonly Resource Report;\r
+ public readonly Resource RequiredByFeature;\r
+ public readonly Resource Requirement;\r
+ public readonly Resource RequirementConjunction;\r
+ public readonly Resource RequirementDisjunction;\r
+ public readonly Resource RequirementNegation;\r
+ public readonly Resource Requires;\r
+ public readonly Resource RequiresFeature;\r
+ public readonly Resource RequiresNamespace;\r
+ public readonly Resource ResourceType;\r
+ public readonly Resource Resource_;\r
+ public readonly Resource Role;\r
+ public readonly Resource ScaledUnit;\r
+ public readonly Resource SequenceType;\r
+ public readonly Resource ShiftedUnitConversion;\r
+ public readonly Resource Singleton;\r
+ public readonly Resource SomeValuesSatisfy;\r
+ public readonly Resource State;\r
+ public readonly Resource String;\r
+ public readonly Resource StringArray;\r
+ public readonly Resource StringType;\r
+ public readonly Resource String_;\r
+ public readonly Resource SubExtentOf;\r
+ public readonly Resource SubrelationOf;\r
+ public readonly Resource SuperExtentOf;\r
+ public readonly Resource SuperrelationOf;\r
+ public readonly Resource SupertypeOf;\r
+ public readonly Resource Tag;\r
+ public readonly Resource TagLibrary;\r
+ public readonly Resource TransitiveClosure;\r
+ public readonly Resource Trigger;\r
+ public readonly Resource True;\r
+ public readonly Resource Type;\r
+ public readonly Resource TypeBasedList;\r
+ public readonly Resource TypeLibrary;\r
+ public readonly Resource TypeRequirement;\r
+ public readonly Resource URI;\r
+ public readonly Resource URI_;\r
+ public readonly Resource URL;\r
+ public readonly Resource UnionPredicate;\r
+ public readonly Resource UnionType;\r
+ public readonly Resource Unit;\r
+ public readonly Resource UnitConversion;\r
+ public readonly Resource User;\r
+ public readonly Resource Value;\r
+ public readonly Resource ValueRequirement;\r
+ public readonly Resource ValueType;\r
+ public readonly Resource Version;\r
+ public readonly Resource ViewpointLibrary;\r
+ \r
+ public static class URIs {\r
+ public const String RootLibrary = "http://www.vtt.fi/Simantics#RootLibrary";\r
+ public const String Abstract = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Abstract";\r
+ public const String AbstractContextualList = "http://www.vtt.fi/Simantics/Layer0/1.0#AbstractContextualList";\r
+ public const String Acquires = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Acquires";\r
+ public const String AcquiringRelation = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#AcquiringRelation";\r
+ public const String Admin = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Admin";\r
+ public const String AllValuesSatisfy = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#AllValuesSatisfy";\r
+ public const String AppliesFirst = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#AppliesFirst";\r
+ public const String AppliesRelation = "http://www.vtt.fi/Simantics/Layer0/1.0#AppliesRelation";\r
+ public const String AppliesThen = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#AppliesThen";\r
+ public const String Assertion = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Assertion";\r
+ public const String Asserts = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Asserts";\r
+ public const String BinaryPredicate = "http://www.vtt.fi/Simantics/Layer0/1.0#BinaryPredicate";\r
+ public const String Boolean = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Boolean";\r
+ public const String BooleanArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#BooleanArray";\r
+ public const String Boolean_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Boolean_";\r
+ public const String Byte = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Byte";\r
+ public const String ByteArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#ByteArray";\r
+ public const String Cardinality0 = "http://www.vtt.fi/Simantics/Layer0/1.0#Cardinality0";\r
+ public const String Cardinality1 = "http://www.vtt.fi/Simantics/Layer0/1.0#Cardinality1";\r
+ public const String Cardinality2 = "http://www.vtt.fi/Simantics/Layer0/1.0#Cardinality2";\r
+ public const String CardinalityRestriction = "http://www.vtt.fi/Simantics/Layer0/1.0#CardinalityRestriction";\r
+ public const String Cardinalityatleast1 = "http://www.vtt.fi/Simantics/Layer0/1.0#Cardinalityatleast1";\r
+ public const String Cardinalityatmost1 = "http://www.vtt.fi/Simantics/Layer0/1.0#Cardinalityatmost1";\r
+ public const String Complex128 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Complex128";\r
+ public const String Complex64 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Complex64";\r
+ public const String Complex_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Complex_";\r
+ public const String Component = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Component";\r
+ public const String CompositePredicate = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#CompositePredicate";\r
+ public const String ConcernsRelation = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConcernsRelation";\r
+ public const String ConditionalList = "http://www.vtt.fi/Simantics/Layer0/1.0#ConditionalList";\r
+ public const String Conjunction = "http://www.vtt.fi/Simantics/Layer0/1.0/Predicates#Conjunction";\r
+ public const String ConsistsOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf";\r
+ public const String ConsistsOfNamespace = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOfNamespace";\r
+ public const String Constraint = "http://www.vtt.fi/Simantics/Layer0/1.0#Constraint";\r
+ public const String Context = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Context";\r
+ public const String ContextualList = "http://www.vtt.fi/Simantics/Layer0/1.0#ContextualList";\r
+ public const String DataType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#DataType";\r
+ public const String DefaultPerspective = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#DefaultPerspective";\r
+ public const String DefaultPropertyProvider = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#DefaultPropertyProvider";\r
+ public const String DependsOn = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#DependsOn";\r
+ public const String Disjunction = "http://www.vtt.fi/Simantics/Layer0/1.0/Predicates#Disjunction";\r
+ public const String DocumentTemplate = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#DocumentTemplate";\r
+ public const String Double = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Double";\r
+ public const String DoubleArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#DoubleArray";\r
+ public const String EmptyString = "http://www.vtt.fi/Simantics/Layer0/1.0#EmptyString";\r
+ public const String Entity = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Entity";\r
+ public const String EntityType = "http://www.vtt.fi/Simantics/Layer0/1.0#EntityType";\r
+ public const String Enumeration = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Enumeration";\r
+ public const String EqualityRequirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#EqualityRequirement";\r
+ public const String EvaluatesTo = "http://www.vtt.fi/Simantics/Layer0/1.0#EvaluatesTo";\r
+ public const String Experiment = "http://www.vtt.fi/Simantics/Simulation/1.0/Types#Experiment";\r
+ public const String ExperimentControl = "http://www.simantics.org/Ontology/Project/1.0/Features#ExperimentControl";\r
+ public const String ExperimentControlFeature = "http://www.simantics.org/Ontology/Project/1.0#ExperimentControlFeature";\r
+ public const String ExperimentLibrary = "http://www.vtt.fi/Simantics/Simulation/1.0/Types#ExperimentLibrary";\r
+ public const String ExtensionFeature = "http://www.simantics.org/Ontology/Project/1.0#ExtensionFeature";\r
+ public const String Extent = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Extent";\r
+ public const String ExtentOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ExtentOf";\r
+ public const String False = "http://www.vtt.fi/Simantics/Layer0/1.0#False";\r
+ public const String Feature = "http://www.simantics.org/Ontology/Project/1.0#Feature";\r
+ public const String Final = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Final";\r
+ public const String Float = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Float";\r
+ public const String Float32 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Float32";\r
+ public const String Float64 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Float64";\r
+ public const String FloatArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#FloatArray";\r
+ public const String Float_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Float_";\r
+ public const String Function = "http://www.vtt.fi/Simantics/Layer0/1.0#Function";\r
+ public const String FunctionType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#FunctionType";\r
+ public const String FunctionalRelation = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#FunctionalRelation";\r
+ public const String GenericRelation = "http://www.vtt.fi/Simantics/Layer0/1.0#GenericRelation";\r
+ public const String HasAttributeName = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasAttributeName";\r
+ public const String HasBaseUnit = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasBaseUnit";\r
+ public const String HasBinaryPredicate = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#HasBinaryPredicate";\r
+ public const String HasBindingPattern = "http://www.vtt.fi/Simantics/Layer0/1.0#HasBindingPattern";\r
+ public const String HasCardinality = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasCardinality";\r
+ public const String HasChangeCode = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasChangeCode";\r
+ public const String HasComment = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasComment";\r
+ public const String HasComponentRelation = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasComponentRelation";\r
+ public const String HasComponentType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasComponentType";\r
+ public const String HasCondition = "http://www.vtt.fi/Simantics/Layer0/1.0#HasCondition";\r
+ public const String HasConfiguration = "http://www.vtt.fi/Simantics/Simulation/1.0/Relations#HasConfiguration";\r
+ public const String HasConversion = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasConversion";\r
+ public const String HasDefaultPerspective = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasDefaultPerspective";\r
+ public const String HasDefaultValue = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasDefaultValue";\r
+ public const String HasDescription = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasDescription";\r
+ public const String HasDevsComponent = "http://www.vtt.fi/Simantics/Simulation/1.0/Relations#HasDevsComponent";\r
+ public const String HasDocumentTemplate = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasDocumentTemplate";\r
+ public const String HasDocumentation = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasDocumentation";\r
+ public const String HasDomain = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasDomain";\r
+ public const String HasElement = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasElement";\r
+ public const String HasElseElement = "http://www.vtt.fi/Simantics/Layer0/1.0#HasElseElement";\r
+ public const String HasEmail = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasEmail";\r
+ public const String HasEntity = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasEntity";\r
+ public const String HasExponent = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasExponent";\r
+ public const String HasExtensionId = "http://www.simantics.org/Ontology/Project/1.0#HasExtensionId";\r
+ public const String HasExtent = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasExtent";\r
+ public const String HasFeature = "http://www.simantics.org/Ontology/Project/1.0#HasFeature";\r
+ public const String HasGeneratedNamePrefix = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasGeneratedNamePrefix";\r
+ public const String HasInheritedProperty = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasInheritedProperty";\r
+ public const String HasInitialState = "http://www.vtt.fi/Simantics/Simulation/1.0/Relations#HasInitialState";\r
+ public const String HasInstance = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasInstance";\r
+ public const String HasLabel = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasLabel";\r
+ public const String HasLowerBound = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasLowerBound";\r
+ public const String HasMagnitude = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasMagnitude";\r
+ public const String HasMaxCardinality = "http://www.vtt.fi/Simantics/Layer0/1.0#HasMaxCardinality";\r
+ public const String HasMaxLength = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasMaxLength";\r
+ public const String HasMethod = "http://www.vtt.fi/Simantics/Layer0/1.0#HasMethod";\r
+ public const String HasMinCardinality = "http://www.vtt.fi/Simantics/Layer0/1.0#HasMinCardinality";\r
+ public const String HasMinLength = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasMinLength";\r
+ public const String HasModel = "http://www.vtt.fi/Simantics/Simulation/1.0/Relations#HasModel";\r
+ public const String HasMultiplicity = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasMultiplicity";\r
+ public const String HasName = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName";\r
+ public const String HasNamespace = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNamespace";\r
+ public const String HasNamespaceRoot = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNamespaceRoot";\r
+ public const String HasNext = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNext";\r
+ public const String HasObject = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasObject";\r
+ public const String HasPackageName = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPackageName";\r
+ public const String HasPasswordHash = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPasswordHash";\r
+ public const String HasPattern = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasPattern";\r
+ public const String HasPerspective = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPerspective";\r
+ public const String HasPredicate = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPredicate";\r
+ public const String HasPrevious = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPrevious";\r
+ public const String HasProperty = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasProperty";\r
+ public const String HasPropertyDefinition = "http://www.vtt.fi/Simantics/Layer0/1.0#HasPropertyDefinition";\r
+ public const String HasPropertyProvider = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPropertyProvider";\r
+ public const String HasRange = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasRange";\r
+ public const String HasRelation = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasRelation";\r
+ public const String HasReportFactory = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasReportFactory";\r
+ public const String HasRequirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasRequirement";\r
+ public const String HasResourceClass = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasResourceClass";\r
+ public const String HasReturnType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasReturnType";\r
+ public const String HasScale = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasScale";\r
+ public const String HasShift = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasShift";\r
+ public const String HasSignature = "http://www.vtt.fi/Simantics/Layer0/1.0#HasSignature";\r
+ public const String HasSingleInstance = "http://www.vtt.fi/Simantics/Layer0/1.0#HasSingleInstance";\r
+ public const String HasState = "http://www.vtt.fi/Simantics/Simulation/1.0/Relations#HasState";\r
+ public const String HasStubMethod = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasStubMethod";\r
+ public const String HasStubName = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasStubName";\r
+ public const String HasStubsPackage = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasStubsPackage";\r
+ public const String HasSymbol = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#HasSymbol";\r
+ public const String HasTextualIssue = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasTextualIssue";\r
+ public const String HasThenElement = "http://www.vtt.fi/Simantics/Layer0/1.0#HasThenElement";\r
+ public const String HasTrigger = "http://www.vtt.fi/Simantics/Layer0/1.0#HasTrigger";\r
+ public const String HasType = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasType";\r
+ public const String HasUnit = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasUnit";\r
+ public const String HasUnit_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasUnit_";\r
+ public const String HasUpperBound = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#HasUpperBound";\r
+ public const String HasValidNumericalRange = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasValidNumericalRange";\r
+ public const String HasValueRequirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasValueRequirement";\r
+ public const String HasVersion = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasVersion";\r
+ public const String Ignore = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Ignore";\r
+ public const String Includes = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Includes";\r
+ public const String Inherits = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Inherits";\r
+ public const String InstanceOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InstanceOf";\r
+ public const String Int16 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Int16";\r
+ public const String Int32 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Int32";\r
+ public const String Int64 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Int64";\r
+ public const String Int8 = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Int8";\r
+ public const String Integer = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Integer";\r
+ public const String IntegerArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#IntegerArray";\r
+ public const String IntegerRangeUnion = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#IntegerRangeUnion";\r
+ public const String Integer_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Integer_";\r
+ public const String IntersectionPredicate = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#IntersectionPredicate";\r
+ public const String InverseOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InverseOf";\r
+ public const String InverseOfIsRelatedTo = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InverseOfIsRelatedTo";\r
+ public const String InversePredicate = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#InversePredicate";\r
+ public const String IsAcquiredBy = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsAcquiredBy";\r
+ public const String IsCompatibleWithFeature = "http://www.simantics.org/Ontology/Project/1.0#IsCompatibleWithFeature";\r
+ public const String IsComposedOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsComposedOf";\r
+ public const String IsConfigurationOf = "http://www.vtt.fi/Simantics/Simulation/1.0/Relations#IsConfigurationOf";\r
+ public const String IsDependencyOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsDependencyOf";\r
+ public const String IsIncludedWith = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsIncludedWith";\r
+ public const String IsIncompatibleWithFeature = "http://www.simantics.org/Ontology/Project/1.0#IsIncompatibleWithFeature";\r
+ public const String IsInheritantlyRelatedTo = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsInheritantlyRelatedTo";\r
+ public const String IsInheritantlyWeaklyRelatedTo = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsInheritantlyWeaklyRelatedTo";\r
+ public const String IsOperation = "http://www.vtt.fi/Simantics/Layer0/1.0#IsOperation";\r
+ public const String IsOwnedBy = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsOwnedBy";\r
+ public const String IsPropagatedWith = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsPropagatedWith";\r
+ public const String IsPropertyDefinitionOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsPropertyDefinitionOf";\r
+ public const String IsRelatedTo = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsRelatedTo";\r
+ public const String IsSingleInstanceOf = "http://www.vtt.fi/Simantics/Layer0/1.0#IsSingleInstanceOf";\r
+ public const String IsWeaklyRelatedTo = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsWeaklyRelatedTo";\r
+ public const String KernelDeveloper = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#KernelDeveloper";\r
+ public const String Library = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Library";\r
+ public const String LibraryDeveloper = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#LibraryDeveloper";\r
+ public const String LifecycleFeature = "http://www.simantics.org/Ontology/Project/1.0#LifecycleFeature";\r
+ public const String LinearUnitConversion = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#LinearUnitConversion";\r
+ public const String LinkedList = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#LinkedList";\r
+ public const String Long = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Long";\r
+ public const String LongArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#LongArray";\r
+ public const String Model = "http://www.vtt.fi/Simantics/Simulation/1.0/Types#Model";\r
+ public const String ModelConfigurator = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ModelConfigurator";\r
+ public const String ModelLibrary = "http://www.vtt.fi/Simantics/Simulation/1.0/Types#ModelLibrary";\r
+ public const String ModelManager = "http://www.simantics.org/Ontology/Project/1.0/Features#ModelManager";\r
+ public const String ModelManagerFeature = "http://www.simantics.org/Ontology/Project/1.0#ModelManagerFeature";\r
+ public const String ModelUser = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ModelUser";\r
+ public const String ModellingDomain = "http://www.simantics.org/Ontology/Project/1.0#ModellingDomain";\r
+ public const String NamedUnit = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#NamedUnit";\r
+ public const String Namespace = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Namespace";\r
+ public const String NamespaceLibrary = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#NamespaceLibrary";\r
+ public const String NamespaceOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#NamespaceOf";\r
+ public const String Negation = "http://www.vtt.fi/Simantics/Layer0/1.0/Predicates#Negation";\r
+ public const String Number = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Number";\r
+ public const String NumberType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#NumberType";\r
+ public const String Number_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Number_";\r
+ public const String Ontology = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Ontology";\r
+ public const String OntologyDevelopmentProject = "http://www.simantics.org/Ontology/ODE/1.0#OntologyDevelopmentProject";\r
+ public const String OntologyRequirementValidationFeature = "http://www.simantics.org/Ontology/Project/1.0#OntologyRequirementValidationFeature";\r
+ public const String Operation = "http://www.vtt.fi/Simantics/Layer0/1.0#Operation";\r
+ public const String OptionType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#OptionType";\r
+ public const String OrderedSet = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#OrderedSet";\r
+ public const String OrderedSetElements = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#OrderedSetElements";\r
+ public const String OverridableAssertion = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#OverridableAssertion";\r
+ public const String PartOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#PartOf";\r
+ public const String Perspective = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Perspective";\r
+ public const String PhysicalDouble = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PhysicalDouble";\r
+ public const String PhysicalFloat = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PhysicalFloat";\r
+ public const String PhysicalInteger = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PhysicalInteger";\r
+ public const String PhysicalPropertyType = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PhysicalPropertyType";\r
+ public const String PowerUnit = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#PowerUnit";\r
+ public const String Predicate = "http://www.vtt.fi/Simantics/Layer0/1.0#Predicate";\r
+ public const String ProductUnit = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#ProductUnit";\r
+ public const String Project2 = "http://www.simantics.org/Ontology/Project/1.0#Project2";\r
+ public const String ProjectType2 = "http://www.simantics.org/Ontology/Project/1.0#ProjectType2";\r
+ public const String Propagates = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Propagates";\r
+ public const String PropagatesFrom = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#PropagatesFrom";\r
+ public const String PropagatesTo = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#PropagatesTo";\r
+ public const String Property = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Property";\r
+ public const String PropertyDefinition = "http://www.vtt.fi/Simantics/Layer0/1.0#PropertyDefinition";\r
+ public const String PropertyLibrary = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PropertyLibrary";\r
+ public const String PropertyOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#PropertyOf";\r
+ public const String PropertyProvider = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PropertyProvider";\r
+ public const String PropertyType = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#PropertyType";\r
+ public const String Query = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Query";\r
+ public const String Real = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Real";\r
+ public const String RecordType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#RecordType";\r
+ public const String RegularExpression = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#RegularExpression";\r
+ public const String Relation = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Relation";\r
+ public const String RelationApplication = "http://www.vtt.fi/Simantics/Layer0/1.0#RelationApplication";\r
+ public const String RelationLibrary = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#RelationLibrary";\r
+ public const String RelationRequirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#RelationRequirement";\r
+ public const String Report = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Report";\r
+ public const String RequiredByFeature = "http://www.simantics.org/Ontology/Project/1.0#RequiredByFeature";\r
+ public const String Requirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Requirement";\r
+ public const String RequirementConjunction = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#RequirementConjunction";\r
+ public const String RequirementDisjunction = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#RequirementDisjunction";\r
+ public const String RequirementNegation = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#RequirementNegation";\r
+ public const String Requires = "http://www.vtt.fi/Simantics/Layer0/1.0#Requires";\r
+ public const String RequiresFeature = "http://www.simantics.org/Ontology/Project/1.0#RequiresFeature";\r
+ public const String RequiresNamespace = "http://www.simantics.org/Ontology/Project/1.0#RequiresNamespace";\r
+ public const String ResourceType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#ResourceType";\r
+ public const String Resource_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#Resource_";\r
+ public const String Role = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Role";\r
+ public const String ScaledUnit = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#ScaledUnit";\r
+ public const String SequenceType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#SequenceType";\r
+ public const String ShiftedUnitConversion = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#ShiftedUnitConversion";\r
+ public const String Singleton = "http://www.vtt.fi/Simantics/Layer0/1.0#Singleton";\r
+ public const String SomeValuesSatisfy = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SomeValuesSatisfy";\r
+ public const String State = "http://www.vtt.fi/Simantics/Simulation/1.0/Types#State";\r
+ public const String String = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#String";\r
+ public const String StringArray = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#StringArray";\r
+ public const String StringType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#StringType";\r
+ public const String String_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#String_";\r
+ public const String SubExtentOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SubExtentOf";\r
+ public const String SubrelationOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SubrelationOf";\r
+ public const String SuperExtentOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SuperExtentOf";\r
+ public const String SuperrelationOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SuperrelationOf";\r
+ public const String SupertypeOf = "http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SupertypeOf";\r
+ public const String Tag = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Tag";\r
+ public const String TagLibrary = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#TagLibrary";\r
+ public const String TransitiveClosure = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#TransitiveClosure";\r
+ public const String Trigger = "http://www.vtt.fi/Simantics/Layer0/1.0#Trigger";\r
+ public const String True = "http://www.vtt.fi/Simantics/Layer0/1.0#True";\r
+ public const String Type = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Type";\r
+ public const String TypeBasedList = "http://www.vtt.fi/Simantics/Layer0/1.0#TypeBasedList";\r
+ public const String TypeLibrary = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#TypeLibrary";\r
+ public const String TypeRequirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#TypeRequirement";\r
+ public const String URI = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#URI";\r
+ public const String URI_ = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#URI_";\r
+ public const String URL = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#URL";\r
+ public const String UnionPredicate = "http://www.vtt.fi/Simantics/Layer0/1.0/BinaryPredicates#UnionPredicate";\r
+ public const String UnionType = "http://www.vtt.fi/Simantics/Layer0/1.0/DataTypes#UnionType";\r
+ public const String Unit = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#Unit";\r
+ public const String UnitConversion = "http://www.vtt.fi/Simantics/Layer0/1.0/Units#UnitConversion";\r
+ public const String User = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#User";\r
+ public const String Value = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Value";\r
+ public const String ValueRequirement = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#ValueRequirement";\r
+ public const String ValueType = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#ValueType";\r
+ public const String Version = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#Version";\r
+ public const String ViewpointLibrary = "http://www.vtt.fi/Simantics/Layer0/1.0/Types#ViewpointLibrary";\r
+ }\r
+ \r
+ public Builtins(Graph graph) {\r
+ try {\r
+ RootLibrary = graph.getResourceByURI(URIs.RootLibrary);\r
+ Abstract = graph.getResourceByURI(URIs.Abstract);\r
+ AbstractContextualList = graph.getResourceByURI(URIs.AbstractContextualList);\r
+ Acquires = graph.getResourceByURI(URIs.Acquires);\r
+ AcquiringRelation = graph.getResourceByURI(URIs.AcquiringRelation);\r
+ Admin = graph.getResourceByURI(URIs.Admin);\r
+ AllValuesSatisfy = graph.getResourceByURI(URIs.AllValuesSatisfy);\r
+ AppliesFirst = graph.getResourceByURI(URIs.AppliesFirst);\r
+ AppliesRelation = graph.getResourceByURI(URIs.AppliesRelation);\r
+ AppliesThen = graph.getResourceByURI(URIs.AppliesThen);\r
+ Assertion = graph.getResourceByURI(URIs.Assertion);\r
+ Asserts = graph.getResourceByURI(URIs.Asserts);\r
+ BinaryPredicate = graph.getResourceByURI(URIs.BinaryPredicate);\r
+ Boolean = graph.getResourceByURI(URIs.Boolean);\r
+ BooleanArray = graph.getResourceByURI(URIs.BooleanArray);\r
+ Boolean_ = graph.getResourceByURI(URIs.Boolean_);\r
+ Byte = graph.getResourceByURI(URIs.Byte);\r
+ ByteArray = graph.getResourceByURI(URIs.ByteArray);\r
+ Cardinality0 = graph.getResourceByURI(URIs.Cardinality0);\r
+ Cardinality1 = graph.getResourceByURI(URIs.Cardinality1);\r
+ Cardinality2 = graph.getResourceByURI(URIs.Cardinality2);\r
+ CardinalityRestriction = graph.getResourceByURI(URIs.CardinalityRestriction);\r
+ Cardinalityatleast1 = graph.getResourceByURI(URIs.Cardinalityatleast1);\r
+ Cardinalityatmost1 = graph.getResourceByURI(URIs.Cardinalityatmost1);\r
+ Complex128 = graph.getResourceByURI(URIs.Complex128);\r
+ Complex64 = graph.getResourceByURI(URIs.Complex64);\r
+ Complex_ = graph.getResourceByURI(URIs.Complex_);\r
+ Component = graph.getResourceByURI(URIs.Component);\r
+ CompositePredicate = graph.getResourceByURI(URIs.CompositePredicate);\r
+ ConcernsRelation = graph.getResourceByURI(URIs.ConcernsRelation);\r
+ ConditionalList = graph.getResourceByURI(URIs.ConditionalList);\r
+ Conjunction = graph.getResourceByURI(URIs.Conjunction);\r
+ ConsistsOf = graph.getResourceByURI(URIs.ConsistsOf);\r
+ ConsistsOfNamespace = graph.getResourceByURI(URIs.ConsistsOfNamespace);\r
+ Constraint = graph.getResourceByURI(URIs.Constraint);\r
+ Context = graph.getResourceByURI(URIs.Context);\r
+ ContextualList = graph.getResourceByURI(URIs.ContextualList);\r
+ DataType = graph.getResourceByURI(URIs.DataType);\r
+ DefaultPerspective = graph.getResourceByURI(URIs.DefaultPerspective);\r
+ DefaultPropertyProvider = graph.getResourceByURI(URIs.DefaultPropertyProvider);\r
+ DependsOn = graph.getResourceByURI(URIs.DependsOn);\r
+ Disjunction = graph.getResourceByURI(URIs.Disjunction);\r
+ DocumentTemplate = graph.getResourceByURI(URIs.DocumentTemplate);\r
+ Double = graph.getResourceByURI(URIs.Double);\r
+ DoubleArray = graph.getResourceByURI(URIs.DoubleArray);\r
+ EmptyString = graph.getResourceByURI(URIs.EmptyString);\r
+ Entity = graph.getResourceByURI(URIs.Entity);\r
+ EntityType = graph.getResourceByURI(URIs.EntityType);\r
+ Enumeration = graph.getResourceByURI(URIs.Enumeration);\r
+ EqualityRequirement = graph.getResourceByURI(URIs.EqualityRequirement);\r
+ EvaluatesTo = graph.getResourceByURI(URIs.EvaluatesTo);\r
+ Experiment = graph.getResourceByURI(URIs.Experiment);\r
+ ExperimentControl = graph.getResourceByURI(URIs.ExperimentControl);\r
+ ExperimentControlFeature = graph.getResourceByURI(URIs.ExperimentControlFeature);\r
+ ExperimentLibrary = graph.getResourceByURI(URIs.ExperimentLibrary);\r
+ ExtensionFeature = graph.getResourceByURI(URIs.ExtensionFeature);\r
+ Extent = graph.getResourceByURI(URIs.Extent);\r
+ ExtentOf = graph.getResourceByURI(URIs.ExtentOf);\r
+ False = graph.getResourceByURI(URIs.False);\r
+ Feature = graph.getResourceByURI(URIs.Feature);\r
+ Final = graph.getResourceByURI(URIs.Final);\r
+ Float = graph.getResourceByURI(URIs.Float);\r
+ Float32 = graph.getResourceByURI(URIs.Float32);\r
+ Float64 = graph.getResourceByURI(URIs.Float64);\r
+ FloatArray = graph.getResourceByURI(URIs.FloatArray);\r
+ Float_ = graph.getResourceByURI(URIs.Float_);\r
+ Function = graph.getResourceByURI(URIs.Function);\r
+ FunctionType = graph.getResourceByURI(URIs.FunctionType);\r
+ FunctionalRelation = graph.getResourceByURI(URIs.FunctionalRelation);\r
+ GenericRelation = graph.getResourceByURI(URIs.GenericRelation);\r
+ HasAttributeName = graph.getResourceByURI(URIs.HasAttributeName);\r
+ HasBaseUnit = graph.getResourceByURI(URIs.HasBaseUnit);\r
+ HasBinaryPredicate = graph.getResourceByURI(URIs.HasBinaryPredicate);\r
+ HasBindingPattern = graph.getResourceByURI(URIs.HasBindingPattern);\r
+ HasCardinality = graph.getResourceByURI(URIs.HasCardinality);\r
+ HasChangeCode = graph.getResourceByURI(URIs.HasChangeCode);\r
+ HasComment = graph.getResourceByURI(URIs.HasComment);\r
+ HasComponentRelation = graph.getResourceByURI(URIs.HasComponentRelation);\r
+ HasComponentType = graph.getResourceByURI(URIs.HasComponentType);\r
+ HasCondition = graph.getResourceByURI(URIs.HasCondition);\r
+ HasConfiguration = graph.getResourceByURI(URIs.HasConfiguration);\r
+ HasConversion = graph.getResourceByURI(URIs.HasConversion);\r
+ HasDefaultPerspective = graph.getResourceByURI(URIs.HasDefaultPerspective);\r
+ HasDefaultValue = graph.getResourceByURI(URIs.HasDefaultValue);\r
+ HasDescription = graph.getResourceByURI(URIs.HasDescription);\r
+ HasDevsComponent = graph.getResourceByURI(URIs.HasDevsComponent);\r
+ HasDocumentTemplate = graph.getResourceByURI(URIs.HasDocumentTemplate);\r
+ HasDocumentation = graph.getResourceByURI(URIs.HasDocumentation);\r
+ HasDomain = graph.getResourceByURI(URIs.HasDomain);\r
+ HasElement = graph.getResourceByURI(URIs.HasElement);\r
+ HasElseElement = graph.getResourceByURI(URIs.HasElseElement);\r
+ HasEmail = graph.getResourceByURI(URIs.HasEmail);\r
+ HasEntity = graph.getResourceByURI(URIs.HasEntity);\r
+ HasExponent = graph.getResourceByURI(URIs.HasExponent);\r
+ HasExtensionId = graph.getResourceByURI(URIs.HasExtensionId);\r
+ HasExtent = graph.getResourceByURI(URIs.HasExtent);\r
+ HasFeature = graph.getResourceByURI(URIs.HasFeature);\r
+ HasGeneratedNamePrefix = graph.getResourceByURI(URIs.HasGeneratedNamePrefix);\r
+ HasInheritedProperty = graph.getResourceByURI(URIs.HasInheritedProperty);\r
+ HasInitialState = graph.getResourceByURI(URIs.HasInitialState);\r
+ HasInstance = graph.getResourceByURI(URIs.HasInstance);\r
+ HasLabel = graph.getResourceByURI(URIs.HasLabel);\r
+ HasLowerBound = graph.getResourceByURI(URIs.HasLowerBound);\r
+ HasMagnitude = graph.getResourceByURI(URIs.HasMagnitude);\r
+ HasMaxCardinality = graph.getResourceByURI(URIs.HasMaxCardinality);\r
+ HasMaxLength = graph.getResourceByURI(URIs.HasMaxLength);\r
+ HasMethod = graph.getResourceByURI(URIs.HasMethod);\r
+ HasMinCardinality = graph.getResourceByURI(URIs.HasMinCardinality);\r
+ HasMinLength = graph.getResourceByURI(URIs.HasMinLength);\r
+ HasModel = graph.getResourceByURI(URIs.HasModel);\r
+ HasMultiplicity = graph.getResourceByURI(URIs.HasMultiplicity);\r
+ HasName = graph.getResourceByURI(URIs.HasName);\r
+ HasNamespace = graph.getResourceByURI(URIs.HasNamespace);\r
+ HasNamespaceRoot = graph.getResourceByURI(URIs.HasNamespaceRoot);\r
+ HasNext = graph.getResourceByURI(URIs.HasNext);\r
+ HasObject = graph.getResourceByURI(URIs.HasObject);\r
+ HasPackageName = graph.getResourceByURI(URIs.HasPackageName);\r
+ HasPasswordHash = graph.getResourceByURI(URIs.HasPasswordHash);\r
+ HasPattern = graph.getResourceByURI(URIs.HasPattern);\r
+ HasPerspective = graph.getResourceByURI(URIs.HasPerspective);\r
+ HasPredicate = graph.getResourceByURI(URIs.HasPredicate);\r
+ HasPrevious = graph.getResourceByURI(URIs.HasPrevious);\r
+ HasProperty = graph.getResourceByURI(URIs.HasProperty);\r
+ HasPropertyDefinition = graph.getResourceByURI(URIs.HasPropertyDefinition);\r
+ HasPropertyProvider = graph.getResourceByURI(URIs.HasPropertyProvider);\r
+ HasRange = graph.getResourceByURI(URIs.HasRange);\r
+ HasRelation = graph.getResourceByURI(URIs.HasRelation);\r
+ HasReportFactory = graph.getResourceByURI(URIs.HasReportFactory);\r
+ HasRequirement = graph.getResourceByURI(URIs.HasRequirement);\r
+ HasResourceClass = graph.getResourceByURI(URIs.HasResourceClass);\r
+ HasReturnType = graph.getResourceByURI(URIs.HasReturnType);\r
+ HasScale = graph.getResourceByURI(URIs.HasScale);\r
+ HasShift = graph.getResourceByURI(URIs.HasShift);\r
+ HasSignature = graph.getResourceByURI(URIs.HasSignature);\r
+ HasSingleInstance = graph.getResourceByURI(URIs.HasSingleInstance);\r
+ HasState = graph.getResourceByURI(URIs.HasState);\r
+ HasStubMethod = graph.getResourceByURI(URIs.HasStubMethod);\r
+ HasStubName = graph.getResourceByURI(URIs.HasStubName);\r
+ HasStubsPackage = graph.getResourceByURI(URIs.HasStubsPackage);\r
+ HasSymbol = graph.getResourceByURI(URIs.HasSymbol);\r
+ HasTextualIssue = graph.getResourceByURI(URIs.HasTextualIssue);\r
+ HasThenElement = graph.getResourceByURI(URIs.HasThenElement);\r
+ HasTrigger = graph.getResourceByURI(URIs.HasTrigger);\r
+ HasType = graph.getResourceByURI(URIs.HasType);\r
+ HasUnit = graph.getResourceByURI(URIs.HasUnit);\r
+ HasUnit_ = graph.getResourceByURI(URIs.HasUnit_);\r
+ HasUpperBound = graph.getResourceByURI(URIs.HasUpperBound);\r
+ HasValidNumericalRange = graph.getResourceByURI(URIs.HasValidNumericalRange);\r
+ HasValueRequirement = graph.getResourceByURI(URIs.HasValueRequirement);\r
+ HasVersion = graph.getResourceByURI(URIs.HasVersion);\r
+ Ignore = graph.getResourceByURI(URIs.Ignore);\r
+ Includes = graph.getResourceByURI(URIs.Includes);\r
+ Inherits = graph.getResourceByURI(URIs.Inherits);\r
+ InstanceOf = graph.getResourceByURI(URIs.InstanceOf);\r
+ Int16 = graph.getResourceByURI(URIs.Int16);\r
+ Int32 = graph.getResourceByURI(URIs.Int32);\r
+ Int64 = graph.getResourceByURI(URIs.Int64);\r
+ Int8 = graph.getResourceByURI(URIs.Int8);\r
+ Integer = graph.getResourceByURI(URIs.Integer);\r
+ IntegerArray = graph.getResourceByURI(URIs.IntegerArray);\r
+ IntegerRangeUnion = graph.getResourceByURI(URIs.IntegerRangeUnion);\r
+ Integer_ = graph.getResourceByURI(URIs.Integer_);\r
+ IntersectionPredicate = graph.getResourceByURI(URIs.IntersectionPredicate);\r
+ InverseOf = graph.getResourceByURI(URIs.InverseOf);\r
+ InverseOfIsRelatedTo = graph.getResourceByURI(URIs.InverseOfIsRelatedTo);\r
+ InversePredicate = graph.getResourceByURI(URIs.InversePredicate);\r
+ IsAcquiredBy = graph.getResourceByURI(URIs.IsAcquiredBy);\r
+ IsCompatibleWithFeature = graph.getResourceByURI(URIs.IsCompatibleWithFeature);\r
+ IsComposedOf = graph.getResourceByURI(URIs.IsComposedOf);\r
+ IsConfigurationOf = graph.getResourceByURI(URIs.IsConfigurationOf);\r
+ IsDependencyOf = graph.getResourceByURI(URIs.IsDependencyOf);\r
+ IsIncludedWith = graph.getResourceByURI(URIs.IsIncludedWith);\r
+ IsIncompatibleWithFeature = graph.getResourceByURI(URIs.IsIncompatibleWithFeature);\r
+ IsInheritantlyRelatedTo = graph.getResourceByURI(URIs.IsInheritantlyRelatedTo);\r
+ IsInheritantlyWeaklyRelatedTo = graph.getResourceByURI(URIs.IsInheritantlyWeaklyRelatedTo);\r
+ IsOperation = graph.getResourceByURI(URIs.IsOperation);\r
+ IsOwnedBy = graph.getResourceByURI(URIs.IsOwnedBy);\r
+ IsPropagatedWith = graph.getResourceByURI(URIs.IsPropagatedWith);\r
+ IsPropertyDefinitionOf = graph.getResourceByURI(URIs.IsPropertyDefinitionOf);\r
+ IsRelatedTo = graph.getResourceByURI(URIs.IsRelatedTo);\r
+ IsSingleInstanceOf = graph.getResourceByURI(URIs.IsSingleInstanceOf);\r
+ IsWeaklyRelatedTo = graph.getResourceByURI(URIs.IsWeaklyRelatedTo);\r
+ KernelDeveloper = graph.getResourceByURI(URIs.KernelDeveloper);\r
+ Library = graph.getResourceByURI(URIs.Library);\r
+ LibraryDeveloper = graph.getResourceByURI(URIs.LibraryDeveloper);\r
+ LifecycleFeature = graph.getResourceByURI(URIs.LifecycleFeature);\r
+ LinearUnitConversion = graph.getResourceByURI(URIs.LinearUnitConversion);\r
+ LinkedList = graph.getResourceByURI(URIs.LinkedList);\r
+ Long = graph.getResourceByURI(URIs.Long);\r
+ LongArray = graph.getResourceByURI(URIs.LongArray);\r
+ Model = graph.getResourceByURI(URIs.Model);\r
+ ModelConfigurator = graph.getResourceByURI(URIs.ModelConfigurator);\r
+ ModelLibrary = graph.getResourceByURI(URIs.ModelLibrary);\r
+ ModelManager = graph.getResourceByURI(URIs.ModelManager);\r
+ ModelManagerFeature = graph.getResourceByURI(URIs.ModelManagerFeature);\r
+ ModelUser = graph.getResourceByURI(URIs.ModelUser);\r
+ ModellingDomain = graph.getResourceByURI(URIs.ModellingDomain);\r
+ NamedUnit = graph.getResourceByURI(URIs.NamedUnit);\r
+ Namespace = graph.getResourceByURI(URIs.Namespace);\r
+ NamespaceLibrary = graph.getResourceByURI(URIs.NamespaceLibrary);\r
+ NamespaceOf = graph.getResourceByURI(URIs.NamespaceOf);\r
+ Negation = graph.getResourceByURI(URIs.Negation);\r
+ Number = graph.getResourceByURI(URIs.Number);\r
+ NumberType = graph.getResourceByURI(URIs.NumberType);\r
+ Number_ = graph.getResourceByURI(URIs.Number_);\r
+ Ontology = graph.getResourceByURI(URIs.Ontology);\r
+ OntologyDevelopmentProject = graph.getResourceByURI(URIs.OntologyDevelopmentProject);\r
+ OntologyRequirementValidationFeature = graph.getResourceByURI(URIs.OntologyRequirementValidationFeature);\r
+ Operation = graph.getResourceByURI(URIs.Operation);\r
+ OptionType = graph.getResourceByURI(URIs.OptionType);\r
+ OrderedSet = graph.getResourceByURI(URIs.OrderedSet);\r
+ OrderedSetElements = graph.getResourceByURI(URIs.OrderedSetElements);\r
+ OverridableAssertion = graph.getResourceByURI(URIs.OverridableAssertion);\r
+ PartOf = graph.getResourceByURI(URIs.PartOf);\r
+ Perspective = graph.getResourceByURI(URIs.Perspective);\r
+ PhysicalDouble = graph.getResourceByURI(URIs.PhysicalDouble);\r
+ PhysicalFloat = graph.getResourceByURI(URIs.PhysicalFloat);\r
+ PhysicalInteger = graph.getResourceByURI(URIs.PhysicalInteger);\r
+ PhysicalPropertyType = graph.getResourceByURI(URIs.PhysicalPropertyType);\r
+ PowerUnit = graph.getResourceByURI(URIs.PowerUnit);\r
+ Predicate = graph.getResourceByURI(URIs.Predicate);\r
+ ProductUnit = graph.getResourceByURI(URIs.ProductUnit);\r
+ Project2 = graph.getResourceByURI(URIs.Project2);\r
+ ProjectType2 = graph.getResourceByURI(URIs.ProjectType2);\r
+ Propagates = graph.getResourceByURI(URIs.Propagates);\r
+ PropagatesFrom = graph.getResourceByURI(URIs.PropagatesFrom);\r
+ PropagatesTo = graph.getResourceByURI(URIs.PropagatesTo);\r
+ Property = graph.getResourceByURI(URIs.Property);\r
+ PropertyDefinition = graph.getResourceByURI(URIs.PropertyDefinition);\r
+ PropertyLibrary = graph.getResourceByURI(URIs.PropertyLibrary);\r
+ PropertyOf = graph.getResourceByURI(URIs.PropertyOf);\r
+ PropertyProvider = graph.getResourceByURI(URIs.PropertyProvider);\r
+ PropertyType = graph.getResourceByURI(URIs.PropertyType);\r
+ Query = graph.getResourceByURI(URIs.Query);\r
+ Real = graph.getResourceByURI(URIs.Real);\r
+ RecordType = graph.getResourceByURI(URIs.RecordType);\r
+ RegularExpression = graph.getResourceByURI(URIs.RegularExpression);\r
+ Relation = graph.getResourceByURI(URIs.Relation);\r
+ RelationApplication = graph.getResourceByURI(URIs.RelationApplication);\r
+ RelationLibrary = graph.getResourceByURI(URIs.RelationLibrary);\r
+ RelationRequirement = graph.getResourceByURI(URIs.RelationRequirement);\r
+ Report = graph.getResourceByURI(URIs.Report);\r
+ RequiredByFeature = graph.getResourceByURI(URIs.RequiredByFeature);\r
+ Requirement = graph.getResourceByURI(URIs.Requirement);\r
+ RequirementConjunction = graph.getResourceByURI(URIs.RequirementConjunction);\r
+ RequirementDisjunction = graph.getResourceByURI(URIs.RequirementDisjunction);\r
+ RequirementNegation = graph.getResourceByURI(URIs.RequirementNegation);\r
+ Requires = graph.getResourceByURI(URIs.Requires);\r
+ RequiresFeature = graph.getResourceByURI(URIs.RequiresFeature);\r
+ RequiresNamespace = graph.getResourceByURI(URIs.RequiresNamespace);\r
+ ResourceType = graph.getResourceByURI(URIs.ResourceType);\r
+ Resource_ = graph.getResourceByURI(URIs.Resource_);\r
+ Role = graph.getResourceByURI(URIs.Role);\r
+ ScaledUnit = graph.getResourceByURI(URIs.ScaledUnit);\r
+ SequenceType = graph.getResourceByURI(URIs.SequenceType);\r
+ ShiftedUnitConversion = graph.getResourceByURI(URIs.ShiftedUnitConversion);\r
+ Singleton = graph.getResourceByURI(URIs.Singleton);\r
+ SomeValuesSatisfy = graph.getResourceByURI(URIs.SomeValuesSatisfy);\r
+ State = graph.getResourceByURI(URIs.State);\r
+ String = graph.getResourceByURI(URIs.String);\r
+ StringArray = graph.getResourceByURI(URIs.StringArray);\r
+ StringType = graph.getResourceByURI(URIs.StringType);\r
+ String_ = graph.getResourceByURI(URIs.String_);\r
+ SubExtentOf = graph.getResourceByURI(URIs.SubExtentOf);\r
+ SubrelationOf = graph.getResourceByURI(URIs.SubrelationOf);\r
+ SuperExtentOf = graph.getResourceByURI(URIs.SuperExtentOf);\r
+ SuperrelationOf = graph.getResourceByURI(URIs.SuperrelationOf);\r
+ SupertypeOf = graph.getResourceByURI(URIs.SupertypeOf);\r
+ Tag = graph.getResourceByURI(URIs.Tag);\r
+ TagLibrary = graph.getResourceByURI(URIs.TagLibrary);\r
+ TransitiveClosure = graph.getResourceByURI(URIs.TransitiveClosure);\r
+ Trigger = graph.getResourceByURI(URIs.Trigger);\r
+ True = graph.getResourceByURI(URIs.True);\r
+ Type = graph.getResourceByURI(URIs.Type);\r
+ TypeBasedList = graph.getResourceByURI(URIs.TypeBasedList);\r
+ TypeLibrary = graph.getResourceByURI(URIs.TypeLibrary);\r
+ TypeRequirement = graph.getResourceByURI(URIs.TypeRequirement);\r
+ URI = graph.getResourceByURI(URIs.URI);\r
+ URI_ = graph.getResourceByURI(URIs.URI_);\r
+ URL = graph.getResourceByURI(URIs.URL);\r
+ UnionPredicate = graph.getResourceByURI(URIs.UnionPredicate);\r
+ UnionType = graph.getResourceByURI(URIs.UnionType);\r
+ Unit = graph.getResourceByURI(URIs.Unit);\r
+ UnitConversion = graph.getResourceByURI(URIs.UnitConversion);\r
+ User = graph.getResourceByURI(URIs.User);\r
+ Value = graph.getResourceByURI(URIs.Value);\r
+ ValueRequirement = graph.getResourceByURI(URIs.ValueRequirement);\r
+ ValueType = graph.getResourceByURI(URIs.ValueType);\r
+ Version = graph.getResourceByURI(URIs.Version);\r
+ ViewpointLibrary = graph.getResourceByURI(URIs.ViewpointLibrary);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static Builtins getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ Builtins ret = session.getService<Builtins>(typeof(Builtins));\r
+ if(ret == null) {\r
+ ret = new Builtins(graph);\r
+ session.registerService(typeof(Builtins), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.diagram.stubs {\r
+\r
+\r
+public class DiagramResource {\r
+ \r
+ public readonly Resource AreConnected;\r
+ public readonly Resource BranchPoint;\r
+ public readonly Resource Composite;\r
+ public readonly Resource Connection;\r
+ public readonly Resource Connector;\r
+ public readonly Resource DefinedElement;\r
+ public readonly Resource Diagram;\r
+ public readonly Resource DiagramLibrary;\r
+ public readonly Resource Element;\r
+ public readonly Resource ElementClass;\r
+ public readonly Resource Flag;\r
+ public readonly Resource FlagMode;\r
+ public readonly Resource FlagMode_External;\r
+ public readonly Resource FlagMode_Internal;\r
+ public readonly Resource FlagTerminal;\r
+ public readonly Resource FlagType;\r
+ public readonly Resource FlagType_InputFlag;\r
+ public readonly Resource FlagType_OutputFlag;\r
+ public readonly Resource HasAllowedConnectionDirection;\r
+ public readonly Resource HasBranchPoint;\r
+ public readonly Resource HasConnectionVariable;\r
+ public readonly Resource HasConnector;\r
+ public readonly Resource HasCorrespondingFlag;\r
+ public readonly Resource HasDirection;\r
+ public readonly Resource HasFlagMode;\r
+ public readonly Resource HasFlagType;\r
+ public readonly Resource HasFocusableTag;\r
+ public readonly Resource HasFormat;\r
+ public readonly Resource HasInput;\r
+ public readonly Resource HasLayer;\r
+ public readonly Resource HasLinkTarget;\r
+ public readonly Resource HasOutput;\r
+ public readonly Resource HasPageDescription;\r
+ public readonly Resource HasPageOrientation;\r
+ public readonly Resource HasPageSize;\r
+ public readonly Resource HasResourcePath;\r
+ public readonly Resource HasRoutePoints;\r
+ public readonly Resource HasTransform;\r
+ public readonly Resource HasVisibleTag;\r
+ public readonly Resource Horizontal;\r
+ public readonly Resource IsActive;\r
+ public readonly Resource IsBranchPointOf;\r
+ public readonly Resource IsConnectorOf;\r
+ public readonly Resource IsFocusable;\r
+ public readonly Resource IsInputOf;\r
+ public readonly Resource IsOutputOf;\r
+ public readonly Resource IsVisible;\r
+ public readonly Resource Layer;\r
+ public readonly Resource Link;\r
+ public readonly Resource Monitor;\r
+ public readonly Resource PageDescription;\r
+ public readonly Resource PageOrientation;\r
+ public readonly Resource PageOrientation_Landscape;\r
+ public readonly Resource PageOrientation_Portrait;\r
+ public readonly Resource ResourcePath;\r
+ public readonly Resource SVGElement;\r
+ public readonly Resource Shape;\r
+ public readonly Resource SymbolReferenceLibrary;\r
+ public readonly Resource Terminal;\r
+ public readonly Resource Trend;\r
+ public readonly Resource UpwardLink;\r
+ public readonly Resource Vertical;\r
+ \r
+ public static class URIs {\r
+ public const String AreConnected = "http://www.simantics.org/Simantics/Diagram/2.0#AreConnected";\r
+ public const String BranchPoint = "http://www.simantics.org/Simantics/Diagram/2.0#BranchPoint";\r
+ public const String Composite = "http://www.simantics.org/Simantics/Diagram/2.0#Composite";\r
+ public const String Connection = "http://www.simantics.org/Simantics/Diagram/2.0#Connection";\r
+ public const String Connector = "http://www.simantics.org/Simantics/Diagram/2.0#Connector";\r
+ public const String DefinedElement = "http://www.simantics.org/Simantics/Diagram/2.0#DefinedElement";\r
+ public const String Diagram = "http://www.simantics.org/Simantics/Diagram/2.0#Diagram";\r
+ public const String DiagramLibrary = "http://www.simantics.org/Simantics/Diagram/2.0#DiagramLibrary";\r
+ public const String Element = "http://www.simantics.org/Simantics/Diagram/2.0#Element";\r
+ public const String ElementClass = "http://www.simantics.org/Simantics/Diagram/2.0#ElementClass";\r
+ public const String Flag = "http://www.simantics.org/Simantics/Diagram/2.0#Flag";\r
+ public const String FlagMode = "http://www.simantics.org/Simantics/Diagram/2.0#FlagMode";\r
+ public const String FlagMode_External = "http://www.simantics.org/Simantics/Diagram/2.0/FlagMode#External";\r
+ public const String FlagMode_Internal = "http://www.simantics.org/Simantics/Diagram/2.0/FlagMode#Internal";\r
+ public const String FlagTerminal = "http://www.simantics.org/Simantics/Diagram/2.0#FlagTerminal";\r
+ public const String FlagType = "http://www.simantics.org/Simantics/Diagram/2.0#FlagType";\r
+ public const String FlagType_InputFlag = "http://www.simantics.org/Simantics/Diagram/2.0/FlagType#InputFlag";\r
+ public const String FlagType_OutputFlag = "http://www.simantics.org/Simantics/Diagram/2.0/FlagType#OutputFlag";\r
+ public const String HasAllowedConnectionDirection = "http://www.simantics.org/Simantics/Diagram/2.0#HasAllowedConnectionDirection";\r
+ public const String HasBranchPoint = "http://www.simantics.org/Simantics/Diagram/2.0#HasBranchPoint";\r
+ public const String HasConnectionVariable = "http://www.simantics.org/Simantics/Diagram/2.0#HasConnectionVariable";\r
+ public const String HasConnector = "http://www.simantics.org/Simantics/Diagram/2.0#HasConnector";\r
+ public const String HasCorrespondingFlag = "http://www.simantics.org/Simantics/Diagram/2.0#HasCorrespondingFlag";\r
+ public const String HasDirection = "http://www.simantics.org/Simantics/Diagram/2.0#HasDirection";\r
+ public const String HasFlagMode = "http://www.simantics.org/Simantics/Diagram/2.0#HasFlagMode";\r
+ public const String HasFlagType = "http://www.simantics.org/Simantics/Diagram/2.0#HasFlagType";\r
+ public const String HasFocusableTag = "http://www.simantics.org/Simantics/Diagram/2.0#HasFocusableTag";\r
+ public const String HasFormat = "http://www.simantics.org/Simantics/Diagram/2.0#HasFormat";\r
+ public const String HasInput = "http://www.simantics.org/Simantics/Diagram/2.0#HasInput";\r
+ public const String HasLayer = "http://www.simantics.org/Simantics/Diagram/2.0#HasLayer";\r
+ public const String HasLinkTarget = "http://www.simantics.org/Simantics/Diagram/2.0#HasLinkTarget";\r
+ public const String HasOutput = "http://www.simantics.org/Simantics/Diagram/2.0#HasOutput";\r
+ public const String HasPageDescription = "http://www.simantics.org/Simantics/Diagram/2.0#HasPageDescription";\r
+ public const String HasPageOrientation = "http://www.simantics.org/Simantics/Diagram/2.0#HasPageOrientation";\r
+ public const String HasPageSize = "http://www.simantics.org/Simantics/Diagram/2.0#HasPageSize";\r
+ public const String HasResourcePath = "http://www.simantics.org/Simantics/Diagram/2.0#HasResourcePath";\r
+ public const String HasRoutePoints = "http://www.simantics.org/Simantics/Diagram/2.0#HasRoutePoints";\r
+ public const String HasTransform = "http://www.simantics.org/Simantics/Diagram/2.0#HasTransform";\r
+ public const String HasVisibleTag = "http://www.simantics.org/Simantics/Diagram/2.0#HasVisibleTag";\r
+ public const String Horizontal = "http://www.simantics.org/Simantics/Diagram/2.0#Horizontal";\r
+ public const String IsActive = "http://www.simantics.org/Simantics/Diagram/2.0#IsActive";\r
+ public const String IsBranchPointOf = "http://www.simantics.org/Simantics/Diagram/2.0#IsBranchPointOf";\r
+ public const String IsConnectorOf = "http://www.simantics.org/Simantics/Diagram/2.0#IsConnectorOf";\r
+ public const String IsFocusable = "http://www.simantics.org/Simantics/Diagram/2.0#IsFocusable";\r
+ public const String IsInputOf = "http://www.simantics.org/Simantics/Diagram/2.0#IsInputOf";\r
+ public const String IsOutputOf = "http://www.simantics.org/Simantics/Diagram/2.0#IsOutputOf";\r
+ public const String IsVisible = "http://www.simantics.org/Simantics/Diagram/2.0#IsVisible";\r
+ public const String Layer = "http://www.simantics.org/Simantics/Diagram/2.0#Layer";\r
+ public const String Link = "http://www.simantics.org/Simantics/Diagram/2.0#Link";\r
+ public const String Monitor = "http://www.simantics.org/Simantics/Diagram/2.0#Monitor";\r
+ public const String PageDescription = "http://www.simantics.org/Simantics/Diagram/2.0#PageDescription";\r
+ public const String PageOrientation = "http://www.simantics.org/Simantics/Diagram/2.0#PageOrientation";\r
+ public const String PageOrientation_Landscape = "http://www.simantics.org/Simantics/Diagram/2.0/PageOrientation#Landscape";\r
+ public const String PageOrientation_Portrait = "http://www.simantics.org/Simantics/Diagram/2.0/PageOrientation#Portrait";\r
+ public const String ResourcePath = "http://www.simantics.org/Simantics/Diagram/2.0#ResourcePath";\r
+ public const String SVGElement = "http://www.simantics.org/Simantics/Diagram/2.0#SVGElement";\r
+ public const String Shape = "http://www.simantics.org/Simantics/Diagram/2.0#Shape";\r
+ public const String SymbolReferenceLibrary = "http://www.simantics.org/Simantics/Diagram/2.0#SymbolReferenceLibrary";\r
+ public const String Terminal = "http://www.simantics.org/Simantics/Diagram/2.0#Terminal";\r
+ public const String Trend = "http://www.simantics.org/Simantics/Diagram/2.0#Trend";\r
+ public const String UpwardLink = "http://www.simantics.org/Simantics/Diagram/2.0#UpwardLink";\r
+ public const String Vertical = "http://www.simantics.org/Simantics/Diagram/2.0#Vertical";\r
+ }\r
+ \r
+ public DiagramResource(Graph graph) {\r
+ try {\r
+ AreConnected = graph.getResourceByURI(URIs.AreConnected);\r
+ BranchPoint = graph.getResourceByURI(URIs.BranchPoint);\r
+ Composite = graph.getResourceByURI(URIs.Composite);\r
+ Connection = graph.getResourceByURI(URIs.Connection);\r
+ Connector = graph.getResourceByURI(URIs.Connector);\r
+ DefinedElement = graph.getResourceByURI(URIs.DefinedElement);\r
+ Diagram = graph.getResourceByURI(URIs.Diagram);\r
+ DiagramLibrary = graph.getResourceByURI(URIs.DiagramLibrary);\r
+ Element = graph.getResourceByURI(URIs.Element);\r
+ ElementClass = graph.getResourceByURI(URIs.ElementClass);\r
+ Flag = graph.getResourceByURI(URIs.Flag);\r
+ FlagMode = graph.getResourceByURI(URIs.FlagMode);\r
+ FlagMode_External = graph.getResourceByURI(URIs.FlagMode_External);\r
+ FlagMode_Internal = graph.getResourceByURI(URIs.FlagMode_Internal);\r
+ FlagTerminal = graph.getResourceByURI(URIs.FlagTerminal);\r
+ FlagType = graph.getResourceByURI(URIs.FlagType);\r
+ FlagType_InputFlag = graph.getResourceByURI(URIs.FlagType_InputFlag);\r
+ FlagType_OutputFlag = graph.getResourceByURI(URIs.FlagType_OutputFlag);\r
+ HasAllowedConnectionDirection = graph.getResourceByURI(URIs.HasAllowedConnectionDirection);\r
+ HasBranchPoint = graph.getResourceByURI(URIs.HasBranchPoint);\r
+ HasConnectionVariable = graph.getResourceByURI(URIs.HasConnectionVariable);\r
+ HasConnector = graph.getResourceByURI(URIs.HasConnector);\r
+ HasCorrespondingFlag = graph.getResourceByURI(URIs.HasCorrespondingFlag);\r
+ HasDirection = graph.getResourceByURI(URIs.HasDirection);\r
+ HasFlagMode = graph.getResourceByURI(URIs.HasFlagMode);\r
+ HasFlagType = graph.getResourceByURI(URIs.HasFlagType);\r
+ HasFocusableTag = graph.getResourceByURI(URIs.HasFocusableTag);\r
+ HasFormat = graph.getResourceByURI(URIs.HasFormat);\r
+ HasInput = graph.getResourceByURI(URIs.HasInput);\r
+ HasLayer = graph.getResourceByURI(URIs.HasLayer);\r
+ HasLinkTarget = graph.getResourceByURI(URIs.HasLinkTarget);\r
+ HasOutput = graph.getResourceByURI(URIs.HasOutput);\r
+ HasPageDescription = graph.getResourceByURI(URIs.HasPageDescription);\r
+ HasPageOrientation = graph.getResourceByURI(URIs.HasPageOrientation);\r
+ HasPageSize = graph.getResourceByURI(URIs.HasPageSize);\r
+ HasResourcePath = graph.getResourceByURI(URIs.HasResourcePath);\r
+ HasRoutePoints = graph.getResourceByURI(URIs.HasRoutePoints);\r
+ HasTransform = graph.getResourceByURI(URIs.HasTransform);\r
+ HasVisibleTag = graph.getResourceByURI(URIs.HasVisibleTag);\r
+ Horizontal = graph.getResourceByURI(URIs.Horizontal);\r
+ IsActive = graph.getResourceByURI(URIs.IsActive);\r
+ IsBranchPointOf = graph.getResourceByURI(URIs.IsBranchPointOf);\r
+ IsConnectorOf = graph.getResourceByURI(URIs.IsConnectorOf);\r
+ IsFocusable = graph.getResourceByURI(URIs.IsFocusable);\r
+ IsInputOf = graph.getResourceByURI(URIs.IsInputOf);\r
+ IsOutputOf = graph.getResourceByURI(URIs.IsOutputOf);\r
+ IsVisible = graph.getResourceByURI(URIs.IsVisible);\r
+ Layer = graph.getResourceByURI(URIs.Layer);\r
+ Link = graph.getResourceByURI(URIs.Link);\r
+ Monitor = graph.getResourceByURI(URIs.Monitor);\r
+ PageDescription = graph.getResourceByURI(URIs.PageDescription);\r
+ PageOrientation = graph.getResourceByURI(URIs.PageOrientation);\r
+ PageOrientation_Landscape = graph.getResourceByURI(URIs.PageOrientation_Landscape);\r
+ PageOrientation_Portrait = graph.getResourceByURI(URIs.PageOrientation_Portrait);\r
+ ResourcePath = graph.getResourceByURI(URIs.ResourcePath);\r
+ SVGElement = graph.getResourceByURI(URIs.SVGElement);\r
+ Shape = graph.getResourceByURI(URIs.Shape);\r
+ SymbolReferenceLibrary = graph.getResourceByURI(URIs.SymbolReferenceLibrary);\r
+ Terminal = graph.getResourceByURI(URIs.Terminal);\r
+ Trend = graph.getResourceByURI(URIs.Trend);\r
+ UpwardLink = graph.getResourceByURI(URIs.UpwardLink);\r
+ Vertical = graph.getResourceByURI(URIs.Vertical);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static DiagramResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ DiagramResource ret = session.getService<DiagramResource>(typeof(DiagramResource));\r
+ if(ret == null) {\r
+ ret = new DiagramResource(graph);\r
+ session.registerService(typeof(DiagramResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.equation.stubs {\r
+\r
+\r
+public class EquationResource {\r
+ \r
+ public readonly Resource Addition;\r
+ public readonly Resource AggregateExpression;\r
+ public readonly Resource Assign;\r
+ public readonly Resource Division;\r
+ public readonly Resource DoubleAssign;\r
+ public readonly Resource DoubleToIntegerAssign;\r
+ public readonly Resource Element;\r
+ public readonly Resource ElementExpression;\r
+ public readonly Resource Equation;\r
+ public readonly Resource Expression;\r
+ public readonly Resource ExpressionExtent;\r
+ public readonly Resource HasA;\r
+ public readonly Resource HasB;\r
+ public readonly Resource HasC;\r
+ public readonly Resource HasCoefficient;\r
+ public readonly Resource HasElementList;\r
+ public readonly Resource HasSource;\r
+ public readonly Resource HasTarget;\r
+ public readonly Resource HasVariable;\r
+ public readonly Resource IntegerAssign;\r
+ public readonly Resource Multiplication;\r
+ public readonly Resource Number;\r
+ public readonly Resource Operator;\r
+ public readonly Resource ProductExpression;\r
+ public readonly Resource ScalarPolynomial;\r
+ public readonly Resource ScalarPolynomialExtent;\r
+ public readonly Resource SecondOrderScalarPolynomial;\r
+ public readonly Resource Subtraction;\r
+ public readonly Resource SumExpression;\r
+ public readonly Resource SystemOfEquations;\r
+ public readonly Resource SystemOfExpressions;\r
+ \r
+ public static class URIs {\r
+ public const String Addition = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Addition";\r
+ public const String AggregateExpression = "http://www.vtt.fi/Simantics/Equation/1.0/Types#AggregateExpression";\r
+ public const String Assign = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Assign";\r
+ public const String Division = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Division";\r
+ public const String DoubleAssign = "http://www.vtt.fi/Simantics/Equation/1.0/Types#DoubleAssign";\r
+ public const String DoubleToIntegerAssign = "http://www.vtt.fi/Simantics/Equation/1.0/Types#DoubleToIntegerAssign";\r
+ public const String Element = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Element";\r
+ public const String ElementExpression = "http://www.vtt.fi/Simantics/Equation/1.0/Types#ElementExpression";\r
+ public const String Equation = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Equation";\r
+ public const String Expression = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Expression";\r
+ public const String ExpressionExtent = "http://www.vtt.fi/Simantics/Equation/1.0#ExpressionExtent";\r
+ public const String HasA = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasA";\r
+ public const String HasB = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasB";\r
+ public const String HasC = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasC";\r
+ public const String HasCoefficient = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasCoefficient";\r
+ public const String HasElementList = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasElementList";\r
+ public const String HasSource = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasSource";\r
+ public const String HasTarget = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasTarget";\r
+ public const String HasVariable = "http://www.vtt.fi/Simantics/Equation/1.0/Relations#HasVariable";\r
+ public const String IntegerAssign = "http://www.vtt.fi/Simantics/Equation/1.0/Types#IntegerAssign";\r
+ public const String Multiplication = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Multiplication";\r
+ public const String Number = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Number";\r
+ public const String Operator = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Operator";\r
+ public const String ProductExpression = "http://www.vtt.fi/Simantics/Equation/1.0/Types#ProductExpression";\r
+ public const String ScalarPolynomial = "http://www.vtt.fi/Simantics/Equation/1.0/Types#ScalarPolynomial";\r
+ public const String ScalarPolynomialExtent = "http://www.vtt.fi/Simantics/Equation/1.0#ScalarPolynomialExtent";\r
+ public const String SecondOrderScalarPolynomial = "http://www.vtt.fi/Simantics/Equation/1.0/Types#SecondOrderScalarPolynomial";\r
+ public const String Subtraction = "http://www.vtt.fi/Simantics/Equation/1.0/Types#Subtraction";\r
+ public const String SumExpression = "http://www.vtt.fi/Simantics/Equation/1.0/Types#SumExpression";\r
+ public const String SystemOfEquations = "http://www.vtt.fi/Simantics/Equation/1.0/Types#SystemOfEquations";\r
+ public const String SystemOfExpressions = "http://www.vtt.fi/Simantics/Equation/1.0/Types#SystemOfExpressions";\r
+ }\r
+ \r
+ public EquationResource(Graph graph) {\r
+ try {\r
+ Addition = graph.getResourceByURI(URIs.Addition);\r
+ AggregateExpression = graph.getResourceByURI(URIs.AggregateExpression);\r
+ Assign = graph.getResourceByURI(URIs.Assign);\r
+ Division = graph.getResourceByURI(URIs.Division);\r
+ DoubleAssign = graph.getResourceByURI(URIs.DoubleAssign);\r
+ DoubleToIntegerAssign = graph.getResourceByURI(URIs.DoubleToIntegerAssign);\r
+ Element = graph.getResourceByURI(URIs.Element);\r
+ ElementExpression = graph.getResourceByURI(URIs.ElementExpression);\r
+ Equation = graph.getResourceByURI(URIs.Equation);\r
+ Expression = graph.getResourceByURI(URIs.Expression);\r
+ ExpressionExtent = graph.getResourceByURI(URIs.ExpressionExtent);\r
+ HasA = graph.getResourceByURI(URIs.HasA);\r
+ HasB = graph.getResourceByURI(URIs.HasB);\r
+ HasC = graph.getResourceByURI(URIs.HasC);\r
+ HasCoefficient = graph.getResourceByURI(URIs.HasCoefficient);\r
+ HasElementList = graph.getResourceByURI(URIs.HasElementList);\r
+ HasSource = graph.getResourceByURI(URIs.HasSource);\r
+ HasTarget = graph.getResourceByURI(URIs.HasTarget);\r
+ HasVariable = graph.getResourceByURI(URIs.HasVariable);\r
+ IntegerAssign = graph.getResourceByURI(URIs.IntegerAssign);\r
+ Multiplication = graph.getResourceByURI(URIs.Multiplication);\r
+ Number = graph.getResourceByURI(URIs.Number);\r
+ Operator = graph.getResourceByURI(URIs.Operator);\r
+ ProductExpression = graph.getResourceByURI(URIs.ProductExpression);\r
+ ScalarPolynomial = graph.getResourceByURI(URIs.ScalarPolynomial);\r
+ ScalarPolynomialExtent = graph.getResourceByURI(URIs.ScalarPolynomialExtent);\r
+ SecondOrderScalarPolynomial = graph.getResourceByURI(URIs.SecondOrderScalarPolynomial);\r
+ Subtraction = graph.getResourceByURI(URIs.Subtraction);\r
+ SumExpression = graph.getResourceByURI(URIs.SumExpression);\r
+ SystemOfEquations = graph.getResourceByURI(URIs.SystemOfEquations);\r
+ SystemOfExpressions = graph.getResourceByURI(URIs.SystemOfExpressions);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static EquationResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ EquationResource ret = session.getService<EquationResource>(typeof(EquationResource));\r
+ if(ret == null) {\r
+ ret = new EquationResource(graph);\r
+ session.registerService(typeof(EquationResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.flowNetwork {\r
+\r
+\r
+public class FlowNetworkResource {\r
+ \r
+ public readonly Resource Area;\r
+ public readonly Resource Branch;\r
+ public readonly Resource ConnectionPoint1;\r
+ public readonly Resource ConnectionPoint2;\r
+ public readonly Resource Elevation;\r
+ public readonly Resource FlowNetworkModel;\r
+ public readonly Resource FlowNetworkModelManager;\r
+ public readonly Resource FlowNetworkModellingDomain;\r
+ public readonly Resource IncludedInSimulation;\r
+ public readonly Resource Length;\r
+ public readonly Resource LossCoefficient;\r
+ public readonly Resource MassFlow;\r
+ public readonly Resource Node;\r
+ public readonly Resource Pressure;\r
+ public readonly Resource Self;\r
+ public readonly Resource Volume;\r
+ \r
+ public static class URIs {\r
+ public const String Area = "http://www.simantics.org/FlowNetwork#Area";\r
+ public const String Branch = "http://www.simantics.org/FlowNetwork#Branch";\r
+ public const String ConnectionPoint1 = "http://www.simantics.org/FlowNetwork#ConnectionPoint1";\r
+ public const String ConnectionPoint2 = "http://www.simantics.org/FlowNetwork#ConnectionPoint2";\r
+ public const String Elevation = "http://www.simantics.org/FlowNetwork#Elevation";\r
+ public const String FlowNetworkModel = "http://www.simantics.org/FlowNetwork#FlowNetworkModel";\r
+ public const String FlowNetworkModelManager = "http://www.simantics.org/FlowNetwork#FlowNetworkModelManager";\r
+ public const String FlowNetworkModellingDomain = "http://www.simantics.org/FlowNetwork#FlowNetworkModellingDomain";\r
+ public const String IncludedInSimulation = "http://www.simantics.org/FlowNetwork#IncludedInSimulation";\r
+ public const String Length = "http://www.simantics.org/FlowNetwork#Length";\r
+ public const String LossCoefficient = "http://www.simantics.org/FlowNetwork#LossCoefficient";\r
+ public const String MassFlow = "http://www.simantics.org/FlowNetwork#MassFlow";\r
+ public const String Node = "http://www.simantics.org/FlowNetwork#Node";\r
+ public const String Pressure = "http://www.simantics.org/FlowNetwork#Pressure";\r
+ public const String Self = "http://www.simantics.org/FlowNetwork#Self";\r
+ public const String Volume = "http://www.simantics.org/FlowNetwork#Volume";\r
+ }\r
+ \r
+ public FlowNetworkResource(Graph graph) {\r
+ try {\r
+ Area = graph.getResourceByURI(URIs.Area);\r
+ Branch = graph.getResourceByURI(URIs.Branch);\r
+ ConnectionPoint1 = graph.getResourceByURI(URIs.ConnectionPoint1);\r
+ ConnectionPoint2 = graph.getResourceByURI(URIs.ConnectionPoint2);\r
+ Elevation = graph.getResourceByURI(URIs.Elevation);\r
+ FlowNetworkModel = graph.getResourceByURI(URIs.FlowNetworkModel);\r
+ FlowNetworkModelManager = graph.getResourceByURI(URIs.FlowNetworkModelManager);\r
+ FlowNetworkModellingDomain = graph.getResourceByURI(URIs.FlowNetworkModellingDomain);\r
+ IncludedInSimulation = graph.getResourceByURI(URIs.IncludedInSimulation);\r
+ Length = graph.getResourceByURI(URIs.Length);\r
+ LossCoefficient = graph.getResourceByURI(URIs.LossCoefficient);\r
+ MassFlow = graph.getResourceByURI(URIs.MassFlow);\r
+ Node = graph.getResourceByURI(URIs.Node);\r
+ Pressure = graph.getResourceByURI(URIs.Pressure);\r
+ Self = graph.getResourceByURI(URIs.Self);\r
+ Volume = graph.getResourceByURI(URIs.Volume);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static FlowNetworkResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ FlowNetworkResource ret = session.getService<FlowNetworkResource>(typeof(FlowNetworkResource));\r
+ if(ret == null) {\r
+ ret = new FlowNetworkResource(graph);\r
+ session.registerService(typeof(FlowNetworkResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.diagram.stubs {\r
+\r
+\r
+public class G2DResource {\r
+ \r
+ public readonly Resource Alignment;\r
+ public readonly Resource Alignment_Center;\r
+ public readonly Resource Alignment_Leading;\r
+ public readonly Resource Alignment_Trailing;\r
+ public readonly Resource Black;\r
+ public readonly Resource Color;\r
+ public readonly Resource ColorGradient;\r
+ public readonly Resource ColorPlacement;\r
+ public readonly Resource ColorProfile;\r
+ public readonly Resource DefaultStroke;\r
+ public readonly Resource Font;\r
+ public readonly Resource FontStyle;\r
+ public readonly Resource FontStyle_bold;\r
+ public readonly Resource FontStyle_bolditalic;\r
+ public readonly Resource FontStyle_italic;\r
+ public readonly Resource FontStyle_normal;\r
+ public readonly Resource HasBeginArrow;\r
+ public readonly Resource HasBorderColor;\r
+ public readonly Resource HasColor;\r
+ public readonly Resource HasColorGradient;\r
+ public readonly Resource HasColorPlacement;\r
+ public readonly Resource HasDashArray;\r
+ public readonly Resource HasDashOffset;\r
+ public readonly Resource HasEndArrow;\r
+ public readonly Resource HasFillColor;\r
+ public readonly Resource HasFont;\r
+ public readonly Resource HasFontFamily;\r
+ public readonly Resource HasFontSize;\r
+ public readonly Resource HasFontStyle;\r
+ public readonly Resource HasGradientPosition;\r
+ public readonly Resource HasHorizontalAlignment;\r
+ public readonly Resource HasLineCap;\r
+ public readonly Resource HasLineEndStyle;\r
+ public readonly Resource HasLineJoin;\r
+ public readonly Resource HasLineSegmentTypes;\r
+ public readonly Resource HasLineSegments;\r
+ public readonly Resource HasMidArrow;\r
+ public readonly Resource HasMiterLimit;\r
+ public readonly Resource HasOpacity;\r
+ public readonly Resource HasPaint;\r
+ public readonly Resource HasPathData;\r
+ public readonly Resource HasPoint2D;\r
+ public readonly Resource HasPoint2DArray;\r
+ public readonly Resource HasRadii;\r
+ public readonly Resource HasSVGDocument;\r
+ public readonly Resource HasSize;\r
+ public readonly Resource HasStroke;\r
+ public readonly Resource HasStrokeType;\r
+ public readonly Resource HasStrokeWidth;\r
+ public readonly Resource HasStyle;\r
+ public readonly Resource HasText;\r
+ public readonly Resource HasTransform;\r
+ public readonly Resource HasVerticalAlignment;\r
+ public readonly Resource LineCap;\r
+ public readonly Resource LineCap_ButtCap;\r
+ public readonly Resource LineCap_RoundCap;\r
+ public readonly Resource LineCap_SquareCap;\r
+ public readonly Resource LineEnd;\r
+ public readonly Resource LineEndStyle;\r
+ public readonly Resource LineEndStyle_Filled;\r
+ public readonly Resource LineEndStyle_Normal;\r
+ public readonly Resource LineJoin;\r
+ public readonly Resource LineJoin_BevelJoin;\r
+ public readonly Resource LineJoin_MiterJoin;\r
+ public readonly Resource LineJoin_RoundJoin;\r
+ public readonly Resource Point2D;\r
+ public readonly Resource Point2DArray;\r
+ public readonly Resource Shape;\r
+ public readonly Resource Stroke;\r
+ public readonly Resource StrokeType;\r
+ public readonly Resource StrokeType_Nonscaling;\r
+ public readonly Resource StrokeType_Scaling;\r
+ public readonly Resource Style;\r
+ public readonly Resource Transform;\r
+ public readonly Resource White;\r
+ \r
+ public static class URIs {\r
+ public const String Alignment = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Alignment";\r
+ public const String Alignment_Center = "http://www.vtt.fi/Simantics/G2DOntology/1.0/Alignment#Center";\r
+ public const String Alignment_Leading = "http://www.vtt.fi/Simantics/G2DOntology/1.0/Alignment#Leading";\r
+ public const String Alignment_Trailing = "http://www.vtt.fi/Simantics/G2DOntology/1.0/Alignment#Trailing";\r
+ public const String Black = "http://www.vtt.fi/Simantics/G2DOntology/1.0/Colors#Black";\r
+ public const String Color = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Color";\r
+ public const String ColorGradient = "http://www.vtt.fi/Simantics/G2DOntology/1.0#ColorGradient";\r
+ public const String ColorPlacement = "http://www.vtt.fi/Simantics/G2DOntology/1.0#ColorPlacement";\r
+ public const String ColorProfile = "http://www.vtt.fi/Simantics/G2DOntology/1.0#ColorProfile";\r
+ public const String DefaultStroke = "http://www.vtt.fi/Simantics/G2DOntology/1.0#DefaultStroke";\r
+ public const String Font = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Font";\r
+ public const String FontStyle = "http://www.vtt.fi/Simantics/G2DOntology/1.0#FontStyle";\r
+ public const String FontStyle_bold = "http://www.vtt.fi/Simantics/G2DOntology/1.0/FontStyle#bold";\r
+ public const String FontStyle_bolditalic = "http://www.vtt.fi/Simantics/G2DOntology/1.0/FontStyle#bolditalic";\r
+ public const String FontStyle_italic = "http://www.vtt.fi/Simantics/G2DOntology/1.0/FontStyle#italic";\r
+ public const String FontStyle_normal = "http://www.vtt.fi/Simantics/G2DOntology/1.0/FontStyle#normal";\r
+ public const String HasBeginArrow = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasBeginArrow";\r
+ public const String HasBorderColor = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasBorderColor";\r
+ public const String HasColor = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasColor";\r
+ public const String HasColorGradient = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasColorGradient";\r
+ public const String HasColorPlacement = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasColorPlacement";\r
+ public const String HasDashArray = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasDashArray";\r
+ public const String HasDashOffset = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasDashOffset";\r
+ public const String HasEndArrow = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasEndArrow";\r
+ public const String HasFillColor = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasFillColor";\r
+ public const String HasFont = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasFont";\r
+ public const String HasFontFamily = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasFontFamily";\r
+ public const String HasFontSize = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasFontSize";\r
+ public const String HasFontStyle = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasFontStyle";\r
+ public const String HasGradientPosition = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasGradientPosition";\r
+ public const String HasHorizontalAlignment = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasHorizontalAlignment";\r
+ public const String HasLineCap = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasLineCap";\r
+ public const String HasLineEndStyle = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasLineEndStyle";\r
+ public const String HasLineJoin = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasLineJoin";\r
+ public const String HasLineSegmentTypes = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasLineSegmentTypes";\r
+ public const String HasLineSegments = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasLineSegments";\r
+ public const String HasMidArrow = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasMidArrow";\r
+ public const String HasMiterLimit = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasMiterLimit";\r
+ public const String HasOpacity = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasOpacity";\r
+ public const String HasPaint = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasPaint";\r
+ public const String HasPathData = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasPathData";\r
+ public const String HasPoint2D = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasPoint2D";\r
+ public const String HasPoint2DArray = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasPoint2DArray";\r
+ public const String HasRadii = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasRadii";\r
+ public const String HasSVGDocument = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasSVGDocument";\r
+ public const String HasSize = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasSize";\r
+ public const String HasStroke = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasStroke";\r
+ public const String HasStrokeType = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasStrokeType";\r
+ public const String HasStrokeWidth = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasStrokeWidth";\r
+ public const String HasStyle = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasStyle";\r
+ public const String HasText = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasText";\r
+ public const String HasTransform = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasTransform";\r
+ public const String HasVerticalAlignment = "http://www.vtt.fi/Simantics/G2DOntology/1.0#HasVerticalAlignment";\r
+ public const String LineCap = "http://www.vtt.fi/Simantics/G2DOntology/1.0#LineCap";\r
+ public const String LineCap_ButtCap = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineCap#ButtCap";\r
+ public const String LineCap_RoundCap = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineCap#RoundCap";\r
+ public const String LineCap_SquareCap = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineCap#SquareCap";\r
+ public const String LineEnd = "http://www.vtt.fi/Simantics/G2DOntology/1.0#LineEnd";\r
+ public const String LineEndStyle = "http://www.vtt.fi/Simantics/G2DOntology/1.0#LineEndStyle";\r
+ public const String LineEndStyle_Filled = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineEndStyle#Filled";\r
+ public const String LineEndStyle_Normal = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineEndStyle#Normal";\r
+ public const String LineJoin = "http://www.vtt.fi/Simantics/G2DOntology/1.0#LineJoin";\r
+ public const String LineJoin_BevelJoin = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineJoin#BevelJoin";\r
+ public const String LineJoin_MiterJoin = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineJoin#MiterJoin";\r
+ public const String LineJoin_RoundJoin = "http://www.vtt.fi/Simantics/G2DOntology/1.0/LineJoin#RoundJoin";\r
+ public const String Point2D = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Point2D";\r
+ public const String Point2DArray = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Point2DArray";\r
+ public const String Shape = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Shape";\r
+ public const String Stroke = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Stroke";\r
+ public const String StrokeType = "http://www.vtt.fi/Simantics/G2DOntology/1.0#StrokeType";\r
+ public const String StrokeType_Nonscaling = "http://www.vtt.fi/Simantics/G2DOntology/1.0/StrokeType#Nonscaling";\r
+ public const String StrokeType_Scaling = "http://www.vtt.fi/Simantics/G2DOntology/1.0/StrokeType#Scaling";\r
+ public const String Style = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Style";\r
+ public const String Transform = "http://www.vtt.fi/Simantics/G2DOntology/1.0#Transform";\r
+ public const String White = "http://www.vtt.fi/Simantics/G2DOntology/1.0/Colors#White";\r
+ }\r
+ \r
+ public G2DResource(Graph graph) {\r
+ try {\r
+ Alignment = graph.getResourceByURI(URIs.Alignment);\r
+ Alignment_Center = graph.getResourceByURI(URIs.Alignment_Center);\r
+ Alignment_Leading = graph.getResourceByURI(URIs.Alignment_Leading);\r
+ Alignment_Trailing = graph.getResourceByURI(URIs.Alignment_Trailing);\r
+ Black = graph.getResourceByURI(URIs.Black);\r
+ Color = graph.getResourceByURI(URIs.Color);\r
+ ColorGradient = graph.getResourceByURI(URIs.ColorGradient);\r
+ ColorPlacement = graph.getResourceByURI(URIs.ColorPlacement);\r
+ ColorProfile = graph.getResourceByURI(URIs.ColorProfile);\r
+ DefaultStroke = graph.getResourceByURI(URIs.DefaultStroke);\r
+ Font = graph.getResourceByURI(URIs.Font);\r
+ FontStyle = graph.getResourceByURI(URIs.FontStyle);\r
+ FontStyle_bold = graph.getResourceByURI(URIs.FontStyle_bold);\r
+ FontStyle_bolditalic = graph.getResourceByURI(URIs.FontStyle_bolditalic);\r
+ FontStyle_italic = graph.getResourceByURI(URIs.FontStyle_italic);\r
+ FontStyle_normal = graph.getResourceByURI(URIs.FontStyle_normal);\r
+ HasBeginArrow = graph.getResourceByURI(URIs.HasBeginArrow);\r
+ HasBorderColor = graph.getResourceByURI(URIs.HasBorderColor);\r
+ HasColor = graph.getResourceByURI(URIs.HasColor);\r
+ HasColorGradient = graph.getResourceByURI(URIs.HasColorGradient);\r
+ HasColorPlacement = graph.getResourceByURI(URIs.HasColorPlacement);\r
+ HasDashArray = graph.getResourceByURI(URIs.HasDashArray);\r
+ HasDashOffset = graph.getResourceByURI(URIs.HasDashOffset);\r
+ HasEndArrow = graph.getResourceByURI(URIs.HasEndArrow);\r
+ HasFillColor = graph.getResourceByURI(URIs.HasFillColor);\r
+ HasFont = graph.getResourceByURI(URIs.HasFont);\r
+ HasFontFamily = graph.getResourceByURI(URIs.HasFontFamily);\r
+ HasFontSize = graph.getResourceByURI(URIs.HasFontSize);\r
+ HasFontStyle = graph.getResourceByURI(URIs.HasFontStyle);\r
+ HasGradientPosition = graph.getResourceByURI(URIs.HasGradientPosition);\r
+ HasHorizontalAlignment = graph.getResourceByURI(URIs.HasHorizontalAlignment);\r
+ HasLineCap = graph.getResourceByURI(URIs.HasLineCap);\r
+ HasLineEndStyle = graph.getResourceByURI(URIs.HasLineEndStyle);\r
+ HasLineJoin = graph.getResourceByURI(URIs.HasLineJoin);\r
+ HasLineSegmentTypes = graph.getResourceByURI(URIs.HasLineSegmentTypes);\r
+ HasLineSegments = graph.getResourceByURI(URIs.HasLineSegments);\r
+ HasMidArrow = graph.getResourceByURI(URIs.HasMidArrow);\r
+ HasMiterLimit = graph.getResourceByURI(URIs.HasMiterLimit);\r
+ HasOpacity = graph.getResourceByURI(URIs.HasOpacity);\r
+ HasPaint = graph.getResourceByURI(URIs.HasPaint);\r
+ HasPathData = graph.getResourceByURI(URIs.HasPathData);\r
+ HasPoint2D = graph.getResourceByURI(URIs.HasPoint2D);\r
+ HasPoint2DArray = graph.getResourceByURI(URIs.HasPoint2DArray);\r
+ HasRadii = graph.getResourceByURI(URIs.HasRadii);\r
+ HasSVGDocument = graph.getResourceByURI(URIs.HasSVGDocument);\r
+ HasSize = graph.getResourceByURI(URIs.HasSize);\r
+ HasStroke = graph.getResourceByURI(URIs.HasStroke);\r
+ HasStrokeType = graph.getResourceByURI(URIs.HasStrokeType);\r
+ HasStrokeWidth = graph.getResourceByURI(URIs.HasStrokeWidth);\r
+ HasStyle = graph.getResourceByURI(URIs.HasStyle);\r
+ HasText = graph.getResourceByURI(URIs.HasText);\r
+ HasTransform = graph.getResourceByURI(URIs.HasTransform);\r
+ HasVerticalAlignment = graph.getResourceByURI(URIs.HasVerticalAlignment);\r
+ LineCap = graph.getResourceByURI(URIs.LineCap);\r
+ LineCap_ButtCap = graph.getResourceByURI(URIs.LineCap_ButtCap);\r
+ LineCap_RoundCap = graph.getResourceByURI(URIs.LineCap_RoundCap);\r
+ LineCap_SquareCap = graph.getResourceByURI(URIs.LineCap_SquareCap);\r
+ LineEnd = graph.getResourceByURI(URIs.LineEnd);\r
+ LineEndStyle = graph.getResourceByURI(URIs.LineEndStyle);\r
+ LineEndStyle_Filled = graph.getResourceByURI(URIs.LineEndStyle_Filled);\r
+ LineEndStyle_Normal = graph.getResourceByURI(URIs.LineEndStyle_Normal);\r
+ LineJoin = graph.getResourceByURI(URIs.LineJoin);\r
+ LineJoin_BevelJoin = graph.getResourceByURI(URIs.LineJoin_BevelJoin);\r
+ LineJoin_MiterJoin = graph.getResourceByURI(URIs.LineJoin_MiterJoin);\r
+ LineJoin_RoundJoin = graph.getResourceByURI(URIs.LineJoin_RoundJoin);\r
+ Point2D = graph.getResourceByURI(URIs.Point2D);\r
+ Point2DArray = graph.getResourceByURI(URIs.Point2DArray);\r
+ Shape = graph.getResourceByURI(URIs.Shape);\r
+ Stroke = graph.getResourceByURI(URIs.Stroke);\r
+ StrokeType = graph.getResourceByURI(URIs.StrokeType);\r
+ StrokeType_Nonscaling = graph.getResourceByURI(URIs.StrokeType_Nonscaling);\r
+ StrokeType_Scaling = graph.getResourceByURI(URIs.StrokeType_Scaling);\r
+ Style = graph.getResourceByURI(URIs.Style);\r
+ Transform = graph.getResourceByURI(URIs.Transform);\r
+ White = graph.getResourceByURI(URIs.White);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static G2DResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ G2DResource ret = session.getService<G2DResource>(typeof(G2DResource));\r
+ if(ret == null) {\r
+ ret = new G2DResource(graph);\r
+ session.registerService(typeof(G2DResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.diagram.stubs {\r
+\r
+\r
+public class ImageResource {\r
+ \r
+ public readonly Resource BitmapImage;\r
+ public readonly Resource HasAlphaData;\r
+ public readonly Resource HasIcon;\r
+ public readonly Resource HasImage;\r
+ public readonly Resource HasImageData;\r
+ public readonly Resource HasMatrixImageIndex;\r
+ public readonly Resource HasMatrixType;\r
+ public readonly Resource HasPhysicalHeight;\r
+ public readonly Resource HasPhysicalWidth;\r
+ public readonly Resource HasPixelHeight;\r
+ public readonly Resource HasPixelWidth;\r
+ public readonly Resource HasRGBData;\r
+ public readonly Resource HasSVGDocument;\r
+ public readonly Resource IconLibrary;\r
+ public readonly Resource Image;\r
+ public readonly Resource ImageLibrary;\r
+ public readonly Resource MatrixImage;\r
+ public readonly Resource SVGImage;\r
+ \r
+ public static class URIs {\r
+ public const String BitmapImage = "http://www.simantics.org/Image/1.0/Types#BitmapImage";\r
+ public const String HasAlphaData = "http://www.simantics.org/Image/1.0/Relations#HasAlphaData";\r
+ public const String HasIcon = "http://www.simantics.org/Image/1.0/Relations#HasIcon";\r
+ public const String HasImage = "http://www.simantics.org/Image/1.0/Relations#HasImage";\r
+ public const String HasImageData = "http://www.simantics.org/Image/1.0/Relations#HasImageData";\r
+ public const String HasMatrixImageIndex = "http://www.simantics.org/Image/1.0/Relations#HasMatrixImageIndex";\r
+ public const String HasMatrixType = "http://www.simantics.org/Image/1.0/Relations#HasMatrixType";\r
+ public const String HasPhysicalHeight = "http://www.simantics.org/Image/1.0/Relations#HasPhysicalHeight";\r
+ public const String HasPhysicalWidth = "http://www.simantics.org/Image/1.0/Relations#HasPhysicalWidth";\r
+ public const String HasPixelHeight = "http://www.simantics.org/Image/1.0/Relations#HasPixelHeight";\r
+ public const String HasPixelWidth = "http://www.simantics.org/Image/1.0/Relations#HasPixelWidth";\r
+ public const String HasRGBData = "http://www.simantics.org/Image/1.0/Relations#HasRGBData";\r
+ public const String HasSVGDocument = "http://www.simantics.org/Image/1.0/Relations#HasSVGDocument";\r
+ public const String IconLibrary = "http://www.simantics.org/Image/1.0/Types#IconLibrary";\r
+ public const String Image = "http://www.simantics.org/Image/1.0/Types#Image";\r
+ public const String ImageLibrary = "http://www.simantics.org/Image/1.0/Types#ImageLibrary";\r
+ public const String MatrixImage = "http://www.simantics.org/Image/1.0/Types#MatrixImage";\r
+ public const String SVGImage = "http://www.simantics.org/Image/1.0/Types#SVGImage";\r
+ }\r
+ \r
+ public ImageResource(Graph graph) {\r
+ try {\r
+ BitmapImage = graph.getResourceByURI(URIs.BitmapImage);\r
+ HasAlphaData = graph.getResourceByURI(URIs.HasAlphaData);\r
+ HasIcon = graph.getResourceByURI(URIs.HasIcon);\r
+ HasImage = graph.getResourceByURI(URIs.HasImage);\r
+ HasImageData = graph.getResourceByURI(URIs.HasImageData);\r
+ HasMatrixImageIndex = graph.getResourceByURI(URIs.HasMatrixImageIndex);\r
+ HasMatrixType = graph.getResourceByURI(URIs.HasMatrixType);\r
+ HasPhysicalHeight = graph.getResourceByURI(URIs.HasPhysicalHeight);\r
+ HasPhysicalWidth = graph.getResourceByURI(URIs.HasPhysicalWidth);\r
+ HasPixelHeight = graph.getResourceByURI(URIs.HasPixelHeight);\r
+ HasPixelWidth = graph.getResourceByURI(URIs.HasPixelWidth);\r
+ HasRGBData = graph.getResourceByURI(URIs.HasRGBData);\r
+ HasSVGDocument = graph.getResourceByURI(URIs.HasSVGDocument);\r
+ IconLibrary = graph.getResourceByURI(URIs.IconLibrary);\r
+ Image = graph.getResourceByURI(URIs.Image);\r
+ ImageLibrary = graph.getResourceByURI(URIs.ImageLibrary);\r
+ MatrixImage = graph.getResourceByURI(URIs.MatrixImage);\r
+ SVGImage = graph.getResourceByURI(URIs.SVGImage);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static ImageResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ ImageResource ret = session.getService<ImageResource>(typeof(ImageResource));\r
+ if(ret == null) {\r
+ ret = new ImageResource(graph);\r
+ session.registerService(typeof(ImageResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.modeling {\r
+\r
+\r
+public class ModelingResources {\r
+ \r
+ public readonly Resource ComponentToElement;\r
+ public readonly Resource ComponentTypeToConnectionType;\r
+ public readonly Resource ComponentTypeToSymbol;\r
+ public readonly Resource CompositeToDiagram;\r
+ public readonly Resource ConnectionDirectionToFlagType;\r
+ public readonly Resource ConnectionRelationToConnectionType;\r
+ public readonly Resource ConnectionRelationToDiagramConnectionRelation;\r
+ public readonly Resource ConnectionToDiagramConnection;\r
+ public readonly Resource ConnectionTypeToComponentType;\r
+ public readonly Resource ConnectionTypeToConnectionRelation;\r
+ public readonly Resource DiagramConnectionRelationToConnectionRelation;\r
+ public readonly Resource DiagramConnectionToConnection;\r
+ public readonly Resource DiagramOperations;\r
+ public readonly Resource DiagramToComposite;\r
+ public readonly Resource DiagramToCompositeMapping;\r
+ public readonly Resource DisconnectFlag;\r
+ public readonly Resource ElementToComponent;\r
+ public readonly Resource Encapsulable;\r
+ public readonly Resource Encapsulate;\r
+ public readonly Resource FlagToParameter;\r
+ public readonly Resource FlagTypeToConnectionDirection;\r
+ public readonly Resource HasCounterpart;\r
+ public readonly Resource HasDeadband;\r
+ public readonly Resource HasDiagramOperations;\r
+ public readonly Resource HasModelingOperations;\r
+ public readonly Resource HasNodeId;\r
+ public readonly Resource HeadlessDiagramViewer;\r
+ public readonly Resource Instantiable;\r
+ public readonly Resource Instantiate;\r
+ public readonly Resource IsEnabled;\r
+ public readonly Resource Mapped;\r
+ public readonly Resource ModelingOperations;\r
+ public readonly Resource ModelingProject;\r
+ public readonly Resource NavigateToTarget;\r
+ public readonly Resource NewComponent;\r
+ public readonly Resource NewComponentType;\r
+ public readonly Resource NewConnectionPoint;\r
+ public readonly Resource NewLiteralVariable;\r
+ public readonly Resource NewModel;\r
+ public readonly Resource ParameterToFlag;\r
+ public readonly Resource StructuralModelManager;\r
+ public readonly Resource Subscription;\r
+ public readonly Resource SubscriptionItem;\r
+ public readonly Resource SymbolToComponentType;\r
+ public readonly Resource TestTerminal;\r
+ public readonly Resource WebmonVariable;\r
+ \r
+ public static class URIs {\r
+ public const String ComponentToElement = "http://www.simantics.org/Modeling/1.0/Maps#ComponentToElement";\r
+ public const String ComponentTypeToConnectionType = "http://www.simantics.org/Modeling/1.0/Maps#ComponentTypeToConnectionType";\r
+ public const String ComponentTypeToSymbol = "http://www.simantics.org/Modeling/1.0/Maps#ComponentTypeToSymbol";\r
+ public const String CompositeToDiagram = "http://www.simantics.org/Modeling/1.0/Maps#CompositeToDiagram";\r
+ public const String ConnectionDirectionToFlagType = "http://www.simantics.org/Modeling/1.0/Maps#ConnectionDirectionToFlagType";\r
+ public const String ConnectionRelationToConnectionType = "http://www.simantics.org/Modeling/1.0/Maps#ConnectionRelationToConnectionType";\r
+ public const String ConnectionRelationToDiagramConnectionRelation = "http://www.simantics.org/Modeling/1.0/Maps#ConnectionRelationToDiagramConnectionRelation";\r
+ public const String ConnectionToDiagramConnection = "http://www.simantics.org/Modeling/1.0/Maps#ConnectionToDiagramConnection";\r
+ public const String ConnectionTypeToComponentType = "http://www.simantics.org/Modeling/1.0/Maps#ConnectionTypeToComponentType";\r
+ public const String ConnectionTypeToConnectionRelation = "http://www.simantics.org/Modeling/1.0/Maps#ConnectionTypeToConnectionRelation";\r
+ public const String DiagramConnectionRelationToConnectionRelation = "http://www.simantics.org/Modeling/1.0/Maps#DiagramConnectionRelationToConnectionRelation";\r
+ public const String DiagramConnectionToConnection = "http://www.simantics.org/Modeling/1.0/Maps#DiagramConnectionToConnection";\r
+ public const String DiagramOperations = "http://www.simantics.org/Modeling/1.0#DiagramOperations";\r
+ public const String DiagramToComposite = "http://www.simantics.org/Modeling/1.0/Maps#DiagramToComposite";\r
+ public const String DiagramToCompositeMapping = "http://www.simantics.org/Modeling/1.0#DiagramToCompositeMapping";\r
+ public const String DisconnectFlag = "http://www.simantics.org/Modeling/1.0/Operations#DisconnectFlag";\r
+ public const String ElementToComponent = "http://www.simantics.org/Modeling/1.0/Maps#ElementToComponent";\r
+ public const String Encapsulable = "http://www.simantics.org/Modeling/1.0/Predicates#Encapsulable";\r
+ public const String Encapsulate = "http://www.simantics.org/Modeling/1.0/Operations#Encapsulate";\r
+ public const String FlagToParameter = "http://www.simantics.org/Modeling/1.0/Maps#FlagToParameter";\r
+ public const String FlagTypeToConnectionDirection = "http://www.simantics.org/Modeling/1.0/Maps#FlagTypeToConnectionDirection";\r
+ public const String HasCounterpart = "http://www.simantics.org/Modeling/1.0/Predicates#HasCounterpart";\r
+ public const String HasDeadband = "http://www.simantics.org/Modeling/1.0#HasDeadband";\r
+ public const String HasDiagramOperations = "http://www.simantics.org/Modeling/1.0#HasDiagramOperations";\r
+ public const String HasModelingOperations = "http://www.simantics.org/Modeling/1.0#HasModelingOperations";\r
+ public const String HasNodeId = "http://www.simantics.org/Modeling/1.0#HasNodeId";\r
+ public const String HeadlessDiagramViewer = "http://www.simantics.org/Modeling/1.0#HeadlessDiagramViewer";\r
+ public const String Instantiable = "http://www.simantics.org/Modeling/1.0/Predicates#Instantiable";\r
+ public const String Instantiate = "http://www.simantics.org/Modeling/1.0/Operations#Instantiate";\r
+ public const String IsEnabled = "http://www.simantics.org/Modeling/1.0#IsEnabled";\r
+ public const String Mapped = "http://www.simantics.org/Modeling/1.0#Mapped";\r
+ public const String ModelingOperations = "http://www.simantics.org/Modeling/1.0#ModelingOperations";\r
+ public const String ModelingProject = "http://www.simantics.org/Modeling/1.0#ModelingProject";\r
+ public const String NavigateToTarget = "http://www.simantics.org/Modeling/1.0/Operations#NavigateToTarget";\r
+ public const String NewComponent = "http://www.simantics.org/Modeling/1.0/Operations#NewComponent";\r
+ public const String NewComponentType = "http://www.simantics.org/Modeling/1.0/Operations#NewComponentType";\r
+ public const String NewConnectionPoint = "http://www.simantics.org/Modeling/1.0/Operations#NewConnectionPoint";\r
+ public const String NewLiteralVariable = "http://www.simantics.org/Modeling/1.0/Operations#NewLiteralVariable";\r
+ public const String NewModel = "http://www.simantics.org/Modeling/1.0/Operations#NewModel";\r
+ public const String ParameterToFlag = "http://www.simantics.org/Modeling/1.0/Maps#ParameterToFlag";\r
+ public const String StructuralModelManager = "http://www.simantics.org/Modeling/1.0#StructuralModelManager";\r
+ public const String Subscription = "http://www.simantics.org/Modeling/1.0#Subscription";\r
+ public const String SubscriptionItem = "http://www.simantics.org/Modeling/1.0#SubscriptionItem";\r
+ public const String SymbolToComponentType = "http://www.simantics.org/Modeling/1.0/Maps#SymbolToComponentType";\r
+ public const String TestTerminal = "http://www.simantics.org/Modeling/1.0#TestTerminal";\r
+ public const String WebmonVariable = "http://www.simantics.org/Modeling/1.0#WebmonVariable";\r
+ }\r
+ \r
+ public ModelingResources(Graph graph) {\r
+ try {\r
+ ComponentToElement = graph.getResourceByURI(URIs.ComponentToElement);\r
+ ComponentTypeToConnectionType = graph.getResourceByURI(URIs.ComponentTypeToConnectionType);\r
+ ComponentTypeToSymbol = graph.getResourceByURI(URIs.ComponentTypeToSymbol);\r
+ CompositeToDiagram = graph.getResourceByURI(URIs.CompositeToDiagram);\r
+ ConnectionDirectionToFlagType = graph.getResourceByURI(URIs.ConnectionDirectionToFlagType);\r
+ ConnectionRelationToConnectionType = graph.getResourceByURI(URIs.ConnectionRelationToConnectionType);\r
+ ConnectionRelationToDiagramConnectionRelation = graph.getResourceByURI(URIs.ConnectionRelationToDiagramConnectionRelation);\r
+ ConnectionToDiagramConnection = graph.getResourceByURI(URIs.ConnectionToDiagramConnection);\r
+ ConnectionTypeToComponentType = graph.getResourceByURI(URIs.ConnectionTypeToComponentType);\r
+ ConnectionTypeToConnectionRelation = graph.getResourceByURI(URIs.ConnectionTypeToConnectionRelation);\r
+ DiagramConnectionRelationToConnectionRelation = graph.getResourceByURI(URIs.DiagramConnectionRelationToConnectionRelation);\r
+ DiagramConnectionToConnection = graph.getResourceByURI(URIs.DiagramConnectionToConnection);\r
+ DiagramOperations = graph.getResourceByURI(URIs.DiagramOperations);\r
+ DiagramToComposite = graph.getResourceByURI(URIs.DiagramToComposite);\r
+ DiagramToCompositeMapping = graph.getResourceByURI(URIs.DiagramToCompositeMapping);\r
+ DisconnectFlag = graph.getResourceByURI(URIs.DisconnectFlag);\r
+ ElementToComponent = graph.getResourceByURI(URIs.ElementToComponent);\r
+ Encapsulable = graph.getResourceByURI(URIs.Encapsulable);\r
+ Encapsulate = graph.getResourceByURI(URIs.Encapsulate);\r
+ FlagToParameter = graph.getResourceByURI(URIs.FlagToParameter);\r
+ FlagTypeToConnectionDirection = graph.getResourceByURI(URIs.FlagTypeToConnectionDirection);\r
+ HasCounterpart = graph.getResourceByURI(URIs.HasCounterpart);\r
+ HasDeadband = graph.getResourceByURI(URIs.HasDeadband);\r
+ HasDiagramOperations = graph.getResourceByURI(URIs.HasDiagramOperations);\r
+ HasModelingOperations = graph.getResourceByURI(URIs.HasModelingOperations);\r
+ HasNodeId = graph.getResourceByURI(URIs.HasNodeId);\r
+ HeadlessDiagramViewer = graph.getResourceByURI(URIs.HeadlessDiagramViewer);\r
+ Instantiable = graph.getResourceByURI(URIs.Instantiable);\r
+ Instantiate = graph.getResourceByURI(URIs.Instantiate);\r
+ IsEnabled = graph.getResourceByURI(URIs.IsEnabled);\r
+ Mapped = graph.getResourceByURI(URIs.Mapped);\r
+ ModelingOperations = graph.getResourceByURI(URIs.ModelingOperations);\r
+ ModelingProject = graph.getResourceByURI(URIs.ModelingProject);\r
+ NavigateToTarget = graph.getResourceByURI(URIs.NavigateToTarget);\r
+ NewComponent = graph.getResourceByURI(URIs.NewComponent);\r
+ NewComponentType = graph.getResourceByURI(URIs.NewComponentType);\r
+ NewConnectionPoint = graph.getResourceByURI(URIs.NewConnectionPoint);\r
+ NewLiteralVariable = graph.getResourceByURI(URIs.NewLiteralVariable);\r
+ NewModel = graph.getResourceByURI(URIs.NewModel);\r
+ ParameterToFlag = graph.getResourceByURI(URIs.ParameterToFlag);\r
+ StructuralModelManager = graph.getResourceByURI(URIs.StructuralModelManager);\r
+ Subscription = graph.getResourceByURI(URIs.Subscription);\r
+ SubscriptionItem = graph.getResourceByURI(URIs.SubscriptionItem);\r
+ SymbolToComponentType = graph.getResourceByURI(URIs.SymbolToComponentType);\r
+ TestTerminal = graph.getResourceByURI(URIs.TestTerminal);\r
+ WebmonVariable = graph.getResourceByURI(URIs.WebmonVariable);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static ModelingResources getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ ModelingResources ret = session.getService<ModelingResources>(typeof(ModelingResources));\r
+ if(ret == null) {\r
+ ret = new ModelingResources(graph);\r
+ session.registerService(typeof(ModelingResources), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.project {\r
+\r
+\r
+public class ProConfResource {\r
+ \r
+ public readonly Resource SymbolManager;\r
+ public readonly Resource SymbolManagerFeature;\r
+ \r
+ public static class URIs {\r
+ public const String SymbolManager = "http://www.simantics.org/Ontology/ProConf/1.0/Features#SymbolManager";\r
+ public const String SymbolManagerFeature = "http://www.simantics.org/Ontology/ProConf/1.0#SymbolManagerFeature";\r
+ }\r
+ \r
+ public ProConfResource(Graph graph) {\r
+ try {\r
+ SymbolManager = graph.getResourceByURI(URIs.SymbolManager);\r
+ SymbolManagerFeature = graph.getResourceByURI(URIs.SymbolManagerFeature);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static ProConfResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ ProConfResource ret = session.getService<ProConfResource>(typeof(ProConfResource));\r
+ if(ret == null) {\r
+ ret = new ProConfResource(graph);\r
+ session.registerService(typeof(ProConfResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.structural.stubs {\r
+\r
+\r
+public class StructuralResource2 {\r
+ \r
+ public readonly Resource Binds;\r
+ public readonly Resource CardinalityRestriction;\r
+ public readonly Resource Component;\r
+ public readonly Resource ComponentType;\r
+ public readonly Resource Composite;\r
+ public readonly Resource Connection;\r
+ public readonly Resource ConnectionDirection;\r
+ public readonly Resource ConnectionRelation;\r
+ public readonly Resource ConnectionType;\r
+ public readonly Resource ConnectionVariable;\r
+ public readonly Resource Defines;\r
+ public readonly Resource DirectedConnectionRelation;\r
+ public readonly Resource Expression;\r
+ public readonly Resource HasCardinalityRestriction;\r
+ public readonly Resource HasConnectionDirection;\r
+ public readonly Resource HasConnectionType;\r
+ public readonly Resource HasLowerBound;\r
+ public readonly Resource HasParameter;\r
+ public readonly Resource HasUpperBound;\r
+ public readonly Resource HasValue;\r
+ public readonly Resource HasVariable;\r
+ public readonly Resource InputDirection;\r
+ public readonly Resource IsBoundBy;\r
+ public readonly Resource IsConnected;\r
+ public readonly Resource IsConnectedFrom;\r
+ public readonly Resource IsConnectedTo;\r
+ public readonly Resource IsDefinedBy;\r
+ public readonly Resource IsParameterOf;\r
+ public readonly Resource LiteralVariable;\r
+ public readonly Resource OrderedComposite;\r
+ public readonly Resource OutputDirection;\r
+ public readonly Resource StructuralConsistsOf;\r
+ public readonly Resource StructuralPartOf;\r
+ public readonly Resource SupportsConnectionType;\r
+ public readonly Resource SupportsDirection;\r
+ public readonly Resource Value;\r
+ public readonly Resource ValueRelation;\r
+ public readonly Resource Variable;\r
+ public readonly Resource VariableOf;\r
+ public readonly Resource VariableRelation;\r
+ \r
+ public static class URIs {\r
+ public const String Binds = "http://www.simantics.org/Structural/1.0#Binds";\r
+ public const String CardinalityRestriction = "http://www.simantics.org/Structural/1.0#CardinalityRestriction";\r
+ public const String Component = "http://www.simantics.org/Structural/1.0#Component";\r
+ public const String ComponentType = "http://www.simantics.org/Structural/1.0#ComponentType";\r
+ public const String Composite = "http://www.simantics.org/Structural/1.0#Composite";\r
+ public const String Connection = "http://www.simantics.org/Structural/1.0#Connection";\r
+ public const String ConnectionDirection = "http://www.simantics.org/Structural/1.0#ConnectionDirection";\r
+ public const String ConnectionRelation = "http://www.simantics.org/Structural/1.0#ConnectionRelation";\r
+ public const String ConnectionType = "http://www.simantics.org/Structural/1.0#ConnectionType";\r
+ public const String ConnectionVariable = "http://www.simantics.org/Structural/1.0#ConnectionVariable";\r
+ public const String Defines = "http://www.simantics.org/Structural/1.0#Defines";\r
+ public const String DirectedConnectionRelation = "http://www.simantics.org/Structural/1.0#DirectedConnectionRelation";\r
+ public const String Expression = "http://www.simantics.org/Structural/1.0#Expression";\r
+ public const String HasCardinalityRestriction = "http://www.simantics.org/Structural/1.0#HasCardinalityRestriction";\r
+ public const String HasConnectionDirection = "http://www.simantics.org/Structural/1.0#HasConnectionDirection";\r
+ public const String HasConnectionType = "http://www.simantics.org/Structural/1.0#HasConnectionType";\r
+ public const String HasLowerBound = "http://www.simantics.org/Structural/1.0#HasLowerBound";\r
+ public const String HasParameter = "http://www.simantics.org/Structural/1.0#HasParameter";\r
+ public const String HasUpperBound = "http://www.simantics.org/Structural/1.0#HasUpperBound";\r
+ public const String HasValue = "http://www.simantics.org/Structural/1.0#HasValue";\r
+ public const String HasVariable = "http://www.simantics.org/Structural/1.0#HasVariable";\r
+ public const String InputDirection = "http://www.simantics.org/Structural/1.0#InputDirection";\r
+ public const String IsBoundBy = "http://www.simantics.org/Structural/1.0#IsBoundBy";\r
+ public const String IsConnected = "http://www.simantics.org/Structural/1.0#IsConnected";\r
+ public const String IsConnectedFrom = "http://www.simantics.org/Structural/1.0#IsConnectedFrom";\r
+ public const String IsConnectedTo = "http://www.simantics.org/Structural/1.0#IsConnectedTo";\r
+ public const String IsDefinedBy = "http://www.simantics.org/Structural/1.0#IsDefinedBy";\r
+ public const String IsParameterOf = "http://www.simantics.org/Structural/1.0#IsParameterOf";\r
+ public const String LiteralVariable = "http://www.simantics.org/Structural/1.0#LiteralVariable";\r
+ public const String OrderedComposite = "http://www.simantics.org/Structural/1.0#OrderedComposite";\r
+ public const String OutputDirection = "http://www.simantics.org/Structural/1.0#OutputDirection";\r
+ public const String StructuralConsistsOf = "http://www.simantics.org/Structural/1.0#StructuralConsistsOf";\r
+ public const String StructuralPartOf = "http://www.simantics.org/Structural/1.0#StructuralPartOf";\r
+ public const String SupportsConnectionType = "http://www.simantics.org/Structural/1.0#SupportsConnectionType";\r
+ public const String SupportsDirection = "http://www.simantics.org/Structural/1.0#SupportsDirection";\r
+ public const String Value = "http://www.simantics.org/Structural/1.0#Value";\r
+ public const String ValueRelation = "http://www.simantics.org/Structural/1.0#ValueRelation";\r
+ public const String Variable = "http://www.simantics.org/Structural/1.0#Variable";\r
+ public const String VariableOf = "http://www.simantics.org/Structural/1.0#VariableOf";\r
+ public const String VariableRelation = "http://www.simantics.org/Structural/1.0#VariableRelation";\r
+ }\r
+ \r
+ public StructuralResource2(Graph graph) {\r
+ try {\r
+ Binds = graph.getResourceByURI(URIs.Binds);\r
+ CardinalityRestriction = graph.getResourceByURI(URIs.CardinalityRestriction);\r
+ Component = graph.getResourceByURI(URIs.Component);\r
+ ComponentType = graph.getResourceByURI(URIs.ComponentType);\r
+ Composite = graph.getResourceByURI(URIs.Composite);\r
+ Connection = graph.getResourceByURI(URIs.Connection);\r
+ ConnectionDirection = graph.getResourceByURI(URIs.ConnectionDirection);\r
+ ConnectionRelation = graph.getResourceByURI(URIs.ConnectionRelation);\r
+ ConnectionType = graph.getResourceByURI(URIs.ConnectionType);\r
+ ConnectionVariable = graph.getResourceByURI(URIs.ConnectionVariable);\r
+ Defines = graph.getResourceByURI(URIs.Defines);\r
+ DirectedConnectionRelation = graph.getResourceByURI(URIs.DirectedConnectionRelation);\r
+ Expression = graph.getResourceByURI(URIs.Expression);\r
+ HasCardinalityRestriction = graph.getResourceByURI(URIs.HasCardinalityRestriction);\r
+ HasConnectionDirection = graph.getResourceByURI(URIs.HasConnectionDirection);\r
+ HasConnectionType = graph.getResourceByURI(URIs.HasConnectionType);\r
+ HasLowerBound = graph.getResourceByURI(URIs.HasLowerBound);\r
+ HasParameter = graph.getResourceByURI(URIs.HasParameter);\r
+ HasUpperBound = graph.getResourceByURI(URIs.HasUpperBound);\r
+ HasValue = graph.getResourceByURI(URIs.HasValue);\r
+ HasVariable = graph.getResourceByURI(URIs.HasVariable);\r
+ InputDirection = graph.getResourceByURI(URIs.InputDirection);\r
+ IsBoundBy = graph.getResourceByURI(URIs.IsBoundBy);\r
+ IsConnected = graph.getResourceByURI(URIs.IsConnected);\r
+ IsConnectedFrom = graph.getResourceByURI(URIs.IsConnectedFrom);\r
+ IsConnectedTo = graph.getResourceByURI(URIs.IsConnectedTo);\r
+ IsDefinedBy = graph.getResourceByURI(URIs.IsDefinedBy);\r
+ IsParameterOf = graph.getResourceByURI(URIs.IsParameterOf);\r
+ LiteralVariable = graph.getResourceByURI(URIs.LiteralVariable);\r
+ OrderedComposite = graph.getResourceByURI(URIs.OrderedComposite);\r
+ OutputDirection = graph.getResourceByURI(URIs.OutputDirection);\r
+ StructuralConsistsOf = graph.getResourceByURI(URIs.StructuralConsistsOf);\r
+ StructuralPartOf = graph.getResourceByURI(URIs.StructuralPartOf);\r
+ SupportsConnectionType = graph.getResourceByURI(URIs.SupportsConnectionType);\r
+ SupportsDirection = graph.getResourceByURI(URIs.SupportsDirection);\r
+ Value = graph.getResourceByURI(URIs.Value);\r
+ ValueRelation = graph.getResourceByURI(URIs.ValueRelation);\r
+ Variable = graph.getResourceByURI(URIs.Variable);\r
+ VariableOf = graph.getResourceByURI(URIs.VariableOf);\r
+ VariableRelation = graph.getResourceByURI(URIs.VariableRelation);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static StructuralResource2 getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ StructuralResource2 ret = session.getService<StructuralResource2>(typeof(StructuralResource2));\r
+ if(ret == null) {\r
+ ret = new StructuralResource2(graph);\r
+ session.registerService(typeof(StructuralResource2), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.sysdyn {\r
+\r
+\r
+public class SysdynResource {\r
+ \r
+ public readonly Resource Auxiliary;\r
+ public readonly Resource Cloud;\r
+ public readonly Resource Configuration;\r
+ public readonly Resource Dependency;\r
+ public readonly Resource Flow;\r
+ public readonly Resource HasAngle;\r
+ public readonly Resource HasHead;\r
+ public readonly Resource HasTail;\r
+ public readonly Resource HasX;\r
+ public readonly Resource HasY;\r
+ public readonly Resource IndependentVariable;\r
+ public readonly Resource IsHeadOf;\r
+ public readonly Resource IsTailOf;\r
+ public readonly Resource Stock;\r
+ public readonly Resource TestConfiguration;\r
+ public readonly Resource Valve;\r
+ public readonly Resource Variable;\r
+ \r
+ public static class URIs {\r
+ public const String Auxiliary = "http://www.simantics.org/Sysdyn#Auxiliary";\r
+ public const String Cloud = "http://www.simantics.org/Sysdyn#Cloud";\r
+ public const String Configuration = "http://www.simantics.org/Sysdyn#Configuration";\r
+ public const String Dependency = "http://www.simantics.org/Sysdyn#Dependency";\r
+ public const String Flow = "http://www.simantics.org/Sysdyn#Flow";\r
+ public const String HasAngle = "http://www.simantics.org/Sysdyn#HasAngle";\r
+ public const String HasHead = "http://www.simantics.org/Sysdyn#HasHead";\r
+ public const String HasTail = "http://www.simantics.org/Sysdyn#HasTail";\r
+ public const String HasX = "http://www.simantics.org/Sysdyn#HasX";\r
+ public const String HasY = "http://www.simantics.org/Sysdyn#HasY";\r
+ public const String IndependentVariable = "http://www.simantics.org/Sysdyn#IndependentVariable";\r
+ public const String IsHeadOf = "http://www.simantics.org/Sysdyn#IsHeadOf";\r
+ public const String IsTailOf = "http://www.simantics.org/Sysdyn#IsTailOf";\r
+ public const String Stock = "http://www.simantics.org/Sysdyn#Stock";\r
+ public const String TestConfiguration = "http://www.simantics.org/Sysdyn#TestConfiguration";\r
+ public const String Valve = "http://www.simantics.org/Sysdyn#Valve";\r
+ public const String Variable = "http://www.simantics.org/Sysdyn#Variable";\r
+ }\r
+ \r
+ public SysdynResource(Graph graph) {\r
+ try {\r
+ Auxiliary = graph.getResourceByURI(URIs.Auxiliary);\r
+ Cloud = graph.getResourceByURI(URIs.Cloud);\r
+ Configuration = graph.getResourceByURI(URIs.Configuration);\r
+ Dependency = graph.getResourceByURI(URIs.Dependency);\r
+ Flow = graph.getResourceByURI(URIs.Flow);\r
+ HasAngle = graph.getResourceByURI(URIs.HasAngle);\r
+ HasHead = graph.getResourceByURI(URIs.HasHead);\r
+ HasTail = graph.getResourceByURI(URIs.HasTail);\r
+ HasX = graph.getResourceByURI(URIs.HasX);\r
+ HasY = graph.getResourceByURI(URIs.HasY);\r
+ IndependentVariable = graph.getResourceByURI(URIs.IndependentVariable);\r
+ IsHeadOf = graph.getResourceByURI(URIs.IsHeadOf);\r
+ IsTailOf = graph.getResourceByURI(URIs.IsTailOf);\r
+ Stock = graph.getResourceByURI(URIs.Stock);\r
+ TestConfiguration = graph.getResourceByURI(URIs.TestConfiguration);\r
+ Valve = graph.getResourceByURI(URIs.Valve);\r
+ Variable = graph.getResourceByURI(URIs.Variable);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static SysdynResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ SysdynResource ret = session.getService<SysdynResource>(typeof(SysdynResource));\r
+ if(ret == null) {\r
+ ret = new SysdynResource(graph);\r
+ session.registerService(typeof(SysdynResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ * VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+using System;\r
+\r
+using org.simantics.db.exceptions;\r
+\r
+namespace org.simantics.webmon.stubs {\r
+\r
+\r
+public class WebmonResource {\r
+ \r
+ public readonly Resource AdaptiveGrid;\r
+ public readonly Resource Chart;\r
+ public readonly Resource ChartGroup;\r
+ public readonly Resource Color;\r
+ public readonly Resource ConstantValue;\r
+ public readonly Resource Curve2DPlot;\r
+ public readonly Resource Curve2DPlotConfiguration;\r
+ public readonly Resource Curve2DPoint;\r
+ public readonly Resource Curve2DView;\r
+ public readonly Resource Curve2DViewConfiguration;\r
+ public readonly Resource DataItem;\r
+ public readonly Resource DataSource;\r
+ public readonly Resource DataSources;\r
+ public readonly Resource DisabledGrid;\r
+ public readonly Resource GridMode;\r
+ public readonly Resource HasAmplitude;\r
+ public readonly Resource HasBlue;\r
+ public readonly Resource HasColor;\r
+ public readonly Resource HasColorValue;\r
+ public readonly Resource HasContext;\r
+ public readonly Resource HasCurrentTime;\r
+ public readonly Resource HasDefaultViewConfiguration;\r
+ public readonly Resource HasDoubleRange;\r
+ public readonly Resource HasEndTime;\r
+ public readonly Resource HasFrequency;\r
+ public readonly Resource HasGreen;\r
+ public readonly Resource HasGridMode;\r
+ public readonly Resource HasInterval;\r
+ public readonly Resource HasLineMode;\r
+ public readonly Resource HasLineWidth;\r
+ public readonly Resource HasPhase;\r
+ public readonly Resource HasPlot;\r
+ public readonly Resource HasPlotConfiguration;\r
+ public readonly Resource HasPoint;\r
+ public readonly Resource HasRamp;\r
+ public readonly Resource HasRed;\r
+ public readonly Resource HasScaleMode;\r
+ public readonly Resource HasSessionReference;\r
+ public readonly Resource HasSin;\r
+ public readonly Resource HasSpacing;\r
+ public readonly Resource HasStartTime;\r
+ public readonly Resource HasTimePresentation;\r
+ public readonly Resource HasTimeSegment;\r
+ public readonly Resource HasValue;\r
+ public readonly Resource HasVariableReference;\r
+ public readonly Resource HasViewConfiguration;\r
+ public readonly Resource HasVisualConfiguration;\r
+ public readonly Resource HasVisualRange;\r
+ public readonly Resource HasXAxisScale;\r
+ public readonly Resource HasXAxisScalePercentage;\r
+ public readonly Resource HasXLines;\r
+ public readonly Resource HasXValue;\r
+ public readonly Resource HasYAxisMode;\r
+ public readonly Resource HasYAxisScale;\r
+ public readonly Resource HasYAxisScalePercentage;\r
+ public readonly Resource HasYLines;\r
+ public readonly Resource HasYValue;\r
+ public readonly Resource HasZAxisScale;\r
+ public readonly Resource HasZAxisScalePercentage;\r
+ public readonly Resource HasZValue;\r
+ public readonly Resource IsAutoScale;\r
+ public readonly Resource IsEnabled;\r
+ public readonly Resource IsPerPlotScaling;\r
+ public readonly Resource IsStepwise;\r
+ public readonly Resource LineMode;\r
+ public readonly Resource LineMode_LinearInterpolation;\r
+ public readonly Resource LineMode_StepWise;\r
+ public readonly Resource ManualGrid;\r
+ public readonly Resource PartOfViewConfiguration;\r
+ public readonly Resource Plot;\r
+ public readonly Resource Plot2D;\r
+ public readonly Resource Plot3D;\r
+ public readonly Resource PlotConfiguration;\r
+ public readonly Resource Point;\r
+ public readonly Resource Point2D;\r
+ public readonly Resource Point3D;\r
+ public readonly Resource RampValue;\r
+ public readonly Resource ScaleMode;\r
+ public readonly Resource ScaleMode_FitMinMax;\r
+ public readonly Resource ScaleMode_FitTimeRange;\r
+ public readonly Resource SinValue;\r
+ public readonly Resource Surface3DPlot;\r
+ public readonly Resource Surface3DPlotConfiguration;\r
+ public readonly Resource Surface3DPoint;\r
+ public readonly Resource Surface3DView;\r
+ public readonly Resource Surface3DViewConfiguration;\r
+ public readonly Resource Surface4DPlot;\r
+ public readonly Resource Surface4DPlotConfiguration;\r
+ public readonly Resource Surface4DPoint;\r
+ public readonly Resource Surface4DView;\r
+ public readonly Resource Surface4DViewConfiguration;\r
+ public readonly Resource TestDataSource;\r
+ public readonly Resource TestDataValue;\r
+ public readonly Resource TimePresentation;\r
+ public readonly Resource TimePresentation_Absolute;\r
+ public readonly Resource TimePresentation_Relative;\r
+ public readonly Resource TimeRangeConfiguration;\r
+ public readonly Resource TimeRangeView;\r
+ public readonly Resource TimeSegment;\r
+ public readonly Resource TimeSeriesChart;\r
+ public readonly Resource TimeSliceConfiguration;\r
+ public readonly Resource TimeSliceView;\r
+ public readonly Resource TimeValue;\r
+ public readonly Resource Trend2DPlot;\r
+ public readonly Resource Trend2DPlotConfiguration;\r
+ public readonly Resource Trend2DPoint;\r
+ public readonly Resource Trend2DView;\r
+ public readonly Resource Trend2DViewConfiguration;\r
+ public readonly Resource Trend3DPlot;\r
+ public readonly Resource Trend3DPlotConfiguration;\r
+ public readonly Resource Trend3DPoint;\r
+ public readonly Resource Trend3DView;\r
+ public readonly Resource Trend3DViewConfiguration;\r
+ public readonly Resource Value;\r
+ public readonly Resource VariableReference;\r
+ public readonly Resource View;\r
+ public readonly Resource View2D;\r
+ public readonly Resource View3D;\r
+ public readonly Resource ViewConfiguration;\r
+ public readonly Resource VisualConfiguration;\r
+ public readonly Resource Visualizations;\r
+ public readonly Resource WebmonFeature;\r
+ public readonly Resource WebmonProject;\r
+ public readonly Resource Workspace;\r
+ public readonly Resource YAxisMode;\r
+ public readonly Resource YAxisMode_PlotsHaveIndividualYAxis;\r
+ public readonly Resource YAxisMode_PlotsShareYAxis;\r
+ \r
+ public static class URIs {\r
+ public const String AdaptiveGrid = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#AdaptiveGrid";\r
+ public const String Chart = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Chart";\r
+ public const String ChartGroup = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#ChartGroup";\r
+ public const String Color = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Color";\r
+ public const String ConstantValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#ConstantValue";\r
+ public const String Curve2DPlot = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Curve2DPlot";\r
+ public const String Curve2DPlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Curve2DPlotConfiguration";\r
+ public const String Curve2DPoint = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Curve2DPoint";\r
+ public const String Curve2DView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Curve2DView";\r
+ public const String Curve2DViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Curve2DViewConfiguration";\r
+ public const String DataItem = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#DataItem";\r
+ public const String DataSource = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#DataSource";\r
+ public const String DataSources = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#DataSources";\r
+ public const String DisabledGrid = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#DisabledGrid";\r
+ public const String GridMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#GridMode";\r
+ public const String HasAmplitude = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasAmplitude";\r
+ public const String HasBlue = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasBlue";\r
+ public const String HasColor = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasColor";\r
+ public const String HasColorValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasColorValue";\r
+ public const String HasContext = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasContext";\r
+ public const String HasCurrentTime = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasCurrentTime";\r
+ public const String HasDefaultViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasDefaultViewConfiguration";\r
+ public const String HasDoubleRange = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasDoubleRange";\r
+ public const String HasEndTime = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasEndTime";\r
+ public const String HasFrequency = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasFrequency";\r
+ public const String HasGreen = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasGreen";\r
+ public const String HasGridMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasGridMode";\r
+ public const String HasInterval = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasInterval";\r
+ public const String HasLineMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasLineMode";\r
+ public const String HasLineWidth = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasLineWidth";\r
+ public const String HasPhase = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasPhase";\r
+ public const String HasPlot = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasPlot";\r
+ public const String HasPlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasPlotConfiguration";\r
+ public const String HasPoint = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasPoint";\r
+ public const String HasRamp = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasRamp";\r
+ public const String HasRed = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasRed";\r
+ public const String HasScaleMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasScaleMode";\r
+ public const String HasSessionReference = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasSessionReference";\r
+ public const String HasSin = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasSin";\r
+ public const String HasSpacing = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasSpacing";\r
+ public const String HasStartTime = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasStartTime";\r
+ public const String HasTimePresentation = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasTimePresentation";\r
+ public const String HasTimeSegment = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasTimeSegment";\r
+ public const String HasValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasValue";\r
+ public const String HasVariableReference = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasVariableReference";\r
+ public const String HasViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasViewConfiguration";\r
+ public const String HasVisualConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasVisualConfiguration";\r
+ public const String HasVisualRange = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasVisualRange";\r
+ public const String HasXAxisScale = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasXAxisScale";\r
+ public const String HasXAxisScalePercentage = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasXAxisScalePercentage";\r
+ public const String HasXLines = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasXLines";\r
+ public const String HasXValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasXValue";\r
+ public const String HasYAxisMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasYAxisMode";\r
+ public const String HasYAxisScale = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasYAxisScale";\r
+ public const String HasYAxisScalePercentage = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasYAxisScalePercentage";\r
+ public const String HasYLines = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasYLines";\r
+ public const String HasYValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasYValue";\r
+ public const String HasZAxisScale = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasZAxisScale";\r
+ public const String HasZAxisScalePercentage = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasZAxisScalePercentage";\r
+ public const String HasZValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#HasZValue";\r
+ public const String IsAutoScale = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#IsAutoScale";\r
+ public const String IsEnabled = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#IsEnabled";\r
+ public const String IsPerPlotScaling = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#IsPerPlotScaling";\r
+ public const String IsStepwise = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#IsStepwise";\r
+ public const String LineMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#LineMode";\r
+ public const String LineMode_LinearInterpolation = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/LineMode#LinearInterpolation";\r
+ public const String LineMode_StepWise = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/LineMode#StepWise";\r
+ public const String ManualGrid = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#ManualGrid";\r
+ public const String PartOfViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Relations#PartOfViewConfiguration";\r
+ public const String Plot = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Plot";\r
+ public const String Plot2D = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Plot2D";\r
+ public const String Plot3D = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Plot3D";\r
+ public const String PlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#PlotConfiguration";\r
+ public const String Point = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Point";\r
+ public const String Point2D = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Point2D";\r
+ public const String Point3D = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Point3D";\r
+ public const String RampValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#RampValue";\r
+ public const String ScaleMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#ScaleMode";\r
+ public const String ScaleMode_FitMinMax = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/ScaleMode#FitMinMax";\r
+ public const String ScaleMode_FitTimeRange = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/ScaleMode#FitTimeRange";\r
+ public const String SinValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#SinValue";\r
+ public const String Surface3DPlot = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface3DPlot";\r
+ public const String Surface3DPlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface3DPlotConfiguration";\r
+ public const String Surface3DPoint = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface3DPoint";\r
+ public const String Surface3DView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface3DView";\r
+ public const String Surface3DViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface3DViewConfiguration";\r
+ public const String Surface4DPlot = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface4DPlot";\r
+ public const String Surface4DPlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface4DPlotConfiguration";\r
+ public const String Surface4DPoint = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface4DPoint";\r
+ public const String Surface4DView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface4DView";\r
+ public const String Surface4DViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Surface4DViewConfiguration";\r
+ public const String TestDataSource = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TestDataSource";\r
+ public const String TestDataValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TestDataValue";\r
+ public const String TimePresentation = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimePresentation";\r
+ public const String TimePresentation_Absolute = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/TimePresentation#Absolute";\r
+ public const String TimePresentation_Relative = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/TimePresentation#Relative";\r
+ public const String TimeRangeConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeRangeConfiguration";\r
+ public const String TimeRangeView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeRangeView";\r
+ public const String TimeSegment = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeSegment";\r
+ public const String TimeSeriesChart = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeSeriesChart";\r
+ public const String TimeSliceConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeSliceConfiguration";\r
+ public const String TimeSliceView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeSliceView";\r
+ public const String TimeValue = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#TimeValue";\r
+ public const String Trend2DPlot = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend2DPlot";\r
+ public const String Trend2DPlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend2DPlotConfiguration";\r
+ public const String Trend2DPoint = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend2DPoint";\r
+ public const String Trend2DView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend2DView";\r
+ public const String Trend2DViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend2DViewConfiguration";\r
+ public const String Trend3DPlot = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend3DPlot";\r
+ public const String Trend3DPlotConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend3DPlotConfiguration";\r
+ public const String Trend3DPoint = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend3DPoint";\r
+ public const String Trend3DView = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend3DView";\r
+ public const String Trend3DViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Trend3DViewConfiguration";\r
+ public const String Value = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Value";\r
+ public const String VariableReference = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#VariableReference";\r
+ public const String View = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#View";\r
+ public const String View2D = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#View2D";\r
+ public const String View3D = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#View3D";\r
+ public const String ViewConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#ViewConfiguration";\r
+ public const String VisualConfiguration = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#VisualConfiguration";\r
+ public const String Visualizations = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Visualizations";\r
+ public const String WebmonFeature = "http://www.vtt.fi/Simantics/Webmon/1.0#WebmonFeature";\r
+ public const String WebmonProject = "http://www.vtt.fi/Simantics/Webmon/1.0#WebmonProject";\r
+ public const String Workspace = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#Workspace";\r
+ public const String YAxisMode = "http://www.vtt.fi/Simantics/Webmon/1.0/Types#YAxisMode";\r
+ public const String YAxisMode_PlotsHaveIndividualYAxis = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/YAxisMode#PlotsHaveIndividualYAxis";\r
+ public const String YAxisMode_PlotsShareYAxis = "http://www.vtt.fi/Simantics/Webmon/1.0/Types/YAxisMode#PlotsShareYAxis";\r
+ }\r
+ \r
+ public WebmonResource(Graph graph) {\r
+ try {\r
+ AdaptiveGrid = graph.getResourceByURI(URIs.AdaptiveGrid);\r
+ Chart = graph.getResourceByURI(URIs.Chart);\r
+ ChartGroup = graph.getResourceByURI(URIs.ChartGroup);\r
+ Color = graph.getResourceByURI(URIs.Color);\r
+ ConstantValue = graph.getResourceByURI(URIs.ConstantValue);\r
+ Curve2DPlot = graph.getResourceByURI(URIs.Curve2DPlot);\r
+ Curve2DPlotConfiguration = graph.getResourceByURI(URIs.Curve2DPlotConfiguration);\r
+ Curve2DPoint = graph.getResourceByURI(URIs.Curve2DPoint);\r
+ Curve2DView = graph.getResourceByURI(URIs.Curve2DView);\r
+ Curve2DViewConfiguration = graph.getResourceByURI(URIs.Curve2DViewConfiguration);\r
+ DataItem = graph.getResourceByURI(URIs.DataItem);\r
+ DataSource = graph.getResourceByURI(URIs.DataSource);\r
+ DataSources = graph.getResourceByURI(URIs.DataSources);\r
+ DisabledGrid = graph.getResourceByURI(URIs.DisabledGrid);\r
+ GridMode = graph.getResourceByURI(URIs.GridMode);\r
+ HasAmplitude = graph.getResourceByURI(URIs.HasAmplitude);\r
+ HasBlue = graph.getResourceByURI(URIs.HasBlue);\r
+ HasColor = graph.getResourceByURI(URIs.HasColor);\r
+ HasColorValue = graph.getResourceByURI(URIs.HasColorValue);\r
+ HasContext = graph.getResourceByURI(URIs.HasContext);\r
+ HasCurrentTime = graph.getResourceByURI(URIs.HasCurrentTime);\r
+ HasDefaultViewConfiguration = graph.getResourceByURI(URIs.HasDefaultViewConfiguration);\r
+ HasDoubleRange = graph.getResourceByURI(URIs.HasDoubleRange);\r
+ HasEndTime = graph.getResourceByURI(URIs.HasEndTime);\r
+ HasFrequency = graph.getResourceByURI(URIs.HasFrequency);\r
+ HasGreen = graph.getResourceByURI(URIs.HasGreen);\r
+ HasGridMode = graph.getResourceByURI(URIs.HasGridMode);\r
+ HasInterval = graph.getResourceByURI(URIs.HasInterval);\r
+ HasLineMode = graph.getResourceByURI(URIs.HasLineMode);\r
+ HasLineWidth = graph.getResourceByURI(URIs.HasLineWidth);\r
+ HasPhase = graph.getResourceByURI(URIs.HasPhase);\r
+ HasPlot = graph.getResourceByURI(URIs.HasPlot);\r
+ HasPlotConfiguration = graph.getResourceByURI(URIs.HasPlotConfiguration);\r
+ HasPoint = graph.getResourceByURI(URIs.HasPoint);\r
+ HasRamp = graph.getResourceByURI(URIs.HasRamp);\r
+ HasRed = graph.getResourceByURI(URIs.HasRed);\r
+ HasScaleMode = graph.getResourceByURI(URIs.HasScaleMode);\r
+ HasSessionReference = graph.getResourceByURI(URIs.HasSessionReference);\r
+ HasSin = graph.getResourceByURI(URIs.HasSin);\r
+ HasSpacing = graph.getResourceByURI(URIs.HasSpacing);\r
+ HasStartTime = graph.getResourceByURI(URIs.HasStartTime);\r
+ HasTimePresentation = graph.getResourceByURI(URIs.HasTimePresentation);\r
+ HasTimeSegment = graph.getResourceByURI(URIs.HasTimeSegment);\r
+ HasValue = graph.getResourceByURI(URIs.HasValue);\r
+ HasVariableReference = graph.getResourceByURI(URIs.HasVariableReference);\r
+ HasViewConfiguration = graph.getResourceByURI(URIs.HasViewConfiguration);\r
+ HasVisualConfiguration = graph.getResourceByURI(URIs.HasVisualConfiguration);\r
+ HasVisualRange = graph.getResourceByURI(URIs.HasVisualRange);\r
+ HasXAxisScale = graph.getResourceByURI(URIs.HasXAxisScale);\r
+ HasXAxisScalePercentage = graph.getResourceByURI(URIs.HasXAxisScalePercentage);\r
+ HasXLines = graph.getResourceByURI(URIs.HasXLines);\r
+ HasXValue = graph.getResourceByURI(URIs.HasXValue);\r
+ HasYAxisMode = graph.getResourceByURI(URIs.HasYAxisMode);\r
+ HasYAxisScale = graph.getResourceByURI(URIs.HasYAxisScale);\r
+ HasYAxisScalePercentage = graph.getResourceByURI(URIs.HasYAxisScalePercentage);\r
+ HasYLines = graph.getResourceByURI(URIs.HasYLines);\r
+ HasYValue = graph.getResourceByURI(URIs.HasYValue);\r
+ HasZAxisScale = graph.getResourceByURI(URIs.HasZAxisScale);\r
+ HasZAxisScalePercentage = graph.getResourceByURI(URIs.HasZAxisScalePercentage);\r
+ HasZValue = graph.getResourceByURI(URIs.HasZValue);\r
+ IsAutoScale = graph.getResourceByURI(URIs.IsAutoScale);\r
+ IsEnabled = graph.getResourceByURI(URIs.IsEnabled);\r
+ IsPerPlotScaling = graph.getResourceByURI(URIs.IsPerPlotScaling);\r
+ IsStepwise = graph.getResourceByURI(URIs.IsStepwise);\r
+ LineMode = graph.getResourceByURI(URIs.LineMode);\r
+ LineMode_LinearInterpolation = graph.getResourceByURI(URIs.LineMode_LinearInterpolation);\r
+ LineMode_StepWise = graph.getResourceByURI(URIs.LineMode_StepWise);\r
+ ManualGrid = graph.getResourceByURI(URIs.ManualGrid);\r
+ PartOfViewConfiguration = graph.getResourceByURI(URIs.PartOfViewConfiguration);\r
+ Plot = graph.getResourceByURI(URIs.Plot);\r
+ Plot2D = graph.getResourceByURI(URIs.Plot2D);\r
+ Plot3D = graph.getResourceByURI(URIs.Plot3D);\r
+ PlotConfiguration = graph.getResourceByURI(URIs.PlotConfiguration);\r
+ Point = graph.getResourceByURI(URIs.Point);\r
+ Point2D = graph.getResourceByURI(URIs.Point2D);\r
+ Point3D = graph.getResourceByURI(URIs.Point3D);\r
+ RampValue = graph.getResourceByURI(URIs.RampValue);\r
+ ScaleMode = graph.getResourceByURI(URIs.ScaleMode);\r
+ ScaleMode_FitMinMax = graph.getResourceByURI(URIs.ScaleMode_FitMinMax);\r
+ ScaleMode_FitTimeRange = graph.getResourceByURI(URIs.ScaleMode_FitTimeRange);\r
+ SinValue = graph.getResourceByURI(URIs.SinValue);\r
+ Surface3DPlot = graph.getResourceByURI(URIs.Surface3DPlot);\r
+ Surface3DPlotConfiguration = graph.getResourceByURI(URIs.Surface3DPlotConfiguration);\r
+ Surface3DPoint = graph.getResourceByURI(URIs.Surface3DPoint);\r
+ Surface3DView = graph.getResourceByURI(URIs.Surface3DView);\r
+ Surface3DViewConfiguration = graph.getResourceByURI(URIs.Surface3DViewConfiguration);\r
+ Surface4DPlot = graph.getResourceByURI(URIs.Surface4DPlot);\r
+ Surface4DPlotConfiguration = graph.getResourceByURI(URIs.Surface4DPlotConfiguration);\r
+ Surface4DPoint = graph.getResourceByURI(URIs.Surface4DPoint);\r
+ Surface4DView = graph.getResourceByURI(URIs.Surface4DView);\r
+ Surface4DViewConfiguration = graph.getResourceByURI(URIs.Surface4DViewConfiguration);\r
+ TestDataSource = graph.getResourceByURI(URIs.TestDataSource);\r
+ TestDataValue = graph.getResourceByURI(URIs.TestDataValue);\r
+ TimePresentation = graph.getResourceByURI(URIs.TimePresentation);\r
+ TimePresentation_Absolute = graph.getResourceByURI(URIs.TimePresentation_Absolute);\r
+ TimePresentation_Relative = graph.getResourceByURI(URIs.TimePresentation_Relative);\r
+ TimeRangeConfiguration = graph.getResourceByURI(URIs.TimeRangeConfiguration);\r
+ TimeRangeView = graph.getResourceByURI(URIs.TimeRangeView);\r
+ TimeSegment = graph.getResourceByURI(URIs.TimeSegment);\r
+ TimeSeriesChart = graph.getResourceByURI(URIs.TimeSeriesChart);\r
+ TimeSliceConfiguration = graph.getResourceByURI(URIs.TimeSliceConfiguration);\r
+ TimeSliceView = graph.getResourceByURI(URIs.TimeSliceView);\r
+ TimeValue = graph.getResourceByURI(URIs.TimeValue);\r
+ Trend2DPlot = graph.getResourceByURI(URIs.Trend2DPlot);\r
+ Trend2DPlotConfiguration = graph.getResourceByURI(URIs.Trend2DPlotConfiguration);\r
+ Trend2DPoint = graph.getResourceByURI(URIs.Trend2DPoint);\r
+ Trend2DView = graph.getResourceByURI(URIs.Trend2DView);\r
+ Trend2DViewConfiguration = graph.getResourceByURI(URIs.Trend2DViewConfiguration);\r
+ Trend3DPlot = graph.getResourceByURI(URIs.Trend3DPlot);\r
+ Trend3DPlotConfiguration = graph.getResourceByURI(URIs.Trend3DPlotConfiguration);\r
+ Trend3DPoint = graph.getResourceByURI(URIs.Trend3DPoint);\r
+ Trend3DView = graph.getResourceByURI(URIs.Trend3DView);\r
+ Trend3DViewConfiguration = graph.getResourceByURI(URIs.Trend3DViewConfiguration);\r
+ Value = graph.getResourceByURI(URIs.Value);\r
+ VariableReference = graph.getResourceByURI(URIs.VariableReference);\r
+ View = graph.getResourceByURI(URIs.View);\r
+ View2D = graph.getResourceByURI(URIs.View2D);\r
+ View3D = graph.getResourceByURI(URIs.View3D);\r
+ ViewConfiguration = graph.getResourceByURI(URIs.ViewConfiguration);\r
+ VisualConfiguration = graph.getResourceByURI(URIs.VisualConfiguration);\r
+ Visualizations = graph.getResourceByURI(URIs.Visualizations);\r
+ WebmonFeature = graph.getResourceByURI(URIs.WebmonFeature);\r
+ WebmonProject = graph.getResourceByURI(URIs.WebmonProject);\r
+ Workspace = graph.getResourceByURI(URIs.Workspace);\r
+ YAxisMode = graph.getResourceByURI(URIs.YAxisMode);\r
+ YAxisMode_PlotsHaveIndividualYAxis = graph.getResourceByURI(URIs.YAxisMode_PlotsHaveIndividualYAxis);\r
+ YAxisMode_PlotsShareYAxis = graph.getResourceByURI(URIs.YAxisMode_PlotsShareYAxis);\r
+ } catch(DatabaseException e) {\r
+ throw new Layer0MissingException(e);\r
+ }\r
+ }\r
+ \r
+ public static WebmonResource getInstance(Graph graph) {\r
+ Session session = graph.getSession();\r
+ WebmonResource ret = session.getService<WebmonResource>(typeof(WebmonResource));\r
+ if(ret == null) {\r
+ ret = new WebmonResource(graph);\r
+ session.registerService(typeof(WebmonResource), ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+}\r
+\r
--- /dev/null
+../foundation_ontologies\r
+../2d_ontologies\r
+../modeling_ontologies\r
--- /dev/null
+@echo off\r
+call "%~dp0..\og\generate2" "%~dp0" ..\foundation_ontologies\foundation.graph ..\sysdyn_ontologies\sysdyn.graph ..\modeling_ontologies\modeling.graph ..\modeling_ontologies\devs.graph ..\webmon_ontologies\webmon.graph
\ No newline at end of file
--- /dev/null
+copy=org/simantics/sysdyn=../org.simantics.sysdyn.ui/src\r
--- /dev/null
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOfNamespace 64 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNamespaceRoot 65 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InstanceOf 1 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Acquires 66 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SubrelationOf 2 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsAcquiredBy 67 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InverseOf 3 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#AcquiringRelation 68 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Inherits 4 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#Ontology 69 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName 5 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Asserts 70 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNamespace 6 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPredicate 71 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#PartOf 7 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasObject 72 0\r
+b http://www.vtt.fi/Simantics/RootLibrary#Users 73 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf 9 0\r
+b http://www.vtt.fi/Simantics/RootLibrary#Projects 74 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#FunctionalRelation 42 0\r
+b http://www.vtt.fi/Simantics/RootLibrary#Configuration 75 0\r
+b http://www.vtt.fi/Simantics/RootLibrary/Configuration#AgentServers 76 0\r
+b http://www.vtt.fi/Simantics/RootLibrary/Configuration#PublishedProjectFeatures 374 0\r
+b http://www.simantics.org/Ontology/Project/1.0#Project2 376 0\r
+b http://www.vtt.fi/Simantics#RootLibrary 56 1\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#Library 57 0\r
+b http://www.simantics.org/Ontology/Project/1.0#AdministrationFeature 410 0\r
+b http://www.vtt.fi/Simantics#DefaultUser 58 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasInstance 59 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SuperrelationOf 60 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPasswordHash 61 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#Namespace 62 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#NamespaceLibrary 63 0\r
--- /dev/null
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOfNamespace 64 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNamespaceRoot 65 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InstanceOf 1 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Acquires 66 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SubrelationOf 2 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#IsAcquiredBy 67 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#InverseOf 3 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#AcquiringRelation 68 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Inherits 4 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#Ontology 69 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasName 5 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#Asserts 70 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasNamespace 6 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPredicate 71 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#PartOf 7 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasObject 72 0\r
+b http://www.vtt.fi/Simantics/RootLibrary#Users 73 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#ConsistsOf 9 0\r
+b http://www.vtt.fi/Simantics/RootLibrary#Projects 74 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#FunctionalRelation 42 0\r
+b http://www.vtt.fi/Simantics/RootLibrary#Configuration 75 0\r
+b http://www.vtt.fi/Simantics/RootLibrary/Configuration#AgentServers 76 0\r
+b http://www.vtt.fi/Simantics/RootLibrary/Configuration#PublishedProjectFeatures 374 0\r
+b http://www.simantics.org/Ontology/Project/1.0#Project2 376 0\r
+b http://www.vtt.fi/Simantics#RootLibrary 56 1\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#Library 57 0\r
+b http://www.simantics.org/Ontology/Project/1.0#AdministrationFeature 410 0\r
+b http://www.vtt.fi/Simantics#DefaultUser 58 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasInstance 59 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#SuperrelationOf 60 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Relations#HasPasswordHash 61 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#Namespace 62 0\r
+b http://www.vtt.fi/Simantics/Layer0/1.0/Types#NamespaceLibrary 63 0\r
+r 2048 0 9 0 2082 0\r
+r 2048 0 9 0 2079 0\r
+r 2048 0 9 0 2075 0\r
+r 2048 0 9 0 2074 0\r
+r 2048 0 9 0 2073 0\r
+r 2048 0 9 0 2072 0\r
+r 2048 0 9 0 2071 0\r
+r 2048 0 9 0 2070 0\r
+r 2048 0 9 0 2069 0\r
+r 2048 0 9 0 2068 0\r
+r 2048 0 9 0 2067 0\r
+r 2048 0 9 0 2065 0\r
+r 2048 0 9 0 2064 0\r
+r 2048 0 9 0 2062 0\r
+r 2048 0 9 0 2060 0\r
+r 2048 0 9 0 2059 0\r
+r 2048 0 9 0 2056 0\r
+r 2048 0 97 0 2051 0\r
+r 2048 0 1 0 69 0\r
+r 2048 0 101 0 2053 0\r
+r 2048 0 93 0 2052 0\r
+r 2048 0 5 0 2049 0\r
+r 2048 0 6 0 2050 0\r
+r 2048 0 2919 0 2054 0\r
+r 2048 0 7 0 89 0\r
+r 2048 0 7 0 77 0\r
+r 0 0 136 0 29 0\r
+r 0 0 136 0 28 0\r
+r 0 0 136 0 2 0\r
+r 0 0 104 0 125 0\r
+r 0 0 137 0 29 0\r
+r 0 0 137 0 28 0\r
+r 0 0 129 0 506 0\r
+r 0 0 129 0 491 0\r
+r 0 0 129 0 144 0\r
+r 0 0 129 0 68 0\r
+r 0 0 129 0 42 0\r
+r 0 0 2906 0 170 0\r
+r 0 0 2907 0 815 0\r
+r 0 0 2907 0 487 0\r
+r 0 0 2907 0 137 0\r
+r 0 0 2907 0 136 0\r
+r 0 0 2907 0 127 0\r
+r 0 0 2907 0 66 0\r
+r 0 0 2907 0 38 0\r
+r 0 0 2907 0 3 0\r
+r 0 0 2907 0 2 0\r
+r 0 0 59 0 131 0\r
+r 0 0 59 0 8 0\r
+r 0 0 2908 0 66 0\r
+r 0 0 2908 0 3 0\r
+r 0 0 2908 0 2 0\r
+r 0 0 4 0 123 0\r
+r 0 0 5 0 2331 0\r
+r 0 0 78 0 124 0\r
+r 0 0 7 0 50 0\r
+r 2049 0 2904 0 2048 0\r
+r 2049 0 1 0 10 0 s Sysdyn-1.0\r
+r 1 0 128 0 1 0\r
+r 1 0 2 0 110 0\r
+r 1 0 139 0 25 0\r
+r 1 0 3 0 59 0\r
+r 1 0 28 0 52 0\r
+r 1 0 5 0 2317 0\r
+r 1 0 7 0 53 0\r
+r 2050 0 2905 0 2048 0\r
+r 2050 0 1 0 88 0 s http://www.simantics.org/Sysdyn\r
+r 2 0 128 0 2 0\r
+r 2 0 1 0 68 0\r
+r 2 0 66 0 115 0\r
+r 2 0 2 0 103 0\r
+r 2 0 139 0 0 0\r
+r 2 0 3 0 60 0\r
+r 2 0 28 0 0 0\r
+r 2 0 5 0 2339 0\r
+r 2 0 29 0 0 0\r
+r 2 0 7 0 53 0\r
+r 2051 0 1 0 99 0 s 1.0\r
+r 2051 0 2926 0 2048 0\r
+r 3 0 128 0 3 0\r
+r 3 0 1 0 42 0\r
+r 3 0 2 0 112 0\r
+r 3 0 2 0 103 0\r
+r 3 0 3 0 3 0\r
+r 3 0 28 0 0 0\r
+r 3 0 5 0 2316 0\r
+r 3 0 29 0 0 0\r
+r 3 0 7 0 53 0\r
+r 2052 0 1 0 10 0 s org.simantics.sysdyn.SysdynResource\r
+r 2052 0 2925 0 2048 0\r
+r 4 0 128 0 4 0\r
+r 4 0 1 0 68 0\r
+r 4 0 66 0 115 0\r
+r 4 0 2 0 103 0\r
+r 4 0 139 0 52 0\r
+r 4 0 3 0 129 0\r
+r 4 0 28 0 52 0\r
+r 4 0 5 0 2353 0\r
+r 4 0 29 0 52 0\r
+r 4 0 7 0 53 0\r
+r 2053 0 1 0 10 0 s sysdyn\r
+r 2053 0 2927 0 2048 0\r
+r 5 0 1 0 42 0\r
+r 5 0 2 0 94 0\r
+r 5 0 3 0 2904 0\r
+r 5 0 139 0 25 0\r
+r 5 0 28 0 10 0\r
+r 5 0 5 0 2270 0\r
+r 5 0 141 0 25 0\r
+r 5 0 126 0 191 0\r
+r 5 0 7 0 53 0\r
+r 5 0 2911 0 2066 0\r
+r 5 0 2911 0 1305 0\r
+r 5 0 2911 0 1299 0\r
+r 5 0 2911 0 276 0\r
+r 5 0 2911 0 272 0\r
+r 5 0 2911 0 250 0\r
+r 5 0 2911 0 162 0\r
+r 2054 0 65 0 2048 0\r
+r 2054 0 1 0 62 0\r
+r 2054 0 5 0 2103 0\r
+r 2054 0 6 0 2055 0\r
+r 2054 0 7 0 85 0\r
+r 6 0 1 0 42 0\r
+r 6 0 2 0 94 0\r
+r 6 0 3 0 2905 0\r
+r 6 0 28 0 88 0\r
+r 6 0 5 0 2369 0\r
+r 6 0 7 0 53 0\r
+r 6 0 2911 0 163 0\r
+r 6 0 2911 0 105 0\r
+r 2055 0 2905 0 2054 0\r
+r 2055 0 1 0 88 0 s http://www.simantics.org/Sysdyn\r
+r 7 0 2 0 112 0\r
+r 7 0 3 0 9 0\r
+r 7 0 60 0 3096 0\r
+r 7 0 60 0 3090 0\r
+r 7 0 60 0 3087 0\r
+r 7 0 60 0 1144 0\r
+r 7 0 60 0 481 0\r
+r 7 0 60 0 200 0\r
+r 7 0 5 0 2252 0\r
+r 7 0 7 0 53 0\r
+r 2056 0 59 0 2082 0\r
+r 2056 0 27 0 2057 0\r
+r 2056 0 4 0 482 0\r
+r 2056 0 5 0 2097 0\r
+r 2056 0 7 0 2048 0\r
+r 8 0 1 0 0 0\r
+r 8 0 3 0 8 0\r
+r 8 0 60 0 3078 0\r
+r 8 0 60 0 3077 0\r
+r 8 0 60 0 3027 0\r
+r 8 0 60 0 2928 0\r
+r 8 0 60 0 1057 0\r
+r 8 0 60 0 1056 0\r
+r 8 0 60 0 1048 0\r
+r 8 0 60 0 1047 0\r
+r 8 0 60 0 1046 0\r
+r 8 0 60 0 1045 0\r
+r 8 0 60 0 1044 0\r
+r 8 0 60 0 1043 0\r
+r 8 0 60 0 1042 0\r
+r 8 0 60 0 1041 0\r
+r 8 0 60 0 1040 0\r
+r 8 0 60 0 1039 0\r
+r 8 0 60 0 1038 0\r
+r 8 0 60 0 1037 0\r
+r 8 0 60 0 1036 0\r
+r 8 0 60 0 1035 0\r
+r 8 0 60 0 1034 0\r
+r 8 0 60 0 1033 0\r
+r 8 0 60 0 1032 0\r
+r 8 0 60 0 1031 0\r
+r 8 0 60 0 740 0\r
+r 8 0 60 0 115 0\r
+r 8 0 60 0 111 0\r
+r 8 0 60 0 110 0\r
+r 8 0 5 0 2404 0\r
+r 8 0 7 0 53 0\r
+r 2057 0 40 0 2058 0\r
+r 2057 0 1 0 37 0\r
+r 2057 0 2906 0 2056 0\r
+r 2057 0 38 0 9 0\r
+r 9 0 2 0 103 0\r
+r 9 0 3 0 7 0\r
+r 9 0 139 0 431 0\r
+r 9 0 139 0 427 0\r
+r 9 0 139 0 57 0\r
+r 9 0 60 0 1157 0\r
+r 9 0 60 0 1141 0\r
+r 9 0 60 0 1118 0\r
+r 9 0 60 0 1111 0\r
+r 9 0 60 0 480 0\r
+r 9 0 60 0 64 0\r
+r 9 0 5 0 2303 0\r
+r 9 0 141 0 431 0\r
+r 9 0 141 0 427 0\r
+r 9 0 141 0 57 0\r
+r 9 0 7 0 53 0\r
+r 9 0 2911 0 2057 0\r
+r 9 0 2911 0 1300 0\r
+r 9 0 2911 0 1297 0\r
+r 9 0 2911 0 1079 0\r
+r 9 0 2911 0 925 0\r
+r 9 0 2911 0 922 0\r
+r 9 0 2911 0 883 0\r
+r 9 0 2911 0 880 0\r
+r 9 0 2911 0 699 0\r
+r 9 0 2911 0 483 0\r
+r 9 0 2911 0 429 0\r
+r 9 0 2911 0 425 0\r
+r 9 0 2911 0 377 0\r
+r 9 0 2911 0 182 0\r
+r 9 0 2911 0 180 0\r
+r 9 0 2911 0 176 0\r
+r 9 0 2911 0 172 0\r
+r 9 0 2911 0 169 0\r
+r 9 0 2911 0 167 0\r
+r 2058 0 2913 0 2057 0\r
+r 2058 0 1 0 33 0\r
+r 2058 0 27 0 2060 0\r
+r 2058 0 27 0 2059 0\r
+r 10 0 129 0 735 0\r
+r 10 0 129 0 203 0\r
+r 10 0 129 0 201 0\r
+r 10 0 129 0 196 0\r
+r 10 0 129 0 99 0\r
+r 10 0 129 0 88 0\r
+r 10 0 2907 0 1167 0\r
+r 10 0 2907 0 1162 0\r
+r 10 0 2907 0 1161 0\r
+r 10 0 2907 0 1086 0\r
+r 10 0 2907 0 929 0\r
+r 10 0 2907 0 862 0\r
+r 10 0 2907 0 790 0\r
+r 10 0 2907 0 771 0\r
+r 10 0 2907 0 744 0\r
+r 10 0 2907 0 661 0\r
+r 10 0 2907 0 630 0\r
+r 10 0 2907 0 629 0\r
+r 10 0 2907 0 625 0\r
+r 10 0 2907 0 601 0\r
+r 10 0 2907 0 380 0\r
+r 10 0 2907 0 289 0\r
+r 10 0 2907 0 283 0\r
+r 10 0 2907 0 280 0\r
+r 10 0 2907 0 271 0\r
+r 10 0 2907 0 254 0\r
+r 10 0 2907 0 212 0\r
+r 10 0 2907 0 207 0\r
+r 10 0 2907 0 195 0\r
+r 10 0 2907 0 192 0\r
+r 10 0 2907 0 126 0\r
+r 10 0 2907 0 101 0\r
+r 10 0 2907 0 93 0\r
+r 10 0 2907 0 80 0\r
+r 10 0 2907 0 78 0\r
+r 10 0 2907 0 61 0\r
+r 10 0 2907 0 45 0\r
+r 10 0 2907 0 44 0\r
+r 10 0 2907 0 5 0\r
+r 10 0 59 0 2903 0\r
+r 10 0 59 0 2902 0\r
+r 10 0 59 0 2901 0\r
+r 10 0 59 0 2900 0\r
+r 10 0 59 0 2899 0\r
+r 10 0 59 0 2898 0\r
+r 10 0 59 0 2897 0\r
+r 10 0 59 0 2896 0\r
+r 10 0 59 0 2895 0\r
+r 10 0 59 0 2894 0\r
+r 10 0 59 0 2893 0\r
+r 10 0 59 0 2892 0\r
+r 10 0 59 0 2891 0\r
+r 10 0 59 0 2890 0\r
+r 10 0 59 0 2889 0\r
+r 10 0 59 0 2888 0\r
+r 10 0 59 0 2887 0\r
+r 10 0 59 0 2886 0\r
+r 10 0 59 0 2885 0\r
+r 10 0 59 0 2884 0\r
+r 10 0 59 0 2883 0\r
+r 10 0 59 0 2882 0\r
+r 10 0 59 0 2881 0\r
+r 10 0 59 0 2880 0\r
+r 10 0 59 0 2879 0\r
+r 10 0 59 0 2878 0\r
+r 10 0 59 0 2877 0\r
+r 10 0 59 0 2876 0\r
+r 10 0 59 0 2875 0\r
+r 10 0 59 0 2874 0\r
+r 10 0 59 0 2873 0\r
+r 10 0 59 0 2872 0\r
+r 10 0 59 0 2871 0\r
+r 10 0 59 0 2870 0\r
+r 10 0 59 0 2869 0\r
+r 10 0 59 0 2868 0\r
+r 10 0 59 0 2867 0\r
+r 10 0 59 0 2866 0\r
+r 10 0 59 0 2865 0\r
+r 10 0 59 0 2864 0\r
+r 10 0 59 0 2863 0\r
+r 10 0 59 0 2862 0\r
+r 10 0 59 0 2861 0\r
+r 10 0 59 0 2860 0\r
+r 10 0 59 0 2859 0\r
+r 10 0 59 0 2858 0\r
+r 10 0 59 0 2857 0\r
+r 10 0 59 0 2856 0\r
+r 10 0 59 0 2855 0\r
+r 10 0 59 0 2854 0\r
+r 10 0 59 0 2853 0\r
+r 10 0 59 0 2852 0\r
+r 10 0 59 0 2851 0\r
+r 10 0 59 0 2850 0\r
+r 10 0 59 0 2849 0\r
+r 10 0 59 0 2848 0\r
+r 10 0 59 0 2847 0\r
+r 10 0 59 0 2846 0\r
+r 10 0 59 0 2845 0\r
+r 10 0 59 0 2844 0\r
+r 10 0 59 0 2843 0\r
+r 10 0 59 0 2842 0\r
+r 10 0 59 0 2841 0\r
+r 10 0 59 0 2840 0\r
+r 10 0 59 0 2839 0\r
+r 10 0 59 0 2838 0\r
+r 10 0 59 0 2837 0\r
+r 10 0 59 0 2836 0\r
+r 10 0 59 0 2835 0\r
+r 10 0 59 0 2834 0\r
+r 10 0 59 0 2833 0\r
+r 10 0 59 0 2832 0\r
+r 10 0 59 0 2831 0\r
+r 10 0 59 0 2830 0\r
+r 10 0 59 0 2829 0\r
+r 10 0 59 0 2828 0\r
+r 10 0 59 0 2827 0\r
+r 10 0 59 0 2826 0\r
+r 10 0 59 0 2825 0\r
+r 10 0 59 0 2824 0\r
+r 10 0 59 0 2823 0\r
+r 10 0 59 0 2822 0\r
+r 10 0 59 0 2821 0\r
+r 10 0 59 0 2820 0\r
+r 10 0 59 0 2819 0\r
+r 10 0 59 0 2818 0\r
+r 10 0 59 0 2817 0\r
+r 10 0 59 0 2816 0\r
+r 10 0 59 0 2815 0\r
+r 10 0 59 0 2814 0\r
+r 10 0 59 0 2813 0\r
+r 10 0 59 0 2812 0\r
+r 10 0 59 0 2811 0\r
+r 10 0 59 0 2810 0\r
+r 10 0 59 0 2809 0\r
+r 10 0 59 0 2808 0\r
+r 10 0 59 0 2807 0\r
+r 10 0 59 0 2806 0\r
+r 10 0 59 0 2805 0\r
+r 10 0 59 0 2804 0\r
+r 10 0 59 0 2803 0\r
+r 10 0 59 0 2802 0\r
+r 10 0 59 0 2801 0\r
+r 10 0 59 0 2800 0\r
+r 10 0 59 0 2799 0\r
+r 10 0 59 0 2798 0\r
+r 10 0 59 0 2797 0\r
+r 10 0 59 0 2796 0\r
+r 10 0 59 0 2795 0\r
+r 10 0 59 0 2794 0\r
+r 10 0 59 0 2793 0\r
+r 10 0 59 0 2792 0\r
+r 10 0 59 0 2791 0\r
+r 10 0 59 0 2790 0\r
+r 10 0 59 0 2789 0\r
+r 10 0 59 0 2788 0\r
+r 10 0 59 0 2787 0\r
+r 10 0 59 0 2786 0\r
+r 10 0 59 0 2785 0\r
+r 10 0 59 0 2784 0\r
+r 10 0 59 0 2783 0\r
+r 10 0 59 0 2782 0\r
+r 10 0 59 0 2781 0\r
+r 10 0 59 0 2780 0\r
+r 10 0 59 0 2779 0\r
+r 10 0 59 0 2778 0\r
+r 10 0 59 0 2777 0\r
+r 10 0 59 0 2776 0\r
+r 10 0 59 0 2775 0\r
+r 10 0 59 0 2774 0\r
+r 10 0 59 0 2773 0\r
+r 10 0 59 0 2772 0\r
+r 10 0 59 0 2771 0\r
+r 10 0 59 0 2770 0\r
+r 10 0 59 0 2769 0\r
+r 10 0 59 0 2768 0\r
+r 10 0 59 0 2767 0\r
+r 10 0 59 0 2766 0\r
+r 10 0 59 0 2765 0\r
+r 10 0 59 0 2764 0\r
+r 10 0 59 0 2763 0\r
+r 10 0 59 0 2762 0\r
+r 10 0 59 0 2761 0\r
+r 10 0 59 0 2760 0\r
+r 10 0 59 0 2759 0\r
+r 10 0 59 0 2758 0\r
+r 10 0 59 0 2757 0\r
+r 10 0 59 0 2756 0\r
+r 10 0 59 0 2755 0\r
+r 10 0 59 0 2754 0\r
+r 10 0 59 0 2753 0\r
+r 10 0 59 0 2752 0\r
+r 10 0 59 0 2751 0\r
+r 10 0 59 0 2750 0\r
+r 10 0 59 0 2749 0\r
+r 10 0 59 0 2748 0\r
+r 10 0 59 0 2747 0\r
+r 10 0 59 0 2746 0\r
+r 10 0 59 0 2745 0\r
+r 10 0 59 0 2744 0\r
+r 10 0 59 0 2743 0\r
+r 10 0 59 0 2742 0\r
+r 10 0 59 0 2741 0\r
+r 10 0 59 0 2740 0\r
+r 10 0 59 0 2739 0\r
+r 10 0 59 0 2738 0\r
+r 10 0 59 0 2737 0\r
+r 10 0 59 0 2736 0\r
+r 10 0 59 0 2735 0\r
+r 10 0 59 0 2734 0\r
+r 10 0 59 0 2733 0\r
+r 10 0 59 0 2732 0\r
+r 10 0 59 0 2731 0\r
+r 10 0 59 0 2730 0\r
+r 10 0 59 0 2729 0\r
+r 10 0 59 0 2728 0\r
+r 10 0 59 0 2727 0\r
+r 10 0 59 0 2726 0\r
+r 10 0 59 0 2725 0\r
+r 10 0 59 0 2724 0\r
+r 10 0 59 0 2723 0\r
+r 10 0 59 0 2722 0\r
+r 10 0 59 0 2721 0\r
+r 10 0 59 0 2720 0\r
+r 10 0 59 0 2719 0\r
+r 10 0 59 0 2718 0\r
+r 10 0 59 0 2717 0\r
+r 10 0 59 0 2716 0\r
+r 10 0 59 0 2715 0\r
+r 10 0 59 0 2714 0\r
+r 10 0 59 0 2713 0\r
+r 10 0 59 0 2712 0\r
+r 10 0 59 0 2711 0\r
+r 10 0 59 0 2710 0\r
+r 10 0 59 0 2709 0\r
+r 10 0 59 0 2708 0\r
+r 10 0 59 0 2707 0\r
+r 10 0 59 0 2706 0\r
+r 10 0 59 0 2705 0\r
+r 10 0 59 0 2704 0\r
+r 10 0 59 0 2703 0\r
+r 10 0 59 0 2702 0\r
+r 10 0 59 0 2701 0\r
+r 10 0 59 0 2700 0\r
+r 10 0 59 0 2699 0\r
+r 10 0 59 0 2698 0\r
+r 10 0 59 0 2697 0\r
+r 10 0 59 0 2696 0\r
+r 10 0 59 0 2695 0\r
+r 10 0 59 0 2694 0\r
+r 10 0 59 0 2693 0\r
+r 10 0 59 0 2692 0\r
+r 10 0 59 0 2691 0\r
+r 10 0 59 0 2690 0\r
+r 10 0 59 0 2689 0\r
+r 10 0 59 0 2688 0\r
+r 10 0 59 0 2687 0\r
+r 10 0 59 0 2686 0\r
+r 10 0 59 0 2685 0\r
+r 10 0 59 0 2684 0\r
+r 10 0 59 0 2683 0\r
+r 10 0 59 0 2682 0\r
+r 10 0 59 0 2681 0\r
+r 10 0 59 0 2680 0\r
+r 10 0 59 0 2679 0\r
+r 10 0 59 0 2678 0\r
+r 10 0 59 0 2677 0\r
+r 10 0 59 0 2676 0\r
+r 10 0 59 0 2675 0\r
+r 10 0 59 0 2674 0\r
+r 10 0 59 0 2673 0\r
+r 10 0 59 0 2672 0\r
+r 10 0 59 0 2671 0\r
+r 10 0 59 0 2670 0\r
+r 10 0 59 0 2669 0\r
+r 10 0 59 0 2668 0\r
+r 10 0 59 0 2667 0\r
+r 10 0 59 0 2666 0\r
+r 10 0 59 0 2665 0\r
+r 10 0 59 0 2664 0\r
+r 10 0 59 0 2663 0\r
+r 10 0 59 0 2662 0\r
+r 10 0 59 0 2661 0\r
+r 10 0 59 0 2660 0\r
+r 10 0 59 0 2659 0\r
+r 10 0 59 0 2658 0\r
+r 10 0 59 0 2657 0\r
+r 10 0 59 0 2656 0\r
+r 10 0 59 0 2655 0\r
+r 10 0 59 0 2654 0\r
+r 10 0 59 0 2653 0\r
+r 10 0 59 0 2652 0\r
+r 10 0 59 0 2651 0\r
+r 10 0 59 0 2650 0\r
+r 10 0 59 0 2649 0\r
+r 10 0 59 0 2648 0\r
+r 10 0 59 0 2647 0\r
+r 10 0 59 0 2646 0\r
+r 10 0 59 0 2645 0\r
+r 10 0 59 0 2644 0\r
+r 10 0 59 0 2643 0\r
+r 10 0 59 0 2642 0\r
+r 10 0 59 0 2641 0\r
+r 10 0 59 0 2640 0\r
+r 10 0 59 0 2639 0\r
+r 10 0 59 0 2638 0\r
+r 10 0 59 0 2637 0\r
+r 10 0 59 0 2636 0\r
+r 10 0 59 0 2635 0\r
+r 10 0 59 0 2634 0\r
+r 10 0 59 0 2633 0\r
+r 10 0 59 0 2632 0\r
+r 10 0 59 0 2631 0\r
+r 10 0 59 0 2630 0\r
+r 10 0 59 0 2629 0\r
+r 10 0 59 0 2628 0\r
+r 10 0 59 0 2627 0\r
+r 10 0 59 0 2626 0\r
+r 10 0 59 0 2625 0\r
+r 10 0 59 0 2624 0\r
+r 10 0 59 0 2623 0\r
+r 10 0 59 0 2622 0\r
+r 10 0 59 0 2621 0\r
+r 10 0 59 0 2620 0\r
+r 10 0 59 0 2619 0\r
+r 10 0 59 0 2618 0\r
+r 10 0 59 0 2617 0\r
+r 10 0 59 0 2616 0\r
+r 10 0 59 0 2615 0\r
+r 10 0 59 0 2614 0\r
+r 10 0 59 0 2613 0\r
+r 10 0 59 0 2612 0\r
+r 10 0 59 0 2611 0\r
+r 10 0 59 0 2610 0\r
+r 10 0 59 0 2609 0\r
+r 10 0 59 0 2608 0\r
+r 10 0 59 0 2607 0\r
+r 10 0 59 0 2606 0\r
+r 10 0 59 0 2605 0\r
+r 10 0 59 0 2604 0\r
+r 10 0 59 0 2603 0\r
+r 10 0 59 0 2602 0\r
+r 10 0 59 0 2601 0\r
+r 10 0 59 0 2600 0\r
+r 10 0 59 0 2599 0\r
+r 10 0 59 0 2598 0\r
+r 10 0 59 0 2597 0\r
+r 10 0 59 0 2596 0\r
+r 10 0 59 0 2595 0\r
+r 10 0 59 0 2594 0\r
+r 10 0 59 0 2593 0\r
+r 10 0 59 0 2592 0\r
+r 10 0 59 0 2591 0\r
+r 10 0 59 0 2590 0\r
+r 10 0 59 0 2589 0\r
+r 10 0 59 0 2588 0\r
+r 10 0 59 0 2587 0\r
+r 10 0 59 0 2586 0\r
+r 10 0 59 0 2585 0\r
+r 10 0 59 0 2584 0\r
+r 10 0 59 0 2583 0\r
+r 10 0 59 0 2582 0\r
+r 10 0 59 0 2581 0\r
+r 10 0 59 0 2580 0\r
+r 10 0 59 0 2579 0\r
+r 10 0 59 0 2578 0\r
+r 10 0 59 0 2577 0\r
+r 10 0 59 0 2576 0\r
+r 10 0 59 0 2575 0\r
+r 10 0 59 0 2574 0\r
+r 10 0 59 0 2573 0\r
+r 10 0 59 0 2572 0\r
+r 10 0 59 0 2571 0\r
+r 10 0 59 0 2570 0\r
+r 10 0 59 0 2569 0\r
+r 10 0 59 0 2568 0\r
+r 10 0 59 0 2567 0\r
+r 10 0 59 0 2566 0\r
+r 10 0 59 0 2565 0\r
+r 10 0 59 0 2564 0\r
+r 10 0 59 0 2563 0\r
+r 10 0 59 0 2562 0\r
+r 10 0 59 0 2561 0\r
+r 10 0 59 0 2560 0\r
+r 10 0 59 0 2559 0\r
+r 10 0 59 0 2558 0\r
+r 10 0 59 0 2557 0\r
+r 10 0 59 0 2556 0\r
+r 10 0 59 0 2555 0\r
+r 10 0 59 0 2554 0\r
+r 10 0 59 0 2553 0\r
+r 10 0 59 0 2552 0\r
+r 10 0 59 0 2551 0\r
+r 10 0 59 0 2550 0\r
+r 10 0 59 0 2549 0\r
+r 10 0 59 0 2548 0\r
+r 10 0 59 0 2547 0\r
+r 10 0 59 0 2546 0\r
+r 10 0 59 0 2545 0\r
+r 10 0 59 0 2544 0\r
+r 10 0 59 0 2543 0\r
+r 10 0 59 0 2542 0\r
+r 10 0 59 0 2541 0\r
+r 10 0 59 0 2540 0\r
+r 10 0 59 0 2539 0\r
+r 10 0 59 0 2538 0\r
+r 10 0 59 0 2537 0\r
+r 10 0 59 0 2536 0\r
+r 10 0 59 0 2535 0\r
+r 10 0 59 0 2534 0\r
+r 10 0 59 0 2533 0\r
+r 10 0 59 0 2532 0\r
+r 10 0 59 0 2531 0\r
+r 10 0 59 0 2530 0\r
+r 10 0 59 0 2529 0\r
+r 10 0 59 0 2528 0\r
+r 10 0 59 0 2527 0\r
+r 10 0 59 0 2526 0\r
+r 10 0 59 0 2525 0\r
+r 10 0 59 0 2524 0\r
+r 10 0 59 0 2523 0\r
+r 10 0 59 0 2522 0\r
+r 10 0 59 0 2521 0\r
+r 10 0 59 0 2520 0\r
+r 10 0 59 0 2519 0\r
+r 10 0 59 0 2518 0\r
+r 10 0 59 0 2517 0\r
+r 10 0 59 0 2516 0\r
+r 10 0 59 0 2515 0\r
+r 10 0 59 0 2514 0\r
+r 10 0 59 0 2513 0\r
+r 10 0 59 0 2512 0\r
+r 10 0 59 0 2511 0\r
+r 10 0 59 0 2510 0\r
+r 10 0 59 0 2509 0\r
+r 10 0 59 0 2508 0\r
+r 10 0 59 0 2507 0\r
+r 10 0 59 0 2506 0\r
+r 10 0 59 0 2505 0\r
+r 10 0 59 0 2504 0\r
+r 10 0 59 0 2503 0\r
+r 10 0 59 0 2502 0\r
+r 10 0 59 0 2501 0\r
+r 10 0 59 0 2500 0\r
+r 10 0 59 0 2499 0\r
+r 10 0 59 0 2498 0\r
+r 10 0 59 0 2497 0\r
+r 10 0 59 0 2496 0\r
+r 10 0 59 0 2495 0\r
+r 10 0 59 0 2494 0\r
+r 10 0 59 0 2493 0\r
+r 10 0 59 0 2492 0\r
+r 10 0 59 0 2491 0\r
+r 10 0 59 0 2490 0\r
+r 10 0 59 0 2489 0\r
+r 10 0 59 0 2488 0\r
+r 10 0 59 0 2487 0\r
+r 10 0 59 0 2486 0\r
+r 10 0 59 0 2485 0\r
+r 10 0 59 0 2484 0\r
+r 10 0 59 0 2483 0\r
+r 10 0 59 0 2482 0\r
+r 10 0 59 0 2481 0\r
+r 10 0 59 0 2480 0\r
+r 10 0 59 0 2479 0\r
+r 10 0 59 0 2478 0\r
+r 10 0 59 0 2477 0\r
+r 10 0 59 0 2476 0\r
+r 10 0 59 0 2475 0\r
+r 10 0 59 0 2474 0\r
+r 10 0 59 0 2473 0\r
+r 10 0 59 0 2472 0\r
+r 10 0 59 0 2471 0\r
+r 10 0 59 0 2470 0\r
+r 10 0 59 0 2469 0\r
+r 10 0 59 0 2468 0\r
+r 10 0 59 0 2467 0\r
+r 10 0 59 0 2466 0\r
+r 10 0 59 0 2465 0\r
+r 10 0 59 0 2464 0\r
+r 10 0 59 0 2463 0\r
+r 10 0 59 0 2462 0\r
+r 10 0 59 0 2461 0\r
+r 10 0 59 0 2460 0\r
+r 10 0 59 0 2459 0\r
+r 10 0 59 0 2458 0\r
+r 10 0 59 0 2457 0\r
+r 10 0 59 0 2456 0\r
+r 10 0 59 0 2455 0\r
+r 10 0 59 0 2454 0\r
+r 10 0 59 0 2453 0\r
+r 10 0 59 0 2452 0\r
+r 10 0 59 0 2451 0\r
+r 10 0 59 0 2450 0\r
+r 10 0 59 0 2449 0\r
+r 10 0 59 0 2448 0\r
+r 10 0 59 0 2447 0\r
+r 10 0 59 0 2446 0\r
+r 10 0 59 0 2445 0\r
+r 10 0 59 0 2444 0\r
+r 10 0 59 0 2443 0\r
+r 10 0 59 0 2442 0\r
+r 10 0 59 0 2441 0\r
+r 10 0 59 0 2440 0\r
+r 10 0 59 0 2439 0\r
+r 10 0 59 0 2438 0\r
+r 10 0 59 0 2437 0\r
+r 10 0 59 0 2436 0\r
+r 10 0 59 0 2435 0\r
+r 10 0 59 0 2434 0\r
+r 10 0 59 0 2433 0\r
+r 10 0 59 0 2432 0\r
+r 10 0 59 0 2431 0\r
+r 10 0 59 0 2430 0\r
+r 10 0 59 0 2429 0\r
+r 10 0 59 0 2428 0\r
+r 10 0 59 0 2427 0\r
+r 10 0 59 0 2426 0\r
+r 10 0 59 0 2425 0\r
+r 10 0 59 0 2424 0\r
+r 10 0 59 0 2423 0\r
+r 10 0 59 0 2422 0\r
+r 10 0 59 0 2421 0\r
+r 10 0 59 0 2420 0\r
+r 10 0 59 0 2419 0\r
+r 10 0 59 0 2418 0\r
+r 10 0 59 0 2417 0\r
+r 10 0 59 0 2416 0\r
+r 10 0 59 0 2415 0\r
+r 10 0 59 0 2414 0\r
+r 10 0 59 0 2413 0\r
+r 10 0 59 0 2412 0\r
+r 10 0 59 0 2411 0\r
+r 10 0 59 0 2410 0\r
+r 10 0 59 0 2409 0\r
+r 10 0 59 0 2408 0\r
+r 10 0 59 0 2407 0\r
+r 10 0 59 0 2406 0\r
+r 10 0 59 0 2405 0\r
+r 10 0 59 0 2404 0\r
+r 10 0 59 0 2403 0\r
+r 10 0 59 0 2402 0\r
+r 10 0 59 0 2401 0\r
+r 10 0 59 0 2400 0\r
+r 10 0 59 0 2399 0\r
+r 10 0 59 0 2398 0\r
+r 10 0 59 0 2397 0\r
+r 10 0 59 0 2396 0\r
+r 10 0 59 0 2395 0\r
+r 10 0 59 0 2394 0\r
+r 10 0 59 0 2393 0\r
+r 10 0 59 0 2392 0\r
+r 10 0 59 0 2391 0\r
+r 10 0 59 0 2390 0\r
+r 10 0 59 0 2389 0\r
+r 10 0 59 0 2388 0\r
+r 10 0 59 0 2387 0\r
+r 10 0 59 0 2386 0\r
+r 10 0 59 0 2385 0\r
+r 10 0 59 0 2384 0\r
+r 10 0 59 0 2383 0\r
+r 10 0 59 0 2382 0\r
+r 10 0 59 0 2381 0\r
+r 10 0 59 0 2380 0\r
+r 10 0 59 0 2379 0\r
+r 10 0 59 0 2378 0\r
+r 10 0 59 0 2377 0\r
+r 10 0 59 0 2376 0\r
+r 10 0 59 0 2375 0\r
+r 10 0 59 0 2374 0\r
+r 10 0 59 0 2373 0\r
+r 10 0 59 0 2372 0\r
+r 10 0 59 0 2371 0\r
+r 10 0 59 0 2370 0\r
+r 10 0 59 0 2369 0\r
+r 10 0 59 0 2368 0\r
+r 10 0 59 0 2367 0\r
+r 10 0 59 0 2366 0\r
+r 10 0 59 0 2365 0\r
+r 10 0 59 0 2364 0\r
+r 10 0 59 0 2363 0\r
+r 10 0 59 0 2362 0\r
+r 10 0 59 0 2361 0\r
+r 10 0 59 0 2360 0\r
+r 10 0 59 0 2359 0\r
+r 10 0 59 0 2358 0\r
+r 10 0 59 0 2357 0\r
+r 10 0 59 0 2356 0\r
+r 10 0 59 0 2355 0\r
+r 10 0 59 0 2354 0\r
+r 10 0 59 0 2353 0\r
+r 10 0 59 0 2352 0\r
+r 10 0 59 0 2351 0\r
+r 10 0 59 0 2350 0\r
+r 10 0 59 0 2349 0\r
+r 10 0 59 0 2348 0\r
+r 10 0 59 0 2347 0\r
+r 10 0 59 0 2346 0\r
+r 10 0 59 0 2345 0\r
+r 10 0 59 0 2344 0\r
+r 10 0 59 0 2343 0\r
+r 10 0 59 0 2342 0\r
+r 10 0 59 0 2341 0\r
+r 10 0 59 0 2340 0\r
+r 10 0 59 0 2339 0\r
+r 10 0 59 0 2338 0\r
+r 10 0 59 0 2337 0\r
+r 10 0 59 0 2336 0\r
+r 10 0 59 0 2335 0\r
+r 10 0 59 0 2334 0\r
+r 10 0 59 0 2333 0\r
+r 10 0 59 0 2332 0\r
+r 10 0 59 0 2331 0\r
+r 10 0 59 0 2330 0\r
+r 10 0 59 0 2329 0\r
+r 10 0 59 0 2328 0\r
+r 10 0 59 0 2327 0\r
+r 10 0 59 0 2326 0\r
+r 10 0 59 0 2325 0\r
+r 10 0 59 0 2324 0\r
+r 10 0 59 0 2323 0\r
+r 10 0 59 0 2322 0\r
+r 10 0 59 0 2321 0\r
+r 10 0 59 0 2320 0\r
+r 10 0 59 0 2319 0\r
+r 10 0 59 0 2318 0\r
+r 10 0 59 0 2317 0\r
+r 10 0 59 0 2316 0\r
+r 10 0 59 0 2315 0\r
+r 10 0 59 0 2314 0\r
+r 10 0 59 0 2313 0\r
+r 10 0 59 0 2312 0\r
+r 10 0 59 0 2311 0\r
+r 10 0 59 0 2310 0\r
+r 10 0 59 0 2309 0\r
+r 10 0 59 0 2308 0\r
+r 10 0 59 0 2307 0\r
+r 10 0 59 0 2306 0\r
+r 10 0 59 0 2305 0\r
+r 10 0 59 0 2304 0\r
+r 10 0 59 0 2303 0\r
+r 10 0 59 0 2302 0\r
+r 10 0 59 0 2301 0\r
+r 10 0 59 0 2300 0\r
+r 10 0 59 0 2299 0\r
+r 10 0 59 0 2298 0\r
+r 10 0 59 0 2297 0\r
+r 10 0 59 0 2296 0\r
+r 10 0 59 0 2295 0\r
+r 10 0 59 0 2294 0\r
+r 10 0 59 0 2293 0\r
+r 10 0 59 0 2292 0\r
+r 10 0 59 0 2291 0\r
+r 10 0 59 0 2290 0\r
+r 10 0 59 0 2289 0\r
+r 10 0 59 0 2288 0\r
+r 10 0 59 0 2287 0\r
+r 10 0 59 0 2286 0\r
+r 10 0 59 0 2285 0\r
+r 10 0 59 0 2284 0\r
+r 10 0 59 0 2283 0\r
+r 10 0 59 0 2282 0\r
+r 10 0 59 0 2281 0\r
+r 10 0 59 0 2280 0\r
+r 10 0 59 0 2279 0\r
+r 10 0 59 0 2278 0\r
+r 10 0 59 0 2277 0\r
+r 10 0 59 0 2276 0\r
+r 10 0 59 0 2275 0\r
+r 10 0 59 0 2274 0\r
+r 10 0 59 0 2273 0\r
+r 10 0 59 0 2272 0\r
+r 10 0 59 0 2271 0\r
+r 10 0 59 0 2270 0\r
+r 10 0 59 0 2269 0\r
+r 10 0 59 0 2268 0\r
+r 10 0 59 0 2267 0\r
+r 10 0 59 0 2266 0\r
+r 10 0 59 0 2265 0\r
+r 10 0 59 0 2264 0\r
+r 10 0 59 0 2263 0\r
+r 10 0 59 0 2262 0\r
+r 10 0 59 0 2261 0\r
+r 10 0 59 0 2260 0\r
+r 10 0 59 0 2259 0\r
+r 10 0 59 0 2258 0\r
+r 10 0 59 0 2257 0\r
+r 10 0 59 0 2256 0\r
+r 10 0 59 0 2255 0\r
+r 10 0 59 0 2254 0\r
+r 10 0 59 0 2253 0\r
+r 10 0 59 0 2252 0\r
+r 10 0 59 0 2251 0\r
+r 10 0 59 0 2250 0\r
+r 10 0 59 0 2249 0\r
+r 10 0 59 0 2248 0\r
+r 10 0 59 0 2247 0\r
+r 10 0 59 0 2246 0\r
+r 10 0 59 0 2245 0\r
+r 10 0 59 0 2244 0\r
+r 10 0 59 0 2243 0\r
+r 10 0 59 0 2242 0\r
+r 10 0 59 0 2241 0\r
+r 10 0 59 0 2240 0\r
+r 10 0 59 0 2239 0\r
+r 10 0 59 0 2238 0\r
+r 10 0 59 0 2237 0\r
+r 10 0 59 0 2236 0\r
+r 10 0 59 0 2235 0\r
+r 10 0 59 0 2234 0\r
+r 10 0 59 0 2233 0\r
+r 10 0 59 0 2232 0\r
+r 10 0 59 0 2231 0\r
+r 10 0 59 0 2230 0\r
+r 10 0 59 0 2229 0\r
+r 10 0 59 0 2228 0\r
+r 10 0 59 0 2227 0\r
+r 10 0 59 0 2226 0\r
+r 10 0 59 0 2225 0\r
+r 10 0 59 0 2224 0\r
+r 10 0 59 0 2223 0\r
+r 10 0 59 0 2222 0\r
+r 10 0 59 0 2221 0\r
+r 10 0 59 0 2220 0\r
+r 10 0 59 0 2219 0\r
+r 10 0 59 0 2218 0\r
+r 10 0 59 0 2217 0\r
+r 10 0 59 0 2216 0\r
+r 10 0 59 0 2215 0\r
+r 10 0 59 0 2214 0\r
+r 10 0 59 0 2213 0\r
+r 10 0 59 0 2212 0\r
+r 10 0 59 0 2211 0\r
+r 10 0 59 0 2210 0\r
+r 10 0 59 0 2209 0\r
+r 10 0 59 0 2208 0\r
+r 10 0 59 0 2207 0\r
+r 10 0 59 0 2206 0\r
+r 10 0 59 0 2205 0\r
+r 10 0 59 0 2204 0\r
+r 10 0 59 0 2203 0\r
+r 10 0 59 0 2202 0\r
+r 10 0 59 0 2201 0\r
+r 10 0 59 0 2200 0\r
+r 10 0 59 0 2199 0\r
+r 10 0 59 0 2198 0\r
+r 10 0 59 0 2197 0\r
+r 10 0 59 0 2196 0\r
+r 10 0 59 0 2195 0\r
+r 10 0 59 0 2194 0\r
+r 10 0 59 0 2193 0\r
+r 10 0 59 0 2192 0\r
+r 10 0 59 0 2191 0\r
+r 10 0 59 0 2190 0\r
+r 10 0 59 0 2189 0\r
+r 10 0 59 0 2188 0\r
+r 10 0 59 0 2187 0\r
+r 10 0 59 0 2186 0\r
+r 10 0 59 0 2185 0\r
+r 10 0 59 0 2184 0\r
+r 10 0 59 0 2183 0\r
+r 10 0 59 0 2182 0\r
+r 10 0 59 0 2181 0\r
+r 10 0 59 0 2180 0\r
+r 10 0 59 0 2179 0\r
+r 10 0 59 0 2178 0\r
+r 10 0 59 0 2177 0\r
+r 10 0 59 0 2176 0\r
+r 10 0 59 0 2175 0\r
+r 10 0 59 0 2174 0\r
+r 10 0 59 0 2173 0\r
+r 10 0 59 0 2172 0\r
+r 10 0 59 0 2171 0\r
+r 10 0 59 0 2170 0\r
+r 10 0 59 0 2169 0\r
+r 10 0 59 0 2168 0\r
+r 10 0 59 0 2167 0\r
+r 10 0 59 0 2166 0\r
+r 10 0 59 0 2165 0\r
+r 10 0 59 0 2164 0\r
+r 10 0 59 0 2163 0\r
+r 10 0 59 0 2162 0\r
+r 10 0 59 0 2161 0\r
+r 10 0 59 0 2160 0\r
+r 10 0 59 0 2159 0\r
+r 10 0 59 0 2158 0\r
+r 10 0 59 0 2157 0\r
+r 10 0 59 0 2156 0\r
+r 10 0 59 0 2155 0\r
+r 10 0 59 0 2154 0\r
+r 10 0 59 0 2153 0\r
+r 10 0 59 0 2152 0\r
+r 10 0 59 0 2151 0\r
+r 10 0 59 0 2150 0\r
+r 10 0 59 0 2149 0\r
+r 10 0 59 0 2148 0\r
+r 10 0 59 0 2147 0\r
+r 10 0 59 0 2146 0\r
+r 10 0 59 0 2145 0\r
+r 10 0 59 0 2144 0\r
+r 10 0 59 0 2143 0\r
+r 10 0 59 0 2142 0\r
+r 10 0 59 0 2141 0\r
+r 10 0 59 0 2140 0\r
+r 10 0 59 0 2139 0\r
+r 10 0 59 0 2138 0\r
+r 10 0 59 0 2137 0\r
+r 10 0 59 0 2136 0\r
+r 10 0 59 0 2135 0\r
+r 10 0 59 0 2134 0\r
+r 10 0 59 0 2133 0\r
+r 10 0 59 0 2132 0\r
+r 10 0 59 0 2131 0\r
+r 10 0 59 0 2130 0\r
+r 10 0 59 0 2129 0\r
+r 10 0 59 0 2128 0\r
+r 10 0 59 0 2127 0\r
+r 10 0 59 0 2126 0\r
+r 10 0 59 0 2125 0\r
+r 10 0 59 0 2124 0\r
+r 10 0 59 0 2123 0\r
+r 10 0 59 0 2122 0\r
+r 10 0 59 0 2121 0\r
+r 10 0 59 0 2120 0\r
+r 10 0 59 0 2119 0\r
+r 10 0 59 0 2118 0\r
+r 10 0 59 0 2117 0\r
+r 10 0 59 0 2116 0\r
+r 10 0 59 0 2115 0\r
+r 10 0 59 0 2114 0\r
+r 10 0 59 0 2113 0\r
+r 10 0 59 0 2112 0\r
+r 10 0 59 0 2111 0\r
+r 10 0 59 0 2110 0\r
+r 10 0 59 0 2109 0\r
+r 10 0 59 0 2108 0\r
+r 10 0 59 0 2107 0\r
+r 10 0 59 0 2106 0\r
+r 10 0 59 0 2105 0\r
+r 10 0 59 0 2104 0\r
+r 10 0 59 0 2103 0\r
+r 10 0 59 0 2102 0\r
+r 10 0 59 0 2101 0\r
+r 10 0 59 0 2100 0\r
+r 10 0 59 0 2099 0\r
+r 10 0 59 0 2098 0\r
+r 10 0 59 0 2097 0\r
+r 10 0 59 0 2096 0\r
+r 10 0 59 0 2095 0\r
+r 10 0 59 0 2094 0\r
+r 10 0 59 0 2093 0\r
+r 10 0 59 0 2092 0\r
+r 10 0 59 0 2091 0\r
+r 10 0 59 0 2053 0\r
+r 10 0 59 0 2052 0\r
+r 10 0 59 0 2049 0\r
+r 10 0 59 0 2035 0\r
+r 10 0 59 0 2016 0\r
+r 10 0 59 0 1998 0\r
+r 10 0 59 0 1983 0\r
+r 10 0 59 0 1961 0\r
+r 10 0 59 0 1935 0\r
+r 10 0 59 0 1916 0\r
+r 10 0 59 0 1897 0\r
+r 10 0 59 0 1881 0\r
+r 10 0 59 0 1867 0\r
+r 10 0 59 0 1853 0\r
+r 10 0 59 0 1831 0\r
+r 10 0 59 0 1808 0\r
+r 10 0 59 0 1785 0\r
+r 10 0 59 0 1773 0\r
+r 10 0 59 0 1757 0\r
+r 10 0 59 0 1751 0\r
+r 10 0 59 0 1744 0\r
+r 10 0 59 0 1728 0\r
+r 10 0 59 0 1708 0\r
+r 10 0 59 0 1686 0\r
+r 10 0 59 0 1666 0\r
+r 10 0 59 0 1650 0\r
+r 10 0 59 0 1635 0\r
+r 10 0 59 0 1613 0\r
+r 10 0 59 0 1590 0\r
+r 10 0 59 0 1567 0\r
+r 10 0 59 0 1547 0\r
+r 10 0 59 0 1527 0\r
+r 10 0 59 0 1507 0\r
+r 10 0 59 0 1487 0\r
+r 10 0 59 0 1467 0\r
+r 10 0 59 0 1435 0\r
+r 10 0 59 0 1408 0\r
+r 10 0 59 0 1395 0\r
+r 10 0 59 0 1362 0\r
+r 10 0 59 0 1357 0\r
+r 10 0 59 0 1356 0\r
+r 10 0 59 0 1348 0\r
+r 10 0 59 0 1337 0\r
+r 10 0 59 0 1332 0\r
+r 10 0 59 0 1327 0\r
+r 10 0 59 0 1323 0\r
+r 10 0 59 0 1319 0\r
+r 10 0 59 0 1270 0\r
+r 10 0 59 0 1268 0\r
+r 10 0 59 0 1266 0\r
+r 10 0 59 0 1264 0\r
+r 10 0 59 0 1262 0\r
+r 10 0 59 0 1215 0\r
+r 10 0 59 0 1213 0\r
+r 10 0 59 0 1211 0\r
+r 10 0 59 0 1209 0\r
+r 10 0 59 0 1201 0\r
+r 10 0 59 0 1199 0\r
+r 10 0 59 0 1197 0\r
+r 10 0 59 0 1195 0\r
+r 10 0 59 0 1193 0\r
+r 10 0 59 0 1191 0\r
+r 10 0 59 0 1105 0\r
+r 10 0 59 0 1104 0\r
+r 10 0 59 0 1102 0\r
+r 10 0 59 0 1101 0\r
+r 10 0 59 0 1097 0\r
+r 10 0 59 0 1094 0\r
+r 10 0 59 0 1093 0\r
+r 10 0 59 0 1090 0\r
+r 10 0 59 0 1053 0\r
+r 10 0 59 0 1024 0\r
+r 10 0 59 0 1023 0\r
+r 10 0 59 0 1017 0\r
+r 10 0 59 0 1014 0\r
+r 10 0 59 0 1000 0\r
+r 10 0 59 0 998 0\r
+r 10 0 59 0 968 0\r
+r 10 0 59 0 959 0\r
+r 10 0 59 0 957 0\r
+r 10 0 59 0 954 0\r
+r 10 0 59 0 948 0\r
+r 10 0 59 0 942 0\r
+r 10 0 59 0 938 0\r
+r 10 0 59 0 935 0\r
+r 10 0 59 0 930 0\r
+r 10 0 59 0 928 0\r
+r 10 0 59 0 900 0\r
+r 10 0 59 0 899 0\r
+r 10 0 59 0 896 0\r
+r 10 0 59 0 892 0\r
+r 10 0 59 0 890 0\r
+r 10 0 59 0 887 0\r
+r 10 0 59 0 873 0\r
+r 10 0 59 0 865 0\r
+r 10 0 59 0 863 0\r
+r 10 0 59 0 853 0\r
+r 10 0 59 0 842 0\r
+r 10 0 59 0 839 0\r
+r 10 0 59 0 838 0\r
+r 10 0 59 0 835 0\r
+r 10 0 59 0 730 0\r
+r 10 0 59 0 705 0\r
+r 10 0 59 0 686 0\r
+r 10 0 59 0 684 0\r
+r 10 0 59 0 681 0\r
+r 10 0 59 0 674 0\r
+r 10 0 59 0 671 0\r
+r 10 0 59 0 670 0\r
+r 10 0 59 0 667 0\r
+r 10 0 59 0 662 0\r
+r 10 0 59 0 656 0\r
+r 10 0 59 0 646 0\r
+r 10 0 59 0 644 0\r
+r 10 0 59 0 641 0\r
+r 10 0 59 0 638 0\r
+r 10 0 59 0 627 0\r
+r 10 0 59 0 626 0\r
+r 10 0 59 0 616 0\r
+r 10 0 59 0 614 0\r
+r 10 0 59 0 612 0\r
+r 10 0 59 0 610 0\r
+r 10 0 59 0 608 0\r
+r 10 0 59 0 599 0\r
+r 10 0 59 0 597 0\r
+r 10 0 59 0 595 0\r
+r 10 0 59 0 568 0\r
+r 10 0 59 0 562 0\r
+r 10 0 59 0 550 0\r
+r 10 0 59 0 546 0\r
+r 10 0 59 0 544 0\r
+r 10 0 59 0 542 0\r
+r 10 0 59 0 541 0\r
+r 10 0 59 0 539 0\r
+r 10 0 59 0 537 0\r
+r 10 0 59 0 536 0\r
+r 10 0 59 0 532 0\r
+r 10 0 59 0 531 0\r
+r 10 0 59 0 528 0\r
+r 10 0 59 0 502 0\r
+r 10 0 59 0 500 0\r
+r 10 0 59 0 499 0\r
+r 10 0 59 0 484 0\r
+r 10 0 59 0 478 0\r
+r 10 0 59 0 475 0\r
+r 10 0 59 0 470 0\r
+r 10 0 59 0 463 0\r
+r 10 0 59 0 462 0\r
+r 10 0 59 0 459 0\r
+r 10 0 59 0 457 0\r
+r 10 0 59 0 456 0\r
+r 10 0 59 0 451 0\r
+r 10 0 59 0 449 0\r
+r 10 0 59 0 448 0\r
+r 10 0 59 0 445 0\r
+r 10 0 59 0 443 0\r
+r 10 0 59 0 421 0\r
+r 10 0 59 0 420 0\r
+r 10 0 59 0 417 0\r
+r 10 0 59 0 416 0\r
+r 10 0 59 0 413 0\r
+r 10 0 59 0 411 0\r
+r 10 0 59 0 407 0\r
+r 10 0 59 0 406 0\r
+r 10 0 59 0 404 0\r
+r 10 0 59 0 403 0\r
+r 10 0 59 0 399 0\r
+r 10 0 59 0 393 0\r
+r 10 0 59 0 391 0\r
+r 10 0 59 0 385 0\r
+r 10 0 59 0 382 0\r
+r 10 0 59 0 372 0\r
+r 10 0 59 0 370 0\r
+r 10 0 59 0 367 0\r
+r 10 0 59 0 363 0\r
+r 10 0 59 0 360 0\r
+r 10 0 59 0 357 0\r
+r 10 0 59 0 353 0\r
+r 10 0 59 0 351 0\r
+r 10 0 59 0 340 0\r
+r 10 0 59 0 339 0\r
+r 10 0 59 0 338 0\r
+r 10 0 59 0 336 0\r
+r 10 0 59 0 291 0\r
+r 10 0 59 0 290 0\r
+r 10 0 59 0 264 0\r
+r 10 0 59 0 263 0\r
+r 10 0 59 0 262 0\r
+r 10 0 59 0 261 0\r
+r 10 0 59 0 258 0\r
+r 10 0 59 0 257 0\r
+r 10 0 59 0 256 0\r
+r 10 0 59 0 255 0\r
+r 10 0 59 0 233 0\r
+r 10 0 59 0 232 0\r
+r 10 0 59 0 231 0\r
+r 10 0 59 0 230 0\r
+r 10 0 59 0 209 0\r
+r 10 0 59 0 199 0\r
+r 10 0 59 0 197 0\r
+r 10 0 59 0 194 0\r
+r 10 0 59 0 193 0\r
+r 10 0 59 0 191 0\r
+r 10 0 59 0 186 0\r
+r 10 0 59 0 166 0\r
+r 10 0 59 0 149 0\r
+r 10 0 59 0 148 0\r
+r 10 0 59 0 147 0\r
+r 10 0 59 0 146 0\r
+r 10 0 59 0 124 0\r
+r 10 0 59 0 122 0\r
+r 10 0 59 0 119 0\r
+r 10 0 59 0 117 0\r
+r 10 0 59 0 102 0\r
+r 10 0 59 0 100 0\r
+r 10 0 59 0 95 0\r
+r 10 0 59 0 92 0\r
+r 10 0 59 0 90 0\r
+r 10 0 59 0 84 0\r
+r 10 0 59 0 82 0\r
+r 10 0 59 0 81 0\r
+r 10 0 59 0 79 0\r
+r 10 0 59 0 54 0\r
+r 10 0 59 0 51 0\r
+r 10 0 59 0 47 0\r
+r 10 0 4 0 189 0\r
+r 10 0 5 0 2240 0\r
+r 10 0 7 0 50 0\r
+r 2059 0 104 0 2063 0\r
+r 2059 0 104 0 2061 0\r
+r 2059 0 129 0 2065 0\r
+r 2059 0 2906 0 2058 0\r
+r 2059 0 2908 0 2074 0\r
+r 2059 0 2908 0 2072 0\r
+r 2059 0 4 0 466 0\r
+r 2059 0 5 0 2107 0\r
+r 2059 0 7 0 2048 0\r
+r 11 0 129 0 211 0\r
+r 11 0 2907 0 1378 0\r
+r 11 0 2907 0 1187 0\r
+r 11 0 2907 0 1183 0\r
+r 11 0 2907 0 872 0\r
+r 11 0 2907 0 871 0\r
+r 11 0 2907 0 848 0\r
+r 11 0 2907 0 847 0\r
+r 11 0 2907 0 788 0\r
+r 11 0 2907 0 786 0\r
+r 11 0 2907 0 767 0\r
+r 11 0 2907 0 762 0\r
+r 11 0 2907 0 605 0\r
+r 11 0 2907 0 556 0\r
+r 11 0 2907 0 348 0\r
+r 11 0 2907 0 346 0\r
+r 11 0 59 0 364 0\r
+r 11 0 59 0 361 0\r
+r 11 0 59 0 359 0\r
+r 11 0 59 0 358 0\r
+r 11 0 59 0 355 0\r
+r 11 0 59 0 354 0\r
+r 11 0 59 0 352 0\r
+r 11 0 4 0 190 0\r
+r 11 0 5 0 2372 0\r
+r 11 0 7 0 50 0\r
+r 2060 0 104 0 2078 0\r
+r 2060 0 104 0 2077 0\r
+r 2060 0 104 0 2076 0\r
+r 2060 0 2906 0 2058 0\r
+r 2060 0 2907 0 2074 0\r
+r 2060 0 2907 0 2072 0\r
+r 2060 0 59 0 2089 0\r
+r 2060 0 4 0 503 0\r
+r 2060 0 5 0 2108 0\r
+r 2060 0 7 0 2048 0\r
+r 12 0 129 0 540 0\r
+r 12 0 129 0 208 0\r
+r 12 0 2907 0 2071 0\r
+r 12 0 2907 0 2064 0\r
+r 12 0 2907 0 2062 0\r
+r 12 0 2907 0 1386 0\r
+r 12 0 2907 0 1384 0\r
+r 12 0 2907 0 1383 0\r
+r 12 0 2907 0 1382 0\r
+r 12 0 2907 0 1381 0\r
+r 12 0 2907 0 1379 0\r
+r 12 0 2907 0 1346 0\r
+r 12 0 2907 0 1344 0\r
+r 12 0 2907 0 1341 0\r
+r 12 0 2907 0 1317 0\r
+r 12 0 2907 0 1315 0\r
+r 12 0 2907 0 1283 0\r
+r 12 0 2907 0 1282 0\r
+r 12 0 2907 0 1281 0\r
+r 12 0 2907 0 1178 0\r
+r 12 0 2907 0 1177 0\r
+r 12 0 2907 0 1176 0\r
+r 12 0 2907 0 1168 0\r
+r 12 0 2907 0 1153 0\r
+r 12 0 2907 0 1147 0\r
+r 12 0 2907 0 927 0\r
+r 12 0 2907 0 920 0\r
+r 12 0 2907 0 850 0\r
+r 12 0 2907 0 849 0\r
+r 12 0 2907 0 807 0\r
+r 12 0 2907 0 805 0\r
+r 12 0 2907 0 781 0\r
+r 12 0 2907 0 778 0\r
+r 12 0 2907 0 711 0\r
+r 12 0 2907 0 709 0\r
+r 12 0 2907 0 707 0\r
+r 12 0 2907 0 690 0\r
+r 12 0 2907 0 653 0\r
+r 12 0 2907 0 589 0\r
+r 12 0 2907 0 554 0\r
+r 12 0 2907 0 159 0\r
+r 12 0 59 0 2090 0\r
+r 12 0 59 0 2088 0\r
+r 12 0 59 0 2087 0\r
+r 12 0 59 0 2085 0\r
+r 12 0 59 0 2084 0\r
+r 12 0 59 0 1977 0\r
+r 12 0 59 0 1955 0\r
+r 12 0 59 0 1952 0\r
+r 12 0 59 0 1929 0\r
+r 12 0 59 0 1875 0\r
+r 12 0 59 0 1767 0\r
+r 12 0 59 0 1764 0\r
+r 12 0 59 0 1738 0\r
+r 12 0 59 0 1735 0\r
+r 12 0 59 0 1722 0\r
+r 12 0 59 0 1719 0\r
+r 12 0 59 0 1702 0\r
+r 12 0 59 0 1629 0\r
+r 12 0 59 0 1607 0\r
+r 12 0 59 0 1584 0\r
+r 12 0 59 0 1389 0\r
+r 12 0 59 0 1291 0\r
+r 12 0 59 0 1290 0\r
+r 12 0 59 0 1289 0\r
+r 12 0 4 0 190 0\r
+r 12 0 5 0 2295 0\r
+r 12 0 7 0 50 0\r
+r 2061 0 1 0 106 0\r
+r 2061 0 365 0 2059 0\r
+r 2061 0 38 0 2062 0\r
+r 2061 0 39 0 107 0\r
+r 13 0 129 0 210 0\r
+r 13 0 2907 0 576 0\r
+r 13 0 2907 0 574 0\r
+r 13 0 2907 0 572 0\r
+r 13 0 2907 0 566 0\r
+r 13 0 59 0 660 0\r
+r 13 0 59 0 659 0\r
+r 13 0 59 0 657 0\r
+r 13 0 4 0 190 0\r
+r 13 0 5 0 2241 0\r
+r 13 0 7 0 50 0\r
+r 2062 0 2 0 94 0\r
+r 2062 0 3 0 3278 0\r
+r 2062 0 28 0 12 0\r
+r 2062 0 5 0 2105 0\r
+r 2062 0 7 0 2048 0\r
+r 2062 0 2911 0 2061 0\r
+r 14 0 2907 0 1385 0\r
+r 14 0 2907 0 1380 0\r
+r 14 0 2907 0 1276 0\r
+r 14 0 2907 0 1274 0\r
+r 14 0 2907 0 1186 0\r
+r 14 0 2907 0 1185 0\r
+r 14 0 2907 0 1184 0\r
+r 14 0 2907 0 1175 0\r
+r 14 0 2907 0 1081 0\r
+r 14 0 2907 0 996 0\r
+r 14 0 59 0 2010 0\r
+r 14 0 59 0 1847 0\r
+r 14 0 59 0 1825 0\r
+r 14 0 59 0 1802 0\r
+r 14 0 59 0 1279 0\r
+r 14 0 59 0 1278 0\r
+r 14 0 59 0 1082 0\r
+r 14 0 59 0 337 0\r
+r 14 0 59 0 335 0\r
+r 14 0 4 0 189 0\r
+r 14 0 5 0 2400 0\r
+r 14 0 7 0 50 0\r
+r 2063 0 1 0 106 0\r
+r 2063 0 365 0 2059 0\r
+r 2063 0 38 0 2064 0\r
+r 2063 0 39 0 107 0\r
+r 15 0 2907 0 743 0\r
+r 15 0 4 0 190 0\r
+r 15 0 5 0 2435 0\r
+r 15 0 7 0 50 0\r
+r 2064 0 2 0 94 0\r
+r 2064 0 3 0 3279 0\r
+r 2064 0 28 0 12 0\r
+r 2064 0 5 0 2106 0\r
+r 2064 0 7 0 2048 0\r
+r 2064 0 2911 0 2063 0\r
+r 16 0 2907 0 1280 0\r
+r 16 0 2907 0 288 0\r
+r 16 0 59 0 1156 0\r
+r 16 0 59 0 1155 0\r
+r 16 0 59 0 1149 0\r
+r 16 0 4 0 190 0\r
+r 16 0 5 0 2283 0\r
+r 16 0 7 0 50 0\r
+r 2065 0 104 0 2066 0\r
+r 2065 0 129 0 2070 0\r
+r 2065 0 129 0 2069 0\r
+r 2065 0 129 0 2068 0\r
+r 2065 0 129 0 2067 0\r
+r 2065 0 4 0 2059 0\r
+r 2065 0 5 0 2092 0\r
+r 2065 0 7 0 2048 0\r
+r 17 0 4 0 189 0\r
+r 17 0 5 0 2370 0\r
+r 17 0 7 0 50 0\r
+r 2066 0 1 0 106 0\r
+r 2066 0 365 0 2065 0\r
+r 2066 0 38 0 5 0\r
+r 2066 0 39 0 107 0\r
+r 18 0 4 0 189 0\r
+r 18 0 5 0 2323 0\r
+r 18 0 7 0 50 0\r
+r 2067 0 59 0 2086 0\r
+r 2067 0 59 0 2083 0\r
+r 2067 0 4 0 2065 0\r
+r 2067 0 5 0 2110 0\r
+r 2067 0 7 0 2048 0\r
+r 19 0 129 0 545 0\r
+r 19 0 129 0 535 0\r
+r 19 0 4 0 189 0\r
+r 19 0 5 0 2228 0\r
+r 19 0 7 0 50 0\r
+r 2068 0 4 0 2065 0\r
+r 2068 0 5 0 2095 0\r
+r 2068 0 7 0 2048 0\r
+r 20 0 129 0 637 0\r
+r 20 0 2907 0 570 0\r
+r 20 0 59 0 658 0\r
+r 20 0 4 0 189 0\r
+r 20 0 5 0 2411 0\r
+r 20 0 7 0 50 0\r
+r 2069 0 4 0 2065 0\r
+r 2069 0 5 0 2091 0\r
+r 2069 0 7 0 2048 0\r
+r 21 0 4 0 189 0\r
+r 21 0 5 0 2333 0\r
+r 21 0 7 0 50 0\r
+r 2070 0 4 0 2065 0\r
+r 2070 0 5 0 2104 0\r
+r 2070 0 7 0 2048 0\r
+r 22 0 2907 0 851 0\r
+r 22 0 4 0 189 0\r
+r 22 0 5 0 2327 0\r
+r 22 0 7 0 50 0\r
+r 2071 0 2 0 94 0\r
+r 2071 0 3 0 3280 0\r
+r 2071 0 28 0 12 0\r
+r 2071 0 5 0 2099 0\r
+r 2071 0 7 0 2048 0\r
+r 2071 0 2911 0 2076 0\r
+r 23 0 4 0 189 0\r
+r 23 0 5 0 2396 0\r
+r 23 0 7 0 50 0\r
+r 2072 0 2 0 507 0\r
+r 2072 0 3 0 2073 0\r
+r 2072 0 28 0 2060 0\r
+r 2072 0 5 0 2102 0\r
+r 2072 0 29 0 2059 0\r
+r 2072 0 7 0 2048 0\r
+r 24 0 129 0 1336 0\r
+r 24 0 129 0 1331 0\r
+r 24 0 129 0 1326 0\r
+r 24 0 129 0 1322 0\r
+r 24 0 129 0 1318 0\r
+r 24 0 129 0 1008 0\r
+r 24 0 129 0 1005 0\r
+r 24 0 129 0 934 0\r
+r 24 0 129 0 932 0\r
+r 24 0 129 0 829 0\r
+r 24 0 129 0 816 0\r
+r 24 0 129 0 650 0\r
+r 24 0 129 0 647 0\r
+r 24 0 129 0 631 0\r
+r 24 0 129 0 621 0\r
+r 24 0 129 0 617 0\r
+r 24 0 129 0 607 0\r
+r 24 0 129 0 598 0\r
+r 24 0 129 0 593 0\r
+r 24 0 129 0 585 0\r
+r 24 0 129 0 582 0\r
+r 24 0 129 0 567 0\r
+r 24 0 129 0 561 0\r
+r 24 0 129 0 189 0\r
+r 24 0 145 0 24 0\r
+r 24 0 1 0 174 0\r
+r 24 0 2906 0 697 0\r
+r 24 0 2906 0 696 0\r
+r 24 0 2907 0 703 0\r
+r 24 0 2907 0 94 0\r
+r 24 0 4 0 25 0\r
+r 24 0 5 0 2306 0\r
+r 24 0 7 0 50 0\r
+r 2073 0 2 0 507 0\r
+r 2073 0 3 0 2072 0\r
+r 2073 0 5 0 2100 0\r
+r 2073 0 7 0 2048 0\r
+r 2073 0 2911 0 2081 0\r
+r 2073 0 2911 0 2078 0\r
+r 25 0 136 0 113 0\r
+r 25 0 136 0 110 0\r
+r 25 0 136 0 5 0\r
+r 25 0 136 0 1 0\r
+r 25 0 137 0 113 0\r
+r 25 0 137 0 5 0\r
+r 25 0 129 0 1313 0\r
+r 25 0 129 0 1295 0\r
+r 25 0 129 0 1189 0\r
+r 25 0 129 0 1188 0\r
+r 25 0 129 0 1179 0\r
+r 25 0 129 0 1138 0\r
+r 25 0 129 0 1125 0\r
+r 25 0 129 0 1119 0\r
+r 25 0 129 0 1116 0\r
+r 25 0 129 0 1109 0\r
+r 25 0 129 0 1084 0\r
+r 25 0 129 0 993 0\r
+r 25 0 129 0 845 0\r
+r 25 0 129 0 812 0\r
+r 25 0 129 0 779 0\r
+r 25 0 129 0 776 0\r
+r 25 0 129 0 775 0\r
+r 25 0 129 0 759 0\r
+r 25 0 129 0 745 0\r
+r 25 0 129 0 741 0\r
+r 25 0 129 0 738 0\r
+r 25 0 129 0 712 0\r
+r 25 0 129 0 700 0\r
+r 25 0 129 0 698 0\r
+r 25 0 129 0 677 0\r
+r 25 0 129 0 549 0\r
+r 25 0 129 0 518 0\r
+r 25 0 129 0 516 0\r
+r 25 0 129 0 512 0\r
+r 25 0 129 0 503 0\r
+r 25 0 129 0 497 0\r
+r 25 0 129 0 477 0\r
+r 25 0 129 0 466 0\r
+r 25 0 129 0 436 0\r
+r 25 0 129 0 431 0\r
+r 25 0 129 0 427 0\r
+r 25 0 129 0 384 0\r
+r 25 0 129 0 381 0\r
+r 25 0 129 0 375 0\r
+r 25 0 129 0 345 0\r
+r 25 0 129 0 342 0\r
+r 25 0 129 0 324 0\r
+r 25 0 129 0 323 0\r
+r 25 0 129 0 317 0\r
+r 25 0 129 0 284 0\r
+r 25 0 129 0 274 0\r
+r 25 0 129 0 269 0\r
+r 25 0 129 0 220 0\r
+r 25 0 129 0 217 0\r
+r 25 0 129 0 214 0\r
+r 25 0 129 0 160 0\r
+r 25 0 129 0 157 0\r
+r 25 0 129 0 151 0\r
+r 25 0 129 0 130 0\r
+r 25 0 129 0 123 0\r
+r 25 0 129 0 118 0\r
+r 25 0 129 0 109 0\r
+r 25 0 129 0 106 0\r
+r 25 0 129 0 62 0\r
+r 25 0 129 0 57 0\r
+r 25 0 129 0 24 0\r
+r 25 0 1 0 52 0\r
+r 25 0 59 0 374 0\r
+r 25 0 5 0 2244 0\r
+r 25 0 78 0 117 0\r
+r 25 0 7 0 50 0\r
+r 2074 0 2 0 507 0\r
+r 2074 0 3 0 2075 0\r
+r 2074 0 28 0 2060 0\r
+r 2074 0 5 0 2101 0\r
+r 2074 0 29 0 2059 0\r
+r 2074 0 7 0 2048 0\r
+r 26 0 1 0 144 0\r
+r 26 0 2 0 111 0\r
+r 26 0 2 0 110 0\r
+r 26 0 3 0 26 0\r
+r 26 0 5 0 2326 0\r
+r 26 0 29 0 52 0\r
+r 26 0 78 0 147 0\r
+r 26 0 7 0 53 0\r
+r 2075 0 2 0 507 0\r
+r 2075 0 3 0 2074 0\r
+r 2075 0 5 0 2098 0\r
+r 2075 0 7 0 2048 0\r
+r 2075 0 2911 0 2080 0\r
+r 2075 0 2911 0 2077 0\r
+r 27 0 2 0 116 0\r
+r 27 0 2 0 103 0\r
+r 27 0 3 0 2906 0\r
+r 27 0 139 0 157 0\r
+r 27 0 139 0 52 0\r
+r 27 0 28 0 157 0\r
+r 27 0 5 0 2315 0\r
+r 27 0 141 0 157 0\r
+r 27 0 141 0 52 0\r
+r 27 0 7 0 53 0\r
+r 27 0 2911 0 811 0\r
+r 27 0 2911 0 237 0\r
+r 27 0 2911 0 236 0\r
+r 27 0 2911 0 235 0\r
+r 27 0 2911 0 120 0\r
+r 2076 0 1 0 106 0\r
+r 2076 0 365 0 2060 0\r
+r 2076 0 38 0 2071 0\r
+r 2076 0 39 0 107 0\r
+r 28 0 2 0 116 0\r
+r 28 0 2 0 103 0\r
+r 28 0 3 0 2907 0\r
+r 28 0 139 0 0 0\r
+r 28 0 28 0 157 0\r
+r 28 0 5 0 2248 0\r
+r 28 0 141 0 0 0\r
+r 28 0 7 0 53 0\r
+r 2077 0 1 0 106 0\r
+r 2077 0 365 0 2060 0\r
+r 2077 0 38 0 2075 0\r
+r 2077 0 39 0 107 0\r
+r 29 0 2 0 116 0\r
+r 29 0 2 0 103 0\r
+r 29 0 3 0 2908 0\r
+r 29 0 139 0 0 0\r
+r 29 0 28 0 157 0\r
+r 29 0 5 0 2401 0\r
+r 29 0 141 0 0 0\r
+r 29 0 7 0 53 0\r
+r 2078 0 1 0 106 0\r
+r 2078 0 365 0 2060 0\r
+r 2078 0 38 0 2073 0\r
+r 2078 0 39 0 107 0\r
+r 30 0 2 0 103 0\r
+r 30 0 3 0 2909 0\r
+r 30 0 139 0 157 0\r
+r 30 0 28 0 52 0\r
+r 30 0 5 0 2224 0\r
+r 30 0 7 0 53 0\r
+r 30 0 2911 0 245 0\r
+r 30 0 2911 0 239 0\r
+r 2079 0 104 0 2081 0\r
+r 2079 0 104 0 2080 0\r
+r 2079 0 4 0 503 0\r
+r 2079 0 5 0 2093 0\r
+r 2079 0 7 0 2048 0\r
+r 31 0 2 0 110 0\r
+r 31 0 3 0 2910 0\r
+r 31 0 5 0 2343 0\r
+r 31 0 7 0 53 0\r
+r 31 0 2911 0 238 0\r
+r 2080 0 1 0 106 0\r
+r 2080 0 365 0 2079 0\r
+r 2080 0 38 0 2075 0\r
+r 2080 0 39 0 107 0\r
+r 32 0 104 0 236 0\r
+r 32 0 4 0 157 0\r
+r 32 0 5 0 2413 0\r
+r 32 0 7 0 50 0\r
+r 2081 0 1 0 106 0\r
+r 2081 0 365 0 2079 0\r
+r 2081 0 38 0 2073 0\r
+r 2081 0 39 0 107 0\r
+r 33 0 104 0 235 0\r
+r 33 0 59 0 2058 0\r
+r 33 0 59 0 982 0\r
+r 33 0 59 0 981 0\r
+r 33 0 59 0 926 0\r
+r 33 0 59 0 884 0\r
+r 33 0 59 0 881 0\r
+r 33 0 59 0 697 0\r
+r 33 0 59 0 696 0\r
+r 33 0 59 0 695 0\r
+r 33 0 59 0 494 0\r
+r 33 0 59 0 430 0\r
+r 33 0 59 0 426 0\r
+r 33 0 59 0 395 0\r
+r 33 0 59 0 387 0\r
+r 33 0 59 0 183 0\r
+r 33 0 59 0 181 0\r
+r 33 0 59 0 177 0\r
+r 33 0 59 0 173 0\r
+r 33 0 59 0 170 0\r
+r 33 0 59 0 168 0\r
+r 33 0 59 0 140 0\r
+r 33 0 59 0 138 0\r
+r 33 0 4 0 157 0\r
+r 33 0 5 0 2231 0\r
+r 33 0 7 0 50 0\r
+r 2082 0 9 0 2089 0\r
+r 2082 0 9 0 2086 0\r
+r 2082 0 9 0 2083 0\r
+r 2082 0 1 0 2056 0\r
+r 2082 0 5 0 2096 0\r
+r 2082 0 7 0 2048 0\r
+r 34 0 104 0 237 0\r
+r 34 0 4 0 157 0\r
+r 34 0 5 0 2380 0\r
+r 34 0 7 0 50 0\r
+r 2083 0 2072 0 2089 0\r
+r 2083 0 2064 0 2085 0\r
+r 2083 0 1 0 2067 0\r
+r 2083 0 5 0 2109 0\r
+r 2083 0 2062 0 2084 0\r
+r 2083 0 7 0 2082 0\r
+r 35 0 104 0 239 0\r
+r 35 0 59 0 498 0\r
+r 35 0 59 0 496 0\r
+r 35 0 59 0 495 0\r
+r 35 0 4 0 157 0\r
+r 35 0 5 0 2377 0\r
+r 35 0 7 0 50 0\r
+r 2084 0 1 0 12 0 d 200.0\r
+r 2084 0 3278 0 2083 0\r
+r 36 0 104 0 238 0\r
+r 36 0 4 0 157 0\r
+r 36 0 5 0 2293 0\r
+r 36 0 7 0 50 0\r
+r 2085 0 1 0 12 0 d 100.0\r
+r 2085 0 3279 0 2083 0\r
+r 37 0 104 0 243 0\r
+r 37 0 104 0 242 0\r
+r 37 0 104 0 241 0\r
+r 37 0 104 0 240 0\r
+r 37 0 2907 0 120 0\r
+r 37 0 59 0 2057 0\r
+r 37 0 59 0 925 0\r
+r 37 0 59 0 883 0\r
+r 37 0 59 0 880 0\r
+r 37 0 59 0 429 0\r
+r 37 0 59 0 425 0\r
+r 37 0 59 0 299 0\r
+r 37 0 59 0 298 0\r
+r 37 0 59 0 182 0\r
+r 37 0 59 0 180 0\r
+r 37 0 59 0 176 0\r
+r 37 0 59 0 172 0\r
+r 37 0 59 0 169 0\r
+r 37 0 59 0 167 0\r
+r 37 0 4 0 157 0\r
+r 37 0 5 0 2313 0\r
+r 37 0 7 0 50 0\r
+r 2086 0 2064 0 2088 0\r
+r 2086 0 1 0 2067 0\r
+r 2086 0 2074 0 2089 0\r
+r 2086 0 5 0 2094 0\r
+r 2086 0 2062 0 2087 0\r
+r 2086 0 7 0 2082 0\r
+r 38 0 2 0 110 0\r
+r 38 0 3 0 2911 0\r
+r 38 0 139 0 157 0\r
+r 38 0 28 0 0 0\r
+r 38 0 5 0 2350 0\r
+r 38 0 7 0 53 0\r
+r 38 0 2911 0 240 0\r
+r 2087 0 1 0 12 0 d 100.0\r
+r 2087 0 3278 0 2086 0\r
+r 39 0 1 0 42 0\r
+r 39 0 2 0 94 0\r
+r 39 0 3 0 2912 0\r
+r 39 0 139 0 157 0\r
+r 39 0 28 0 196 0\r
+r 39 0 5 0 2227 0\r
+r 39 0 7 0 53 0\r
+r 39 0 2911 0 241 0\r
+r 2088 0 1 0 12 0 d 200.0\r
+r 2088 0 3279 0 2086 0\r
+r 40 0 2 0 103 0\r
+r 40 0 3 0 2913 0\r
+r 40 0 139 0 157 0\r
+r 40 0 28 0 157 0\r
+r 40 0 5 0 2360 0\r
+r 40 0 141 0 157 0\r
+r 40 0 7 0 53 0\r
+r 40 0 2911 0 242 0\r
+r 2089 0 2073 0 2083 0\r
+r 2089 0 1 0 2060 0\r
+r 2089 0 2075 0 2086 0\r
+r 2089 0 7 0 2082 0\r
+r 2089 0 2071 0 2090 0\r
+r 41 0 2 0 103 0\r
+r 41 0 3 0 2914 0\r
+r 41 0 28 0 157 0\r
+r 41 0 5 0 2253 0\r
+r 41 0 7 0 53 0\r
+r 41 0 2911 0 243 0\r
+r 2090 0 3280 0 2089 0\r
+r 2090 0 1 0 12 0 d 0.5\r
+r 42 0 129 0 501 0\r
+r 42 0 129 0 226 0\r
+r 42 0 59 0 1377 0\r
+r 42 0 59 0 1081 0\r
+r 42 0 59 0 933 0\r
+r 42 0 59 0 931 0\r
+r 42 0 59 0 548 0\r
+r 42 0 59 0 474 0\r
+r 42 0 59 0 224 0\r
+r 42 0 59 0 204 0\r
+r 42 0 59 0 195 0\r
+r 42 0 59 0 192 0\r
+r 42 0 59 0 126 0\r
+r 42 0 59 0 97 0\r
+r 42 0 59 0 78 0\r
+r 42 0 59 0 72 0\r
+r 42 0 59 0 71 0\r
+r 42 0 59 0 39 0\r
+r 42 0 59 0 6 0\r
+r 42 0 59 0 5 0\r
+r 42 0 59 0 3 0\r
+r 42 0 4 0 0 0\r
+r 42 0 5 0 2395 0\r
+r 42 0 78 0 148 0\r
+r 42 0 7 0 50 0\r
+r 2091 0 2904 0 2069 0\r
+r 2091 0 1 0 10 0 s Valve\r
+r 43 0 2 0 110 0\r
+r 43 0 3 0 2915 0\r
+r 43 0 28 0 144 0\r
+r 43 0 5 0 2296 0\r
+r 43 0 7 0 53 0\r
+r 43 0 2911 0 234 0\r
+r 2092 0 2904 0 2065 0\r
+r 2092 0 1 0 10 0 s Independent Variable\r
+r 44 0 2 0 94 0\r
+r 44 0 3 0 2916 0\r
+r 44 0 28 0 10 0\r
+r 44 0 5 0 2254 0\r
+r 44 0 29 0 69 0\r
+r 44 0 7 0 53 0\r
+r 2093 0 2904 0 2079 0\r
+r 2093 0 1 0 10 0 s Flow\r
+r 45 0 2 0 94 0\r
+r 45 0 3 0 2917 0\r
+r 45 0 139 0 52 0\r
+r 45 0 28 0 10 0\r
+r 45 0 5 0 2294 0\r
+r 45 0 141 0 52 0\r
+r 45 0 29 0 52 0\r
+r 45 0 7 0 53 0\r
+r 2094 0 2904 0 2086 0\r
+r 2094 0 1 0 10 0 s Bar\r
+r 46 0 1 0 48 0\r
+r 46 0 5 0 47 0\r
+r 46 0 7 0 49 0\r
+r 2095 0 2904 0 2068 0\r
+r 2095 0 1 0 10 0 s Stock\r
+r 47 0 2904 0 46 0\r
+r 47 0 1 0 10 0 s Properties\r
+r 2096 0 2904 0 2082 0\r
+r 2096 0 1 0 10 0 s Test Configuration\r
+r 48 0 2906 0 168 0\r
+r 48 0 59 0 1089 0\r
+r 48 0 59 0 834 0\r
+r 48 0 59 0 666 0\r
+r 48 0 59 0 412 0\r
+r 48 0 59 0 50 0\r
+r 48 0 59 0 46 0\r
+r 48 0 27 0 167 0\r
+r 48 0 4 0 57 0\r
+r 48 0 5 0 2280 0\r
+r 48 0 7 0 50 0\r
+r 2097 0 2904 0 2056 0\r
+r 2097 0 1 0 10 0 s Configuration\r
+r 49 0 9 0 782 0\r
+r 49 0 9 0 758 0\r
+r 49 0 9 0 362 0\r
+r 49 0 9 0 356 0\r
+r 49 0 9 0 350 0\r
+r 49 0 9 0 349 0\r
+r 49 0 9 0 347 0\r
+r 49 0 9 0 345 0\r
+r 49 0 9 0 344 0\r
+r 49 0 9 0 343 0\r
+r 49 0 9 0 342 0\r
+r 49 0 9 0 341 0\r
+r 49 0 9 0 339 0\r
+r 49 0 9 0 337 0\r
+r 49 0 9 0 335 0\r
+r 49 0 9 0 334 0\r
+r 49 0 9 0 332 0\r
+r 49 0 9 0 330 0\r
+r 49 0 9 0 328 0\r
+r 49 0 9 0 326 0\r
+r 49 0 9 0 325 0\r
+r 49 0 9 0 324 0\r
+r 49 0 9 0 323 0\r
+r 49 0 9 0 321 0\r
+r 49 0 9 0 320 0\r
+r 49 0 9 0 319 0\r
+r 49 0 9 0 318 0\r
+r 49 0 9 0 317 0\r
+r 49 0 9 0 301 0\r
+r 49 0 9 0 292 0\r
+r 49 0 9 0 282 0\r
+r 49 0 9 0 280 0\r
+r 49 0 9 0 278 0\r
+r 49 0 9 0 277 0\r
+r 49 0 9 0 274 0\r
+r 49 0 9 0 273 0\r
+r 49 0 9 0 271 0\r
+r 49 0 9 0 269 0\r
+r 49 0 9 0 228 0\r
+r 49 0 9 0 225 0\r
+r 49 0 9 0 123 0\r
+r 49 0 9 0 118 0\r
+r 49 0 9 0 107 0\r
+r 49 0 9 0 106 0\r
+r 49 0 9 0 104 0\r
+r 49 0 9 0 53 0\r
+r 49 0 9 0 50 0\r
+r 49 0 9 0 46 0\r
+r 49 0 97 0 98 0\r
+r 49 0 1 0 69 0\r
+r 49 0 101 0 102 0\r
+r 49 0 93 0 100 0\r
+r 49 0 5 0 95 0\r
+r 49 0 6 0 96 0\r
+r 49 0 2919 0 86 0\r
+r 49 0 7 0 91 0\r
+r 49 0 7 0 77 0\r
+r 2098 0 2904 0 2075 0\r
+r 2098 0 1 0 10 0 s Has Head\r
+r 50 0 9 0 286 0\r
+r 50 0 9 0 284 0\r
+r 50 0 9 0 244 0\r
+r 50 0 9 0 226 0\r
+r 50 0 9 0 220 0\r
+r 50 0 9 0 217 0\r
+r 50 0 9 0 214 0\r
+r 50 0 9 0 211 0\r
+r 50 0 9 0 210 0\r
+r 50 0 9 0 208 0\r
+r 50 0 9 0 205 0\r
+r 50 0 9 0 203 0\r
+r 50 0 9 0 201 0\r
+r 50 0 9 0 198 0\r
+r 50 0 9 0 196 0\r
+r 50 0 9 0 190 0\r
+r 50 0 9 0 189 0\r
+r 50 0 9 0 187 0\r
+r 50 0 9 0 179 0\r
+r 50 0 9 0 175 0\r
+r 50 0 9 0 174 0\r
+r 50 0 9 0 171 0\r
+r 50 0 9 0 160 0\r
+r 50 0 9 0 157 0\r
+r 50 0 9 0 154 0\r
+r 50 0 9 0 151 0\r
+r 50 0 9 0 144 0\r
+r 50 0 9 0 130 0\r
+r 50 0 9 0 109 0\r
+r 50 0 9 0 99 0\r
+r 50 0 9 0 88 0\r
+r 50 0 9 0 69 0\r
+r 50 0 9 0 68 0\r
+r 50 0 9 0 63 0\r
+r 50 0 9 0 62 0\r
+r 50 0 9 0 57 0\r
+r 50 0 9 0 55 0\r
+r 50 0 9 0 52 0\r
+r 50 0 9 0 48 0\r
+r 50 0 9 0 42 0\r
+r 50 0 9 0 37 0\r
+r 50 0 9 0 36 0\r
+r 50 0 9 0 35 0\r
+r 50 0 9 0 34 0\r
+r 50 0 9 0 33 0\r
+r 50 0 9 0 32 0\r
+r 50 0 9 0 25 0\r
+r 50 0 9 0 24 0\r
+r 50 0 9 0 23 0\r
+r 50 0 9 0 22 0\r
+r 50 0 9 0 21 0\r
+r 50 0 9 0 20 0\r
+r 50 0 9 0 19 0\r
+r 50 0 9 0 18 0\r
+r 50 0 9 0 17 0\r
+r 50 0 9 0 16 0\r
+r 50 0 9 0 15 0\r
+r 50 0 9 0 14 0\r
+r 50 0 9 0 13 0\r
+r 50 0 9 0 12 0\r
+r 50 0 9 0 11 0\r
+r 50 0 9 0 10 0\r
+r 50 0 9 0 0 0\r
+r 50 0 1 0 48 0\r
+r 50 0 5 0 51 0\r
+r 50 0 7 0 49 0\r
+r 2099 0 2904 0 2071 0\r
+r 2099 0 1 0 10 0 s Has Angle\r
+r 51 0 2904 0 50 0\r
+r 51 0 1 0 10 0 s Types\r
+r 2100 0 2904 0 2073 0\r
+r 2100 0 1 0 10 0 s Has Tail\r
+r 52 0 136 0 131 0\r
+r 52 0 136 0 78 0\r
+r 52 0 136 0 45 0\r
+r 52 0 136 0 27 0\r
+r 52 0 136 0 4 0\r
+r 52 0 80 0 122 0\r
+r 52 0 104 0 135 0\r
+r 52 0 104 0 121 0\r
+r 52 0 104 0 120 0\r
+r 52 0 129 0 783 0\r
+r 52 0 129 0 467 0\r
+r 52 0 129 0 341 0\r
+r 52 0 129 0 321 0\r
+r 52 0 129 0 187 0\r
+r 52 0 129 0 174 0\r
+r 52 0 137 0 131 0\r
+r 52 0 137 0 78 0\r
+r 52 0 137 0 45 0\r
+r 52 0 137 0 27 0\r
+r 52 0 2906 0 168 0\r
+r 52 0 2906 0 140 0\r
+r 52 0 2906 0 138 0\r
+r 52 0 2907 0 923 0\r
+r 52 0 2907 0 30 0\r
+r 52 0 2907 0 4 0\r
+r 52 0 2907 0 1 0\r
+r 52 0 59 0 972 0\r
+r 52 0 59 0 919 0\r
+r 52 0 59 0 25 0\r
+r 52 0 131 0 156 0\r
+r 52 0 2908 0 285 0\r
+r 52 0 2908 0 273 0\r
+r 52 0 2908 0 145 0\r
+r 52 0 2908 0 131 0\r
+r 52 0 2908 0 70 0\r
+r 52 0 2908 0 45 0\r
+r 52 0 2908 0 26 0\r
+r 52 0 2908 0 4 0\r
+r 52 0 4 0 118 0\r
+r 52 0 5 0 2319 0\r
+r 52 0 78 0 119 0\r
+r 52 0 7 0 50 0\r
+r 2101 0 2904 0 2074 0\r
+r 2101 0 1 0 10 0 s Is Head Of\r
+r 53 0 9 0 365 0\r
+r 53 0 9 0 289 0\r
+r 53 0 9 0 288 0\r
+r 53 0 9 0 285 0\r
+r 53 0 9 0 283 0\r
+r 53 0 9 0 268 0\r
+r 53 0 9 0 267 0\r
+r 53 0 9 0 266 0\r
+r 53 0 9 0 265 0\r
+r 53 0 9 0 259 0\r
+r 53 0 9 0 254 0\r
+r 53 0 9 0 249 0\r
+r 53 0 9 0 248 0\r
+r 53 0 9 0 227 0\r
+r 53 0 9 0 224 0\r
+r 53 0 9 0 222 0\r
+r 53 0 9 0 219 0\r
+r 53 0 9 0 216 0\r
+r 53 0 9 0 213 0\r
+r 53 0 9 0 212 0\r
+r 53 0 9 0 207 0\r
+r 53 0 9 0 204 0\r
+r 53 0 9 0 202 0\r
+r 53 0 9 0 200 0\r
+r 53 0 9 0 195 0\r
+r 53 0 9 0 192 0\r
+r 53 0 9 0 185 0\r
+r 53 0 9 0 184 0\r
+r 53 0 9 0 161 0\r
+r 53 0 9 0 159 0\r
+r 53 0 9 0 158 0\r
+r 53 0 9 0 145 0\r
+r 53 0 9 0 143 0\r
+r 53 0 9 0 142 0\r
+r 53 0 9 0 141 0\r
+r 53 0 9 0 139 0\r
+r 53 0 9 0 137 0\r
+r 53 0 9 0 136 0\r
+r 53 0 9 0 134 0\r
+r 53 0 9 0 133 0\r
+r 53 0 9 0 132 0\r
+r 53 0 9 0 131 0\r
+r 53 0 9 0 129 0\r
+r 53 0 9 0 128 0\r
+r 53 0 9 0 127 0\r
+r 53 0 9 0 126 0\r
+r 53 0 9 0 116 0\r
+r 53 0 9 0 115 0\r
+r 53 0 9 0 114 0\r
+r 53 0 9 0 113 0\r
+r 53 0 9 0 112 0\r
+r 53 0 9 0 111 0\r
+r 53 0 9 0 110 0\r
+r 53 0 9 0 103 0\r
+r 53 0 9 0 101 0\r
+r 53 0 9 0 97 0\r
+r 53 0 9 0 94 0\r
+r 53 0 9 0 93 0\r
+r 53 0 9 0 80 0\r
+r 53 0 9 0 78 0\r
+r 53 0 9 0 72 0\r
+r 53 0 9 0 71 0\r
+r 53 0 9 0 70 0\r
+r 53 0 9 0 67 0\r
+r 53 0 9 0 66 0\r
+r 53 0 9 0 65 0\r
+r 53 0 9 0 64 0\r
+r 53 0 9 0 61 0\r
+r 53 0 9 0 60 0\r
+r 53 0 9 0 59 0\r
+r 53 0 9 0 45 0\r
+r 53 0 9 0 44 0\r
+r 53 0 9 0 43 0\r
+r 53 0 9 0 41 0\r
+r 53 0 9 0 40 0\r
+r 53 0 9 0 39 0\r
+r 53 0 9 0 38 0\r
+r 53 0 9 0 31 0\r
+r 53 0 9 0 30 0\r
+r 53 0 9 0 29 0\r
+r 53 0 9 0 28 0\r
+r 53 0 9 0 27 0\r
+r 53 0 9 0 26 0\r
+r 53 0 9 0 9 0\r
+r 53 0 9 0 8 0\r
+r 53 0 9 0 7 0\r
+r 53 0 9 0 6 0\r
+r 53 0 9 0 5 0\r
+r 53 0 9 0 4 0\r
+r 53 0 9 0 3 0\r
+r 53 0 9 0 2 0\r
+r 53 0 9 0 1 0\r
+r 53 0 1 0 55 0\r
+r 53 0 5 0 54 0\r
+r 53 0 7 0 49 0\r
+r 2102 0 2904 0 2072 0\r
+r 2102 0 1 0 10 0 s Is Tail Of\r
+r 54 0 2904 0 53 0\r
+r 54 0 1 0 10 0 s Relations\r
+r 2103 0 2904 0 2054 0\r
+r 2103 0 1 0 10 0 s Sysdyn Namespace\r
+r 55 0 2906 0 170 0\r
+r 55 0 59 0 1092 0\r
+r 55 0 59 0 837 0\r
+r 55 0 59 0 669 0\r
+r 55 0 59 0 415 0\r
+r 55 0 59 0 53 0\r
+r 55 0 27 0 169 0\r
+r 55 0 4 0 57 0\r
+r 55 0 5 0 2421 0\r
+r 55 0 7 0 50 0\r
+r 2104 0 2904 0 2070 0\r
+r 2104 0 1 0 10 0 s Cloud\r
+r 56 1 64 0 371 0\r
+r 56 1 9 0 91 0\r
+r 56 1 9 0 89 0\r
+r 56 1 9 0 75 0\r
+r 56 1 9 0 74 0\r
+r 56 1 9 0 73 0\r
+r 56 1 1 0 57 0\r
+r 56 1 5 0 2309 0\r
+r 2105 0 2904 0 2062 0\r
+r 2105 0 1 0 10 0 s Has X\r
+r 57 0 104 0 162 0\r
+r 57 0 136 0 9 0\r
+r 57 0 129 0 1108 0\r
+r 57 0 129 0 1107 0\r
+r 57 0 129 0 1106 0\r
+r 57 0 129 0 1078 0\r
+r 57 0 129 0 924 0\r
+r 57 0 129 0 921 0\r
+r 57 0 129 0 882 0\r
+r 57 0 129 0 879 0\r
+r 57 0 129 0 640 0\r
+r 57 0 129 0 428 0\r
+r 57 0 129 0 424 0\r
+r 57 0 129 0 376 0\r
+r 57 0 129 0 179 0\r
+r 57 0 129 0 175 0\r
+r 57 0 129 0 171 0\r
+r 57 0 129 0 69 0\r
+r 57 0 129 0 63 0\r
+r 57 0 129 0 55 0\r
+r 57 0 129 0 48 0\r
+r 57 0 137 0 9 0\r
+r 57 0 2907 0 377 0\r
+r 57 0 59 0 1055 0\r
+r 57 0 59 0 1030 0\r
+r 57 0 59 0 1025 0\r
+r 57 0 59 0 782 0\r
+r 57 0 59 0 758 0\r
+r 57 0 59 0 454 0\r
+r 57 0 59 0 401 0\r
+r 57 0 59 0 301 0\r
+r 57 0 59 0 292 0\r
+r 57 0 59 0 228 0\r
+r 57 0 59 0 91 0\r
+r 57 0 59 0 89 0\r
+r 57 0 59 0 76 0\r
+r 57 0 59 0 75 0\r
+r 57 0 59 0 74 0\r
+r 57 0 59 0 73 0\r
+r 57 0 59 0 56 1\r
+r 57 0 4 0 25 0\r
+r 57 0 5 0 2325 0\r
+r 57 0 7 0 50 0\r
+r 2106 0 2904 0 2064 0\r
+r 2106 0 1 0 10 0 s Has Y\r
+r 58 0 1 0 160 0\r
+r 58 0 259 0 58 0\r
+r 58 0 61 0 256 0\r
+r 58 0 5 0 255 0\r
+r 58 0 254 0 258 0\r
+r 58 0 78 0 257 0\r
+r 58 0 7 0 73 0\r
+r 59 0 2 0 111 0\r
+r 59 0 3 0 1 0\r
+r 59 0 5 0 2250 0\r
+r 59 0 7 0 53 0\r
+r 2107 0 2904 0 2059 0\r
+r 2107 0 1 0 10 0 s Variable\r
+r 2108 0 2904 0 2060 0\r
+r 2108 0 1 0 10 0 s Dependency\r
+r 60 0 2 0 112 0\r
+r 60 0 3 0 2 0\r
+r 60 0 5 0 2233 0\r
+r 60 0 7 0 53 0\r
+r 2109 0 2904 0 2083 0\r
+r 2109 0 1 0 10 0 s Foo\r
+r 61 0 2 0 94 0\r
+r 61 0 3 0 2918 0\r
+r 61 0 28 0 10 0\r
+r 61 0 5 0 2391 0\r
+r 61 0 7 0 53 0\r
+r 61 0 2911 0 252 0\r
+r 2110 0 2904 0 2067 0\r
+r 2110 0 1 0 10 0 s Auxiliary\r
+r 62 0 104 0 108 0\r
+r 62 0 104 0 105 0\r
+r 62 0 2906 0 395 0\r
+r 62 0 2906 0 183 0\r
+r 62 0 2907 0 64 0\r
+r 62 0 59 0 2054 0\r
+r 62 0 59 0 1351 0\r
+r 62 0 59 0 1098 0\r
+r 62 0 59 0 1018 0\r
+r 62 0 59 0 901 0\r
+r 62 0 59 0 893 0\r
+r 62 0 59 0 843 0\r
+r 62 0 59 0 733 0\r
+r 62 0 59 0 675 0\r
+r 62 0 59 0 533 0\r
+r 62 0 59 0 464 0\r
+r 62 0 59 0 450 0\r
+r 62 0 59 0 422 0\r
+r 62 0 59 0 371 0\r
+r 62 0 59 0 86 0\r
+r 62 0 2908 0 65 0\r
+r 62 0 4 0 25 0\r
+r 62 0 5 0 2265 0\r
+r 62 0 7 0 50 0\r
+r 2111 0 2904 0 454 0\r
+r 2111 0 1 0 10 0 s Features\r
+r 63 0 2906 0 183 0\r
+r 63 0 59 0 85 0\r
+r 63 0 27 0 182 0\r
+r 63 0 4 0 57 0\r
+r 63 0 5 0 2332 0\r
+r 63 0 7 0 50 0\r
+r 2112 0 2904 0 453 0\r
+r 2112 0 1 0 10 0 s Symbol Manager Feature\r
+r 64 0 2 0 9 0\r
+r 64 0 3 0 200 0\r
+r 64 0 28 0 62 0\r
+r 64 0 5 0 2275 0\r
+r 64 0 7 0 53 0\r
+r 2113 0 2904 0 494 0\r
+r 2113 0 1 0 10 0 s Value\r
+r 65 0 2 0 103 0\r
+r 65 0 3 0 2919 0\r
+r 65 0 5 0 2330 0\r
+r 65 0 29 0 62 0\r
+r 65 0 7 0 53 0\r
+r 65 0 2911 0 108 0\r
+r 2114 0 2904 0 480 0\r
+r 2114 0 1 0 10 0 s Structural Consists Of\r
+r 66 0 128 0 66 0\r
+r 66 0 2 0 110 0\r
+r 66 0 3 0 67 0\r
+r 66 0 28 0 0 0\r
+r 66 0 5 0 2310 0\r
+r 66 0 29 0 0 0\r
+r 66 0 7 0 53 0\r
+r 66 0 2911 0 150 0\r
+r 2115 0 2904 0 515 0\r
+r 2115 0 1 0 10 0 s Has Cardinality Restriction\r
+r 67 0 2 0 111 0\r
+r 67 0 3 0 66 0\r
+r 67 0 5 0 2402 0\r
+r 67 0 7 0 53 0\r
+r 2116 0 2904 0 474 0\r
+r 2116 0 1 0 10 0 s Is Defined By\r
+r 68 0 104 0 150 0\r
+r 68 0 59 0 133 0\r
+r 68 0 59 0 4 0\r
+r 68 0 59 0 2 0\r
+r 68 0 4 0 0 0\r
+r 68 0 5 0 2381 0\r
+r 68 0 78 0 149 0\r
+r 68 0 7 0 50 0\r
+r 2117 0 2904 0 482 0\r
+r 2117 0 1 0 10 0 s Composite\r
+r 69 0 80 0 166 0\r
+r 69 0 104 0 165 0\r
+r 69 0 104 0 164 0\r
+r 69 0 104 0 163 0\r
+r 69 0 59 0 2048 0\r
+r 69 0 59 0 1347 0\r
+r 69 0 59 0 1091 0\r
+r 69 0 59 0 1013 0\r
+r 69 0 59 0 895 0\r
+r 69 0 59 0 886 0\r
+r 69 0 59 0 836 0\r
+r 69 0 59 0 729 0\r
+r 69 0 59 0 668 0\r
+r 69 0 59 0 527 0\r
+r 69 0 59 0 458 0\r
+r 69 0 59 0 444 0\r
+r 69 0 59 0 414 0\r
+r 69 0 59 0 366 0\r
+r 69 0 59 0 49 0\r
+r 69 0 131 0 155 0\r
+r 69 0 2908 0 93 0\r
+r 69 0 2908 0 44 0\r
+r 69 0 4 0 57 0\r
+r 69 0 5 0 2322 0\r
+r 69 0 7 0 50 0\r
+r 2118 0 2904 0 466 0\r
+r 2118 0 1 0 10 0 s Component\r
+r 70 0 2 0 110 0\r
+r 70 0 3 0 2920 0\r
+r 70 0 28 0 151 0\r
+r 70 0 5 0 2431 0\r
+r 70 0 29 0 52 0\r
+r 70 0 7 0 53 0\r
+r 2119 0 2904 0 464 0\r
+r 2119 0 1 0 10 0 s Structural Namespace\r
+r 71 0 1 0 42 0\r
+r 71 0 2 0 110 0\r
+r 71 0 3 0 2921 0\r
+r 71 0 5 0 2287 0\r
+r 71 0 7 0 53 0\r
+r 71 0 2911 0 298 0\r
+r 71 0 2911 0 296 0\r
+r 71 0 2911 0 294 0\r
+r 71 0 2911 0 152 0\r
+r 2120 0 2904 0 491 0\r
+r 2120 0 1 0 10 0 s Variable Relation\r
+r 72 0 1 0 42 0\r
+r 72 0 2 0 110 0\r
+r 72 0 3 0 2922 0\r
+r 72 0 5 0 2273 0\r
+r 72 0 29 0 151 0\r
+r 72 0 7 0 53 0\r
+r 72 0 2911 0 153 0\r
+r 2121 0 2904 0 518 0\r
+r 2121 0 1 0 10 0 s Connection Direction\r
+r 73 0 9 0 260 0\r
+r 73 0 9 0 58 0\r
+r 73 0 1 0 57 0\r
+r 73 0 5 0 2394 0\r
+r 73 0 7 0 56 1\r
+r 2122 0 2904 0 507 0\r
+r 2122 0 1 0 10 0 s Is Connected\r
+r 74 0 9 0 83 0\r
+r 74 0 9 0 77 0\r
+r 74 0 1 0 57 0\r
+r 74 0 5 0 2338 0\r
+r 74 0 7 0 56 1\r
+r 2123 0 2904 0 497 0\r
+r 2123 0 1 0 10 0 s Expression\r
+r 75 0 9 0 374 0\r
+r 75 0 9 0 76 0\r
+r 75 0 1 0 57 0\r
+r 75 0 5 0 2261 0\r
+r 75 0 7 0 56 1\r
+r 2124 0 2904 0 511 0\r
+r 2124 0 1 0 10 0 s Supports Connection Type\r
+r 76 0 1 0 57 0\r
+r 76 0 5 0 2434 0\r
+r 76 0 7 0 75 0\r
+r 2125 0 2904 0 501 0\r
+r 2125 0 1 0 10 0 s Value Relation\r
+r 77 0 80 0 82 0\r
+r 77 0 80 0 81 0\r
+r 77 0 1 0 376 0\r
+r 77 0 9 0 2048 0\r
+r 77 0 9 0 1347 0\r
+r 77 0 9 0 1091 0\r
+r 77 0 9 0 1013 0\r
+r 77 0 9 0 895 0\r
+r 77 0 9 0 886 0\r
+r 77 0 9 0 836 0\r
+r 77 0 9 0 729 0\r
+r 77 0 9 0 668 0\r
+r 77 0 9 0 527 0\r
+r 77 0 9 0 458 0\r
+r 77 0 9 0 444 0\r
+r 77 0 9 0 414 0\r
+r 77 0 9 0 366 0\r
+r 77 0 9 0 85 0\r
+r 77 0 9 0 49 0\r
+r 77 0 379 0 891 0\r
+r 77 0 5 0 2302 0\r
+r 77 0 78 0 79 0\r
+r 77 0 7 0 74 0\r
+r 2126 0 2904 0 493 0\r
+r 2126 0 1 0 10 0 s Variable Of\r
+r 78 0 1 0 42 0\r
+r 78 0 2 0 94 0\r
+r 78 0 3 0 2923 0\r
+r 78 0 139 0 52 0\r
+r 78 0 28 0 10 0\r
+r 78 0 5 0 2285 0\r
+r 78 0 141 0 52 0\r
+r 78 0 126 0 194 0\r
+r 78 0 7 0 53 0\r
+r 78 0 2911 0 251 0\r
+r 2127 0 2904 0 488 0\r
+r 2127 0 1 0 10 0 s Is Bound By\r
+r 79 0 1 0 10 0 s This project is a container for all available ontologies.\r
+r 79 0 2923 0 77 0\r
+r 2128 0 2904 0 476 0\r
+r 2128 0 1 0 10 0 s Defines\r
+r 80 0 2 0 94 0\r
+r 80 0 3 0 2924 0\r
+r 80 0 28 0 10 0\r
+r 80 0 5 0 2387 0\r
+r 80 0 7 0 53 0\r
+r 2129 0 2904 0 520 0\r
+r 2129 0 1 0 10 0 s Output Direction\r
+r 81 0 1 0 10 0 s This will probably be deprecated in the future.\r
+r 81 0 2924 0 77 0\r
+r 2130 0 2904 0 485 0\r
+r 2130 0 1 0 10 0 s Ordered Composite\r
+r 82 0 1 0 10 0 s These comments are for testing purposes.\r
+r 82 0 2924 0 77 0\r
+r 2131 0 2904 0 489 0\r
+r 2131 0 1 0 10 0 s Literal Variable\r
+r 83 0 1 0 376 0\r
+r 83 0 379 0 410 0\r
+r 83 0 5 0 2262 0\r
+r 83 0 78 0 84 0\r
+r 83 0 7 0 74 0\r
+r 2132 0 2904 0 513 0\r
+r 2132 0 1 0 10 0 s Has Connection Type\r
+r 84 0 1 0 10 0 s This project is used to access administration tools.\r
+r 84 0 2923 0 83 0\r
+r 2133 0 2904 0 479 0\r
+r 2133 0 1 0 10 0 s Is Parameter Of\r
+r 85 0 9 0 2054 0\r
+r 85 0 9 0 1351 0\r
+r 85 0 9 0 1098 0\r
+r 85 0 9 0 1018 0\r
+r 85 0 9 0 901 0\r
+r 85 0 9 0 893 0\r
+r 85 0 9 0 843 0\r
+r 85 0 9 0 733 0\r
+r 85 0 9 0 675 0\r
+r 85 0 9 0 533 0\r
+r 85 0 9 0 464 0\r
+r 85 0 9 0 450 0\r
+r 85 0 9 0 422 0\r
+r 85 0 9 0 371 0\r
+r 85 0 9 0 86 0\r
+r 85 0 1 0 63 0\r
+r 85 0 5 0 2392 0\r
+r 85 0 7 0 77 0\r
+r 2134 0 2904 0 522 0\r
+r 2134 0 1 0 10 0 s Has Lower Bound\r
+r 86 0 65 0 49 0\r
+r 86 0 1 0 62 0\r
+r 86 0 6 0 87 0\r
+r 86 0 7 0 85 0\r
+r 2135 0 2904 0 506 0\r
+r 2135 0 1 0 10 0 s Connection Relation\r
+r 87 0 2905 0 86 0\r
+r 87 0 1 0 88 0 s http://www.vtt.fi/Simantics/Layer0/1.0\r
+r 2136 0 2904 0 512 0\r
+r 2136 0 1 0 10 0 s Connection Type\r
+r 88 0 129 0 198 0\r
+r 88 0 2906 0 395 0\r
+r 88 0 2907 0 6 0\r
+r 88 0 59 0 2055 0\r
+r 88 0 59 0 2050 0\r
+r 88 0 59 0 1355 0\r
+r 88 0 59 0 1352 0\r
+r 88 0 59 0 1349 0\r
+r 88 0 59 0 1099 0\r
+r 88 0 59 0 1095 0\r
+r 88 0 59 0 1019 0\r
+r 88 0 59 0 1015 0\r
+r 88 0 59 0 902 0\r
+r 88 0 59 0 897 0\r
+r 88 0 59 0 894 0\r
+r 88 0 59 0 888 0\r
+r 88 0 59 0 844 0\r
+r 88 0 59 0 840 0\r
+r 88 0 59 0 734 0\r
+r 88 0 59 0 731 0\r
+r 88 0 59 0 676 0\r
+r 88 0 59 0 672 0\r
+r 88 0 59 0 534 0\r
+r 88 0 59 0 529 0\r
+r 88 0 59 0 465 0\r
+r 88 0 59 0 460 0\r
+r 88 0 59 0 452 0\r
+r 88 0 59 0 446 0\r
+r 88 0 59 0 423 0\r
+r 88 0 59 0 418 0\r
+r 88 0 59 0 373 0\r
+r 88 0 59 0 368 0\r
+r 88 0 59 0 96 0\r
+r 88 0 59 0 87 0\r
+r 88 0 4 0 10 0\r
+r 88 0 5 0 2342 0\r
+r 88 0 78 0 197 0\r
+r 88 0 7 0 50 0\r
+r 2137 0 2904 0 487 0\r
+r 2137 0 1 0 10 0 s Binds\r
+r 89 0 9 0 2048 0\r
+r 89 0 9 0 1347 0\r
+r 89 0 9 0 1013 0\r
+r 89 0 9 0 895 0\r
+r 89 0 9 0 886 0\r
+r 89 0 9 0 836 0\r
+r 89 0 9 0 729 0\r
+r 89 0 9 0 668 0\r
+r 89 0 9 0 527 0\r
+r 89 0 9 0 458 0\r
+r 89 0 9 0 444 0\r
+r 89 0 9 0 414 0\r
+r 89 0 9 0 366 0\r
+r 89 0 1 0 57 0\r
+r 89 0 5 0 90 0\r
+r 89 0 7 0 56 1\r
+r 2138 0 2904 0 509 0\r
+r 2138 0 1 0 10 0 s Is Connected To\r
+r 90 0 2904 0 89 0\r
+r 90 0 1 0 10 0 s http://www.simantics.org\r
+r 2139 0 2904 0 472 0\r
+r 2139 0 1 0 10 0 s Has Parameter\r
+r 91 0 9 0 1091 0\r
+r 91 0 9 0 49 0\r
+r 91 0 1 0 57 0\r
+r 91 0 5 0 92 0\r
+r 91 0 7 0 56 1\r
+r 2140 0 2904 0 467 0\r
+r 2140 0 1 0 10 0 s Component Type\r
+r 92 0 2904 0 91 0\r
+r 92 0 1 0 10 0 s http://www.vtt.fi/Simantics\r
+r 2141 0 2904 0 503 0\r
+r 2141 0 1 0 10 0 s Connection\r
+r 93 0 2 0 94 0\r
+r 93 0 3 0 2925 0\r
+r 93 0 28 0 10 0\r
+r 93 0 5 0 2308 0\r
+r 93 0 29 0 69 0\r
+r 93 0 7 0 53 0\r
+r 2142 0 2904 0 477 0\r
+r 2142 0 1 0 10 0 s Variable\r
+r 94 0 2 0 113 0\r
+r 94 0 3 0 184 0\r
+r 94 0 139 0 160 0\r
+r 94 0 60 0 2071 0\r
+r 94 0 60 0 2064 0\r
+r 94 0 60 0 2062 0\r
+r 94 0 60 0 1377 0\r
+r 94 0 60 0 1346 0\r
+r 94 0 60 0 1344 0\r
+r 94 0 60 0 1341 0\r
+r 94 0 60 0 1335 0\r
+r 94 0 60 0 1317 0\r
+r 94 0 60 0 1315 0\r
+r 94 0 60 0 1312 0\r
+r 94 0 60 0 1310 0\r
+r 94 0 60 0 1308 0\r
+r 94 0 60 0 1304 0\r
+r 94 0 60 0 1302 0\r
+r 94 0 60 0 1283 0\r
+r 94 0 60 0 1282 0\r
+r 94 0 60 0 1281 0\r
+r 94 0 60 0 1280 0\r
+r 94 0 60 0 1276 0\r
+r 94 0 60 0 1274 0\r
+r 94 0 60 0 1187 0\r
+r 94 0 60 0 1186 0\r
+r 94 0 60 0 1185 0\r
+r 94 0 60 0 1184 0\r
+r 94 0 60 0 1183 0\r
+r 94 0 60 0 1178 0\r
+r 94 0 60 0 1177 0\r
+r 94 0 60 0 1176 0\r
+r 94 0 60 0 1175 0\r
+r 94 0 60 0 1168 0\r
+r 94 0 60 0 1167 0\r
+r 94 0 60 0 1162 0\r
+r 94 0 60 0 1161 0\r
+r 94 0 60 0 1153 0\r
+r 94 0 60 0 1147 0\r
+r 94 0 60 0 1088 0\r
+r 94 0 60 0 1086 0\r
+r 94 0 60 0 1081 0\r
+r 94 0 60 0 1006 0\r
+r 94 0 60 0 1004 0\r
+r 94 0 60 0 996 0\r
+r 94 0 60 0 995 0\r
+r 94 0 60 0 994 0\r
+r 94 0 60 0 992 0\r
+r 94 0 60 0 929 0\r
+r 94 0 60 0 927 0\r
+r 94 0 60 0 918 0\r
+r 94 0 60 0 872 0\r
+r 94 0 60 0 871 0\r
+r 94 0 60 0 851 0\r
+r 94 0 60 0 850 0\r
+r 94 0 60 0 849 0\r
+r 94 0 60 0 848 0\r
+r 94 0 60 0 847 0\r
+r 94 0 60 0 807 0\r
+r 94 0 60 0 805 0\r
+r 94 0 60 0 790 0\r
+r 94 0 60 0 788 0\r
+r 94 0 60 0 786 0\r
+r 94 0 60 0 742 0\r
+r 94 0 60 0 736 0\r
+r 94 0 60 0 719 0\r
+r 94 0 60 0 654 0\r
+r 94 0 60 0 653 0\r
+r 94 0 60 0 649 0\r
+r 94 0 60 0 639 0\r
+r 94 0 60 0 630 0\r
+r 94 0 60 0 629 0\r
+r 94 0 60 0 628 0\r
+r 94 0 60 0 625 0\r
+r 94 0 60 0 606 0\r
+r 94 0 60 0 605 0\r
+r 94 0 60 0 601 0\r
+r 94 0 60 0 592 0\r
+r 94 0 60 0 591 0\r
+r 94 0 60 0 590 0\r
+r 94 0 60 0 589 0\r
+r 94 0 60 0 576 0\r
+r 94 0 60 0 574 0\r
+r 94 0 60 0 572 0\r
+r 94 0 60 0 570 0\r
+r 94 0 60 0 566 0\r
+r 94 0 60 0 564 0\r
+r 94 0 60 0 560 0\r
+r 94 0 60 0 558 0\r
+r 94 0 60 0 556 0\r
+r 94 0 60 0 554 0\r
+r 94 0 60 0 552 0\r
+r 94 0 60 0 548 0\r
+r 94 0 60 0 524 0\r
+r 94 0 60 0 522 0\r
+r 94 0 60 0 469 0\r
+r 94 0 60 0 394 0\r
+r 94 0 60 0 380 0\r
+r 94 0 60 0 289 0\r
+r 94 0 60 0 283 0\r
+r 94 0 60 0 280 0\r
+r 94 0 60 0 271 0\r
+r 94 0 60 0 254 0\r
+r 94 0 60 0 248 0\r
+r 94 0 60 0 204 0\r
+r 94 0 60 0 202 0\r
+r 94 0 60 0 195 0\r
+r 94 0 60 0 192 0\r
+r 94 0 60 0 185 0\r
+r 94 0 60 0 159 0\r
+r 94 0 60 0 158 0\r
+r 94 0 60 0 126 0\r
+r 94 0 60 0 101 0\r
+r 94 0 60 0 97 0\r
+r 94 0 60 0 93 0\r
+r 94 0 60 0 80 0\r
+r 94 0 60 0 78 0\r
+r 94 0 60 0 61 0\r
+r 94 0 60 0 45 0\r
+r 94 0 60 0 44 0\r
+r 94 0 60 0 39 0\r
+r 94 0 60 0 6 0\r
+r 94 0 60 0 5 0\r
+r 94 0 28 0 24 0\r
+r 94 0 5 0 2365 0\r
+r 94 0 141 0 160 0\r
+r 94 0 7 0 53 0\r
+r 94 0 2911 0 287 0\r
+r 2143 0 2904 0 469 0\r
+r 2143 0 1 0 10 0 s Has Value\r
+r 95 0 2904 0 49 0\r
+r 95 0 1 0 10 0 s Layer0-1.0\r
+r 2144 0 2904 0 524 0\r
+r 2144 0 1 0 10 0 s Has Upper Bound\r
+r 96 0 2905 0 49 0\r
+r 96 0 1 0 88 0 s http://www.vtt.fi/Simantics/Layer0/1.0\r
+r 2145 0 2904 0 508 0\r
+r 2145 0 1 0 10 0 s Directed Connection Relation\r
+r 97 0 1 0 42 0\r
+r 97 0 2 0 94 0\r
+r 97 0 3 0 2926 0\r
+r 97 0 28 0 99 0\r
+r 97 0 5 0 2366 0\r
+r 97 0 7 0 53 0\r
+r 97 0 2911 0 748 0\r
+r 97 0 2911 0 164 0\r
+r 2146 0 2904 0 526 0\r
+r 2146 0 1 0 10 0 s Has Connection Direction\r
+r 98 0 1 0 99 0 s 1.0\r
+r 98 0 2926 0 49 0\r
+r 2147 0 2904 0 504 0\r
+r 2147 0 1 0 10 0 s Connection Variable\r
+r 99 0 2907 0 97 0\r
+r 99 0 59 0 2051 0\r
+r 99 0 59 0 1350 0\r
+r 99 0 59 0 1096 0\r
+r 99 0 59 0 1016 0\r
+r 99 0 59 0 898 0\r
+r 99 0 59 0 889 0\r
+r 99 0 59 0 841 0\r
+r 99 0 59 0 732 0\r
+r 99 0 59 0 673 0\r
+r 99 0 59 0 530 0\r
+r 99 0 59 0 461 0\r
+r 99 0 59 0 447 0\r
+r 99 0 59 0 419 0\r
+r 99 0 59 0 369 0\r
+r 99 0 59 0 98 0\r
+r 99 0 4 0 10 0\r
+r 99 0 5 0 2300 0\r
+r 99 0 7 0 50 0\r
+r 2148 0 2904 0 516 0\r
+r 2148 0 1 0 10 0 s Cardinality Restriction\r
+r 100 0 1 0 10 0 s org.simantics.db.Builtins\r
+r 100 0 2925 0 49 0\r
+r 2149 0 2904 0 517 0\r
+r 2149 0 1 0 10 0 s Supports Direction\r
+r 101 0 2 0 94 0\r
+r 101 0 3 0 2927 0\r
+r 101 0 28 0 10 0\r
+r 101 0 5 0 2286 0\r
+r 101 0 7 0 53 0\r
+r 101 0 2911 0 165 0\r
+r 2150 0 2904 0 510 0\r
+r 2150 0 1 0 10 0 s Is Connected From\r
+r 102 0 1 0 10 0 s layer0\r
+r 102 0 2927 0 49 0\r
+r 2151 0 2904 0 481 0\r
+r 2151 0 1 0 10 0 s Structural Part Of\r
+r 103 0 2 0 110 0\r
+r 103 0 3 0 112 0\r
+r 103 0 60 0 885 0\r
+r 103 0 60 0 846 0\r
+r 103 0 60 0 744 0\r
+r 103 0 60 0 743 0\r
+r 103 0 60 0 737 0\r
+r 103 0 60 0 703 0\r
+r 103 0 60 0 663 0\r
+r 103 0 60 0 543 0\r
+r 103 0 60 0 538 0\r
+r 103 0 60 0 507 0\r
+r 103 0 60 0 492 0\r
+r 103 0 60 0 440 0\r
+r 103 0 60 0 438 0\r
+r 103 0 60 0 435 0\r
+r 103 0 60 0 433 0\r
+r 103 0 60 0 388 0\r
+r 103 0 60 0 379 0\r
+r 103 0 60 0 285 0\r
+r 103 0 60 0 249 0\r
+r 103 0 60 0 224 0\r
+r 103 0 60 0 222 0\r
+r 103 0 60 0 216 0\r
+r 103 0 60 0 213 0\r
+r 103 0 60 0 212 0\r
+r 103 0 60 0 207 0\r
+r 103 0 60 0 133 0\r
+r 103 0 60 0 127 0\r
+r 103 0 60 0 113 0\r
+r 103 0 60 0 65 0\r
+r 103 0 60 0 41 0\r
+r 103 0 60 0 40 0\r
+r 103 0 60 0 30 0\r
+r 103 0 60 0 29 0\r
+r 103 0 60 0 28 0\r
+r 103 0 60 0 27 0\r
+r 103 0 60 0 9 0\r
+r 103 0 60 0 4 0\r
+r 103 0 60 0 3 0\r
+r 103 0 60 0 2 0\r
+r 103 0 5 0 2424 0\r
+r 103 0 7 0 53 0\r
+r 103 0 2911 0 923 0\r
+r 2152 0 2904 0 519 0\r
+r 2152 0 1 0 10 0 s Input Direction\r
+r 104 0 2 0 111 0\r
+r 104 0 2 0 110 0\r
+r 104 0 3 0 365 0\r
+r 104 0 5 0 2420 0\r
+r 104 0 2911 0 121 0\r
+r 104 0 7 0 49 0\r
+r 2153 0 2904 0 492 0\r
+r 2153 0 1 0 10 0 s Has Variable\r
+r 105 0 1 0 106 0\r
+r 105 0 365 0 62 0\r
+r 105 0 38 0 6 0\r
+r 105 0 39 0 107 0\r
+r 2154 0 2904 0 820 0\r
+r 2154 0 1 0 10 0 s Int16\r
+r 106 0 2907 0 121 0\r
+r 106 0 59 0 2081 0\r
+r 106 0 59 0 2080 0\r
+r 106 0 59 0 2078 0\r
+r 106 0 59 0 2077 0\r
+r 106 0 59 0 2076 0\r
+r 106 0 59 0 2066 0\r
+r 106 0 59 0 2063 0\r
+r 106 0 59 0 2061 0\r
+r 106 0 59 0 1345 0\r
+r 106 0 59 0 1343 0\r
+r 106 0 59 0 1340 0\r
+r 106 0 59 0 1316 0\r
+r 106 0 59 0 1314 0\r
+r 106 0 59 0 1311 0\r
+r 106 0 59 0 1309 0\r
+r 106 0 59 0 1307 0\r
+r 106 0 59 0 1306 0\r
+r 106 0 59 0 1305 0\r
+r 106 0 59 0 1303 0\r
+r 106 0 59 0 1301 0\r
+r 106 0 59 0 1300 0\r
+r 106 0 59 0 1299 0\r
+r 106 0 59 0 1297 0\r
+r 106 0 59 0 1294 0\r
+r 106 0 59 0 1287 0\r
+r 106 0 59 0 1286 0\r
+r 106 0 59 0 1285 0\r
+r 106 0 59 0 1275 0\r
+r 106 0 59 0 1273 0\r
+r 106 0 59 0 1271 0\r
+r 106 0 59 0 1260 0\r
+r 106 0 59 0 1259 0\r
+r 106 0 59 0 1258 0\r
+r 106 0 59 0 1256 0\r
+r 106 0 59 0 1255 0\r
+r 106 0 59 0 1254 0\r
+r 106 0 59 0 1252 0\r
+r 106 0 59 0 1251 0\r
+r 106 0 59 0 1249 0\r
+r 106 0 59 0 1248 0\r
+r 106 0 59 0 1246 0\r
+r 106 0 59 0 1244 0\r
+r 106 0 59 0 1243 0\r
+r 106 0 59 0 1242 0\r
+r 106 0 59 0 1241 0\r
+r 106 0 59 0 1240 0\r
+r 106 0 59 0 1239 0\r
+r 106 0 59 0 1237 0\r
+r 106 0 59 0 1236 0\r
+r 106 0 59 0 1235 0\r
+r 106 0 59 0 1234 0\r
+r 106 0 59 0 1233 0\r
+r 106 0 59 0 1232 0\r
+r 106 0 59 0 1230 0\r
+r 106 0 59 0 1229 0\r
+r 106 0 59 0 1228 0\r
+r 106 0 59 0 1227 0\r
+r 106 0 59 0 1225 0\r
+r 106 0 59 0 1224 0\r
+r 106 0 59 0 1223 0\r
+r 106 0 59 0 1222 0\r
+r 106 0 59 0 1220 0\r
+r 106 0 59 0 1219 0\r
+r 106 0 59 0 1218 0\r
+r 106 0 59 0 1217 0\r
+r 106 0 59 0 1207 0\r
+r 106 0 59 0 1206 0\r
+r 106 0 59 0 1205 0\r
+r 106 0 59 0 1204 0\r
+r 106 0 59 0 1203 0\r
+r 106 0 59 0 1202 0\r
+r 106 0 59 0 1182 0\r
+r 106 0 59 0 1181 0\r
+r 106 0 59 0 1180 0\r
+r 106 0 59 0 1165 0\r
+r 106 0 59 0 1164 0\r
+r 106 0 59 0 1152 0\r
+r 106 0 59 0 1151 0\r
+r 106 0 59 0 1146 0\r
+r 106 0 59 0 1143 0\r
+r 106 0 59 0 1140 0\r
+r 106 0 59 0 1137 0\r
+r 106 0 59 0 1136 0\r
+r 106 0 59 0 1135 0\r
+r 106 0 59 0 1132 0\r
+r 106 0 59 0 1130 0\r
+r 106 0 59 0 1128 0\r
+r 106 0 59 0 1117 0\r
+r 106 0 59 0 1114 0\r
+r 106 0 59 0 1112 0\r
+r 106 0 59 0 1110 0\r
+r 106 0 59 0 1087 0\r
+r 106 0 59 0 1085 0\r
+r 106 0 59 0 1080 0\r
+r 106 0 59 0 1079 0\r
+r 106 0 59 0 1010 0\r
+r 106 0 59 0 1009 0\r
+r 106 0 59 0 1003 0\r
+r 106 0 59 0 1002 0\r
+r 106 0 59 0 1001 0\r
+r 106 0 59 0 990 0\r
+r 106 0 59 0 988 0\r
+r 106 0 59 0 987 0\r
+r 106 0 59 0 986 0\r
+r 106 0 59 0 985 0\r
+r 106 0 59 0 984 0\r
+r 106 0 59 0 983 0\r
+r 106 0 59 0 969 0\r
+r 106 0 59 0 964 0\r
+r 106 0 59 0 963 0\r
+r 106 0 59 0 962 0\r
+r 106 0 59 0 961 0\r
+r 106 0 59 0 960 0\r
+r 106 0 59 0 945 0\r
+r 106 0 59 0 944 0\r
+r 106 0 59 0 943 0\r
+r 106 0 59 0 923 0\r
+r 106 0 59 0 922 0\r
+r 106 0 59 0 915 0\r
+r 106 0 59 0 914 0\r
+r 106 0 59 0 910 0\r
+r 106 0 59 0 906 0\r
+r 106 0 59 0 878 0\r
+r 106 0 59 0 877 0\r
+r 106 0 59 0 876 0\r
+r 106 0 59 0 875 0\r
+r 106 0 59 0 870 0\r
+r 106 0 59 0 869 0\r
+r 106 0 59 0 868 0\r
+r 106 0 59 0 867 0\r
+r 106 0 59 0 866 0\r
+r 106 0 59 0 861 0\r
+r 106 0 59 0 860 0\r
+r 106 0 59 0 859 0\r
+r 106 0 59 0 858 0\r
+r 106 0 59 0 857 0\r
+r 106 0 59 0 856 0\r
+r 106 0 59 0 814 0\r
+r 106 0 59 0 813 0\r
+r 106 0 59 0 811 0\r
+r 106 0 59 0 808 0\r
+r 106 0 59 0 806 0\r
+r 106 0 59 0 804 0\r
+r 106 0 59 0 799 0\r
+r 106 0 59 0 797 0\r
+r 106 0 59 0 794 0\r
+r 106 0 59 0 793 0\r
+r 106 0 59 0 792 0\r
+r 106 0 59 0 789 0\r
+r 106 0 59 0 787 0\r
+r 106 0 59 0 785 0\r
+r 106 0 59 0 780 0\r
+r 106 0 59 0 777 0\r
+r 106 0 59 0 772 0\r
+r 106 0 59 0 770 0\r
+r 106 0 59 0 768 0\r
+r 106 0 59 0 766 0\r
+r 106 0 59 0 763 0\r
+r 106 0 59 0 761 0\r
+r 106 0 59 0 757 0\r
+r 106 0 59 0 755 0\r
+r 106 0 59 0 753 0\r
+r 106 0 59 0 752 0\r
+r 106 0 59 0 751 0\r
+r 106 0 59 0 748 0\r
+r 106 0 59 0 747 0\r
+r 106 0 59 0 746 0\r
+r 106 0 59 0 725 0\r
+r 106 0 59 0 724 0\r
+r 106 0 59 0 722 0\r
+r 106 0 59 0 721 0\r
+r 106 0 59 0 714 0\r
+r 106 0 59 0 710 0\r
+r 106 0 59 0 708 0\r
+r 106 0 59 0 706 0\r
+r 106 0 59 0 702 0\r
+r 106 0 59 0 701 0\r
+r 106 0 59 0 699 0\r
+r 106 0 59 0 693 0\r
+r 106 0 59 0 692 0\r
+r 106 0 59 0 690 0\r
+r 106 0 59 0 688 0\r
+r 106 0 59 0 682 0\r
+r 106 0 59 0 678 0\r
+r 106 0 59 0 652 0\r
+r 106 0 59 0 651 0\r
+r 106 0 59 0 648 0\r
+r 106 0 59 0 604 0\r
+r 106 0 59 0 602 0\r
+r 106 0 59 0 600 0\r
+r 106 0 59 0 588 0\r
+r 106 0 59 0 586 0\r
+r 106 0 59 0 579 0\r
+r 106 0 59 0 577 0\r
+r 106 0 59 0 575 0\r
+r 106 0 59 0 573 0\r
+r 106 0 59 0 571 0\r
+r 106 0 59 0 569 0\r
+r 106 0 59 0 565 0\r
+r 106 0 59 0 563 0\r
+r 106 0 59 0 559 0\r
+r 106 0 59 0 557 0\r
+r 106 0 59 0 555 0\r
+r 106 0 59 0 553 0\r
+r 106 0 59 0 551 0\r
+r 106 0 59 0 525 0\r
+r 106 0 59 0 523 0\r
+r 106 0 59 0 521 0\r
+r 106 0 59 0 514 0\r
+r 106 0 59 0 505 0\r
+r 106 0 59 0 490 0\r
+r 106 0 59 0 486 0\r
+r 106 0 59 0 483 0\r
+r 106 0 59 0 473 0\r
+r 106 0 59 0 471 0\r
+r 106 0 59 0 468 0\r
+r 106 0 59 0 441 0\r
+r 106 0 59 0 439 0\r
+r 106 0 59 0 434 0\r
+r 106 0 59 0 432 0\r
+r 106 0 59 0 409 0\r
+r 106 0 59 0 400 0\r
+r 106 0 59 0 386 0\r
+r 106 0 59 0 378 0\r
+r 106 0 59 0 377 0\r
+r 106 0 59 0 348 0\r
+r 106 0 59 0 346 0\r
+r 106 0 59 0 333 0\r
+r 106 0 59 0 331 0\r
+r 106 0 59 0 329 0\r
+r 106 0 59 0 327 0\r
+r 106 0 59 0 322 0\r
+r 106 0 59 0 316 0\r
+r 106 0 59 0 314 0\r
+r 106 0 59 0 312 0\r
+r 106 0 59 0 309 0\r
+r 106 0 59 0 306 0\r
+r 106 0 59 0 304 0\r
+r 106 0 59 0 296 0\r
+r 106 0 59 0 294 0\r
+r 106 0 59 0 287 0\r
+r 106 0 59 0 281 0\r
+r 106 0 59 0 279 0\r
+r 106 0 59 0 276 0\r
+r 106 0 59 0 275 0\r
+r 106 0 59 0 272 0\r
+r 106 0 59 0 270 0\r
+r 106 0 59 0 253 0\r
+r 106 0 59 0 252 0\r
+r 106 0 59 0 251 0\r
+r 106 0 59 0 250 0\r
+r 106 0 59 0 247 0\r
+r 106 0 59 0 246 0\r
+r 106 0 59 0 245 0\r
+r 106 0 59 0 243 0\r
+r 106 0 59 0 242 0\r
+r 106 0 59 0 241 0\r
+r 106 0 59 0 240 0\r
+r 106 0 59 0 239 0\r
+r 106 0 59 0 238 0\r
+r 106 0 59 0 237 0\r
+r 106 0 59 0 236 0\r
+r 106 0 59 0 235 0\r
+r 106 0 59 0 234 0\r
+r 106 0 59 0 223 0\r
+r 106 0 59 0 221 0\r
+r 106 0 59 0 218 0\r
+r 106 0 59 0 215 0\r
+r 106 0 59 0 206 0\r
+r 106 0 59 0 188 0\r
+r 106 0 59 0 165 0\r
+r 106 0 59 0 164 0\r
+r 106 0 59 0 163 0\r
+r 106 0 59 0 162 0\r
+r 106 0 59 0 153 0\r
+r 106 0 59 0 152 0\r
+r 106 0 59 0 150 0\r
+r 106 0 59 0 135 0\r
+r 106 0 59 0 125 0\r
+r 106 0 59 0 121 0\r
+r 106 0 59 0 120 0\r
+r 106 0 59 0 108 0\r
+r 106 0 59 0 105 0\r
+r 106 0 4 0 25 0\r
+r 106 0 5 0 2345 0\r
+r 106 0 7 0 49 0\r
+r 2155 0 2904 0 769 0\r
+r 2155 0 1 0 10 0 s Named Unit\r
+r 107 0 2912 0 2081 0\r
+r 107 0 2912 0 2080 0\r
+r 107 0 2912 0 2078 0\r
+r 107 0 2912 0 2077 0\r
+r 107 0 2912 0 2076 0\r
+r 107 0 2912 0 2066 0\r
+r 107 0 2912 0 2063 0\r
+r 107 0 2912 0 2061 0\r
+r 107 0 2912 0 1345 0\r
+r 107 0 2912 0 1343 0\r
+r 107 0 2912 0 1340 0\r
+r 107 0 2912 0 1316 0\r
+r 107 0 2912 0 1314 0\r
+r 107 0 2912 0 1309 0\r
+r 107 0 2912 0 1307 0\r
+r 107 0 2912 0 1306 0\r
+r 107 0 2912 0 1303 0\r
+r 107 0 2912 0 1301 0\r
+r 107 0 2912 0 1299 0\r
+r 107 0 2912 0 1294 0\r
+r 107 0 2912 0 1287 0\r
+r 107 0 2912 0 1286 0\r
+r 107 0 2912 0 1285 0\r
+r 107 0 2912 0 1275 0\r
+r 107 0 2912 0 1273 0\r
+r 107 0 2912 0 1260 0\r
+r 107 0 2912 0 1259 0\r
+r 107 0 2912 0 1258 0\r
+r 107 0 2912 0 1256 0\r
+r 107 0 2912 0 1255 0\r
+r 107 0 2912 0 1254 0\r
+r 107 0 2912 0 1252 0\r
+r 107 0 2912 0 1251 0\r
+r 107 0 2912 0 1249 0\r
+r 107 0 2912 0 1248 0\r
+r 107 0 2912 0 1246 0\r
+r 107 0 2912 0 1244 0\r
+r 107 0 2912 0 1243 0\r
+r 107 0 2912 0 1242 0\r
+r 107 0 2912 0 1241 0\r
+r 107 0 2912 0 1240 0\r
+r 107 0 2912 0 1239 0\r
+r 107 0 2912 0 1237 0\r
+r 107 0 2912 0 1236 0\r
+r 107 0 2912 0 1235 0\r
+r 107 0 2912 0 1234 0\r
+r 107 0 2912 0 1233 0\r
+r 107 0 2912 0 1232 0\r
+r 107 0 2912 0 1230 0\r
+r 107 0 2912 0 1229 0\r
+r 107 0 2912 0 1228 0\r
+r 107 0 2912 0 1227 0\r
+r 107 0 2912 0 1225 0\r
+r 107 0 2912 0 1224 0\r
+r 107 0 2912 0 1223 0\r
+r 107 0 2912 0 1222 0\r
+r 107 0 2912 0 1220 0\r
+r 107 0 2912 0 1219 0\r
+r 107 0 2912 0 1218 0\r
+r 107 0 2912 0 1217 0\r
+r 107 0 2912 0 1207 0\r
+r 107 0 2912 0 1206 0\r
+r 107 0 2912 0 1205 0\r
+r 107 0 2912 0 1204 0\r
+r 107 0 2912 0 1203 0\r
+r 107 0 2912 0 1202 0\r
+r 107 0 2912 0 1182 0\r
+r 107 0 2912 0 1181 0\r
+r 107 0 2912 0 1180 0\r
+r 107 0 2912 0 1165 0\r
+r 107 0 2912 0 1164 0\r
+r 107 0 2912 0 1152 0\r
+r 107 0 2912 0 1151 0\r
+r 107 0 2912 0 1146 0\r
+r 107 0 2912 0 1085 0\r
+r 107 0 2912 0 1080 0\r
+r 107 0 2912 0 1010 0\r
+r 107 0 2912 0 1009 0\r
+r 107 0 2912 0 1003 0\r
+r 107 0 2912 0 1002 0\r
+r 107 0 2912 0 1001 0\r
+r 107 0 2912 0 984 0\r
+r 107 0 2912 0 944 0\r
+r 107 0 2912 0 943 0\r
+r 107 0 2912 0 914 0\r
+r 107 0 2912 0 910 0\r
+r 107 0 2912 0 878 0\r
+r 107 0 2912 0 877 0\r
+r 107 0 2912 0 876 0\r
+r 107 0 2912 0 875 0\r
+r 107 0 2912 0 866 0\r
+r 107 0 2912 0 858 0\r
+r 107 0 2912 0 857 0\r
+r 107 0 2912 0 856 0\r
+r 107 0 2912 0 813 0\r
+r 107 0 2912 0 799 0\r
+r 107 0 2912 0 797 0\r
+r 107 0 2912 0 794 0\r
+r 107 0 2912 0 780 0\r
+r 107 0 2912 0 777 0\r
+r 107 0 2912 0 770 0\r
+r 107 0 2912 0 768 0\r
+r 107 0 2912 0 766 0\r
+r 107 0 2912 0 763 0\r
+r 107 0 2912 0 761 0\r
+r 107 0 2912 0 752 0\r
+r 107 0 2912 0 751 0\r
+r 107 0 2912 0 748 0\r
+r 107 0 2912 0 747 0\r
+r 107 0 2912 0 746 0\r
+r 107 0 2912 0 725 0\r
+r 107 0 2912 0 724 0\r
+r 107 0 2912 0 722 0\r
+r 107 0 2912 0 721 0\r
+r 107 0 2912 0 714 0\r
+r 107 0 2912 0 710 0\r
+r 107 0 2912 0 708 0\r
+r 107 0 2912 0 706 0\r
+r 107 0 2912 0 693 0\r
+r 107 0 2912 0 692 0\r
+r 107 0 2912 0 652 0\r
+r 107 0 2912 0 651 0\r
+r 107 0 2912 0 604 0\r
+r 107 0 2912 0 602 0\r
+r 107 0 2912 0 600 0\r
+r 107 0 2912 0 588 0\r
+r 107 0 2912 0 555 0\r
+r 107 0 2912 0 553 0\r
+r 107 0 2912 0 486 0\r
+r 107 0 2912 0 439 0\r
+r 107 0 2912 0 432 0\r
+r 107 0 2912 0 386 0\r
+r 107 0 2912 0 331 0\r
+r 107 0 2912 0 329 0\r
+r 107 0 2912 0 327 0\r
+r 107 0 2912 0 322 0\r
+r 107 0 2912 0 312 0\r
+r 107 0 2912 0 309 0\r
+r 107 0 2912 0 306 0\r
+r 107 0 2912 0 304 0\r
+r 107 0 2912 0 281 0\r
+r 107 0 2912 0 279 0\r
+r 107 0 2912 0 276 0\r
+r 107 0 2912 0 275 0\r
+r 107 0 2912 0 272 0\r
+r 107 0 2912 0 270 0\r
+r 107 0 2912 0 253 0\r
+r 107 0 2912 0 252 0\r
+r 107 0 2912 0 251 0\r
+r 107 0 2912 0 250 0\r
+r 107 0 2912 0 246 0\r
+r 107 0 2912 0 245 0\r
+r 107 0 2912 0 240 0\r
+r 107 0 2912 0 239 0\r
+r 107 0 2912 0 238 0\r
+r 107 0 2912 0 237 0\r
+r 107 0 2912 0 221 0\r
+r 107 0 2912 0 218 0\r
+r 107 0 2912 0 215 0\r
+r 107 0 2912 0 206 0\r
+r 107 0 2912 0 165 0\r
+r 107 0 2912 0 164 0\r
+r 107 0 2912 0 163 0\r
+r 107 0 2912 0 162 0\r
+r 107 0 2912 0 153 0\r
+r 107 0 2912 0 152 0\r
+r 107 0 2912 0 150 0\r
+r 107 0 2912 0 135 0\r
+r 107 0 2912 0 105 0\r
+r 107 0 1 0 345 0\r
+r 107 0 347 0 355 0\r
+r 107 0 349 0 354 0\r
+r 107 0 5 0 353 0\r
+r 107 0 7 0 49 0\r
+r 2156 0 2904 0 821 0\r
+r 2156 0 1 0 10 0 s Int32\r
+r 108 0 1 0 106 0\r
+r 108 0 365 0 62 0\r
+r 108 0 38 0 65 0\r
+r 2157 0 2904 0 798 0\r
+r 2157 0 1 0 10 0 s Function Type\r
+r 109 0 129 0 376 0\r
+r 109 0 4 0 25 0\r
+r 109 0 5 0 2399 0\r
+r 109 0 7 0 50 0\r
+r 2158 0 2904 0 759 0\r
+r 2158 0 1 0 10 0 s Unit\r
+r 110 0 2 0 8 0\r
+r 110 0 139 0 25 0\r
+r 110 0 3 0 111 0\r
+r 110 0 60 0 2033 0\r
+r 110 0 60 0 2014 0\r
+r 110 0 60 0 1996 0\r
+r 110 0 60 0 1981 0\r
+r 110 0 60 0 1959 0\r
+r 110 0 60 0 1933 0\r
+r 110 0 60 0 1914 0\r
+r 110 0 60 0 1895 0\r
+r 110 0 60 0 1879 0\r
+r 110 0 60 0 1865 0\r
+r 110 0 60 0 1851 0\r
+r 110 0 60 0 1829 0\r
+r 110 0 60 0 1806 0\r
+r 110 0 60 0 1783 0\r
+r 110 0 60 0 1771 0\r
+r 110 0 60 0 1755 0\r
+r 110 0 60 0 1742 0\r
+r 110 0 60 0 1726 0\r
+r 110 0 60 0 1706 0\r
+r 110 0 60 0 1684 0\r
+r 110 0 60 0 1664 0\r
+r 110 0 60 0 1648 0\r
+r 110 0 60 0 1633 0\r
+r 110 0 60 0 1611 0\r
+r 110 0 60 0 1588 0\r
+r 110 0 60 0 1565 0\r
+r 110 0 60 0 1545 0\r
+r 110 0 60 0 1525 0\r
+r 110 0 60 0 1505 0\r
+r 110 0 60 0 1485 0\r
+r 110 0 60 0 1465 0\r
+r 110 0 60 0 1433 0\r
+r 110 0 60 0 1406 0\r
+r 110 0 60 0 1393 0\r
+r 110 0 60 0 1360 0\r
+r 110 0 60 0 1166 0\r
+r 110 0 60 0 1073 0\r
+r 110 0 60 0 1070 0\r
+r 110 0 60 0 1067 0\r
+r 110 0 60 0 1062 0\r
+r 110 0 60 0 1060 0\r
+r 110 0 60 0 1051 0\r
+r 110 0 60 0 1034 0\r
+r 110 0 60 0 1029 0\r
+r 110 0 60 0 1007 0\r
+r 110 0 60 0 999 0\r
+r 110 0 60 0 997 0\r
+r 110 0 60 0 991 0\r
+r 110 0 60 0 989 0\r
+r 110 0 60 0 980 0\r
+r 110 0 60 0 977 0\r
+r 110 0 60 0 965 0\r
+r 110 0 60 0 955 0\r
+r 110 0 60 0 952 0\r
+r 110 0 60 0 933 0\r
+r 110 0 60 0 931 0\r
+r 110 0 60 0 911 0\r
+r 110 0 60 0 862 0\r
+r 110 0 60 0 815 0\r
+r 110 0 60 0 809 0\r
+r 110 0 60 0 800 0\r
+r 110 0 60 0 795 0\r
+r 110 0 60 0 781 0\r
+r 110 0 60 0 778 0\r
+r 110 0 60 0 773 0\r
+r 110 0 60 0 771 0\r
+r 110 0 60 0 767 0\r
+r 110 0 60 0 764 0\r
+r 110 0 60 0 762 0\r
+r 110 0 60 0 691 0\r
+r 110 0 60 0 661 0\r
+r 110 0 60 0 636 0\r
+r 110 0 60 0 635 0\r
+r 110 0 60 0 603 0\r
+r 110 0 60 0 587 0\r
+r 110 0 60 0 581 0\r
+r 110 0 60 0 580 0\r
+r 110 0 60 0 578 0\r
+r 110 0 60 0 526 0\r
+r 110 0 60 0 517 0\r
+r 110 0 60 0 515 0\r
+r 110 0 60 0 513 0\r
+r 110 0 60 0 511 0\r
+r 110 0 60 0 487 0\r
+r 110 0 60 0 472 0\r
+r 110 0 60 0 442 0\r
+r 110 0 60 0 392 0\r
+r 110 0 60 0 390 0\r
+r 110 0 60 0 383 0\r
+r 110 0 60 0 365 0\r
+r 110 0 60 0 349 0\r
+r 110 0 60 0 347 0\r
+r 110 0 60 0 344 0\r
+r 110 0 60 0 343 0\r
+r 110 0 60 0 334 0\r
+r 110 0 60 0 332 0\r
+r 110 0 60 0 330 0\r
+r 110 0 60 0 320 0\r
+r 110 0 60 0 319 0\r
+r 110 0 60 0 318 0\r
+r 110 0 60 0 310 0\r
+r 110 0 60 0 307 0\r
+r 110 0 60 0 305 0\r
+r 110 0 60 0 288 0\r
+r 110 0 60 0 282 0\r
+r 110 0 60 0 277 0\r
+r 110 0 60 0 273 0\r
+r 110 0 60 0 219 0\r
+r 110 0 60 0 161 0\r
+r 110 0 60 0 145 0\r
+r 110 0 60 0 128 0\r
+r 110 0 60 0 116 0\r
+r 110 0 60 0 104 0\r
+r 110 0 60 0 103 0\r
+r 110 0 60 0 72 0\r
+r 110 0 60 0 71 0\r
+r 110 0 60 0 70 0\r
+r 110 0 60 0 66 0\r
+r 110 0 60 0 43 0\r
+r 110 0 60 0 38 0\r
+r 110 0 60 0 31 0\r
+r 110 0 60 0 26 0\r
+r 110 0 60 0 1 0\r
+r 110 0 5 0 2425 0\r
+r 110 0 7 0 53 0\r
+r 2159 0 2904 0 775 0\r
+r 2159 0 1 0 10 0 s Unit Conversion\r
+r 111 0 2 0 8 0\r
+r 111 0 3 0 110 0\r
+r 111 0 60 0 3274 0\r
+r 111 0 60 0 3268 0\r
+r 111 0 60 0 3265 0\r
+r 111 0 60 0 3262 0\r
+r 111 0 60 0 3258 0\r
+r 111 0 60 0 3254 0\r
+r 111 0 60 0 3251 0\r
+r 111 0 60 0 3247 0\r
+r 111 0 60 0 3244 0\r
+r 111 0 60 0 3242 0\r
+r 111 0 60 0 3239 0\r
+r 111 0 60 0 3235 0\r
+r 111 0 60 0 3231 0\r
+r 111 0 60 0 3227 0\r
+r 111 0 60 0 3225 0\r
+r 111 0 60 0 3223 0\r
+r 111 0 60 0 3221 0\r
+r 111 0 60 0 3219 0\r
+r 111 0 60 0 3216 0\r
+r 111 0 60 0 3212 0\r
+r 111 0 60 0 3208 0\r
+r 111 0 60 0 3205 0\r
+r 111 0 60 0 3202 0\r
+r 111 0 60 0 3198 0\r
+r 111 0 60 0 3194 0\r
+r 111 0 60 0 3190 0\r
+r 111 0 60 0 3186 0\r
+r 111 0 60 0 3182 0\r
+r 111 0 60 0 3178 0\r
+r 111 0 60 0 3174 0\r
+r 111 0 60 0 3170 0\r
+r 111 0 60 0 3163 0\r
+r 111 0 60 0 3158 0\r
+r 111 0 60 0 3156 0\r
+r 111 0 60 0 3135 0\r
+r 111 0 60 0 3100 0\r
+r 111 0 60 0 3083 0\r
+r 111 0 60 0 3082 0\r
+r 111 0 60 0 3081 0\r
+r 111 0 60 0 3080 0\r
+r 111 0 60 0 3079 0\r
+r 111 0 60 0 3076 0\r
+r 111 0 60 0 3075 0\r
+r 111 0 60 0 3068 0\r
+r 111 0 60 0 3067 0\r
+r 111 0 60 0 3066 0\r
+r 111 0 60 0 3065 0\r
+r 111 0 60 0 3059 0\r
+r 111 0 60 0 3055 0\r
+r 111 0 60 0 3046 0\r
+r 111 0 60 0 3045 0\r
+r 111 0 60 0 3042 0\r
+r 111 0 60 0 3041 0\r
+r 111 0 60 0 3037 0\r
+r 111 0 60 0 3036 0\r
+r 111 0 60 0 3035 0\r
+r 111 0 60 0 3034 0\r
+r 111 0 60 0 3033 0\r
+r 111 0 60 0 3032 0\r
+r 111 0 60 0 3031 0\r
+r 111 0 60 0 3020 0\r
+r 111 0 60 0 3019 0\r
+r 111 0 60 0 3014 0\r
+r 111 0 60 0 3013 0\r
+r 111 0 60 0 3006 0\r
+r 111 0 60 0 3000 0\r
+r 111 0 60 0 2999 0\r
+r 111 0 60 0 2998 0\r
+r 111 0 60 0 2997 0\r
+r 111 0 60 0 2982 0\r
+r 111 0 60 0 2979 0\r
+r 111 0 60 0 2978 0\r
+r 111 0 60 0 2977 0\r
+r 111 0 60 0 2976 0\r
+r 111 0 60 0 2974 0\r
+r 111 0 60 0 2967 0\r
+r 111 0 60 0 2966 0\r
+r 111 0 60 0 2965 0\r
+r 111 0 60 0 2964 0\r
+r 111 0 60 0 2963 0\r
+r 111 0 60 0 2962 0\r
+r 111 0 60 0 2961 0\r
+r 111 0 60 0 2960 0\r
+r 111 0 60 0 2959 0\r
+r 111 0 60 0 2958 0\r
+r 111 0 60 0 2957 0\r
+r 111 0 60 0 2955 0\r
+r 111 0 60 0 2952 0\r
+r 111 0 60 0 2950 0\r
+r 111 0 60 0 2943 0\r
+r 111 0 60 0 2929 0\r
+r 111 0 60 0 2922 0\r
+r 111 0 60 0 2921 0\r
+r 111 0 60 0 2920 0\r
+r 111 0 60 0 2915 0\r
+r 111 0 60 0 2911 0\r
+r 111 0 60 0 2910 0\r
+r 111 0 60 0 1033 0\r
+r 111 0 60 0 1029 0\r
+r 111 0 60 0 999 0\r
+r 111 0 60 0 997 0\r
+r 111 0 60 0 991 0\r
+r 111 0 60 0 989 0\r
+r 111 0 60 0 980 0\r
+r 111 0 60 0 978 0\r
+r 111 0 60 0 952 0\r
+r 111 0 60 0 488 0\r
+r 111 0 60 0 479 0\r
+r 111 0 60 0 392 0\r
+r 111 0 60 0 390 0\r
+r 111 0 60 0 383 0\r
+r 111 0 60 0 365 0\r
+r 111 0 60 0 320 0\r
+r 111 0 60 0 319 0\r
+r 111 0 60 0 277 0\r
+r 111 0 60 0 161 0\r
+r 111 0 60 0 145 0\r
+r 111 0 60 0 128 0\r
+r 111 0 60 0 112 0\r
+r 111 0 60 0 104 0\r
+r 111 0 60 0 67 0\r
+r 111 0 60 0 59 0\r
+r 111 0 60 0 26 0\r
+r 111 0 5 0 2272 0\r
+r 111 0 7 0 53 0\r
+r 112 0 2 0 111 0\r
+r 112 0 3 0 103 0\r
+r 112 0 60 0 3058 0\r
+r 112 0 60 0 3047 0\r
+r 112 0 60 0 3030 0\r
+r 112 0 60 0 3029 0\r
+r 112 0 60 0 3021 0\r
+r 112 0 60 0 2984 0\r
+r 112 0 60 0 2983 0\r
+r 112 0 60 0 2973 0\r
+r 112 0 60 0 2972 0\r
+r 112 0 60 0 2971 0\r
+r 112 0 60 0 2968 0\r
+r 112 0 60 0 2954 0\r
+r 112 0 60 0 2947 0\r
+r 112 0 60 0 2944 0\r
+r 112 0 60 0 2942 0\r
+r 112 0 60 0 2941 0\r
+r 112 0 60 0 2940 0\r
+r 112 0 60 0 2939 0\r
+r 112 0 60 0 2931 0\r
+r 112 0 60 0 2919 0\r
+r 112 0 60 0 2914 0\r
+r 112 0 60 0 2913 0\r
+r 112 0 60 0 2909 0\r
+r 112 0 60 0 2908 0\r
+r 112 0 60 0 2907 0\r
+r 112 0 60 0 2906 0\r
+r 112 0 60 0 739 0\r
+r 112 0 60 0 664 0\r
+r 112 0 60 0 507 0\r
+r 112 0 60 0 493 0\r
+r 112 0 60 0 437 0\r
+r 112 0 60 0 389 0\r
+r 112 0 60 0 227 0\r
+r 112 0 60 0 134 0\r
+r 112 0 60 0 129 0\r
+r 112 0 60 0 114 0\r
+r 112 0 60 0 60 0\r
+r 112 0 60 0 7 0\r
+r 112 0 60 0 3 0\r
+r 112 0 5 0 2410 0\r
+r 112 0 7 0 53 0\r
+r 2160 0 2904 0 776 0\r
+r 2160 0 1 0 10 0 s Linear Unit Conversion\r
+r 2161 0 2904 0 822 0\r
+r 2161 0 1 0 10 0 s Int64\r
+r 113 0 2 0 103 0\r
+r 113 0 139 0 25 0\r
+r 113 0 3 0 114 0\r
+r 113 0 60 0 474 0\r
+r 113 0 60 0 94 0\r
+r 113 0 5 0 2249 0\r
+r 113 0 141 0 25 0\r
+r 113 0 7 0 53 0\r
+r 114 0 2 0 112 0\r
+r 114 0 3 0 113 0\r
+r 114 0 60 0 476 0\r
+r 114 0 60 0 184 0\r
+r 114 0 5 0 2406 0\r
+r 114 0 7 0 53 0\r
+r 2162 0 2904 0 791 0\r
+r 2162 0 1 0 10 0 s Sequence Type\r
+r 2163 0 2904 0 762 0\r
+r 2163 0 1 0 10 0 s Has Magnitude\r
+r 115 0 2 0 8 0\r
+r 115 0 67 0 4 0\r
+r 115 0 67 0 2 0\r
+r 115 0 3 0 2928 0\r
+r 115 0 60 0 116 0\r
+r 115 0 5 0 2236 0\r
+r 115 0 7 0 53 0\r
+r 2164 0 2904 0 812 0\r
+r 2164 0 1 0 10 0 s Component\r
+r 116 0 2 0 115 0\r
+r 116 0 2 0 110 0\r
+r 116 0 3 0 2929 0\r
+r 116 0 60 0 185 0\r
+r 116 0 60 0 142 0\r
+r 116 0 60 0 137 0\r
+r 116 0 60 0 136 0\r
+r 116 0 60 0 131 0\r
+r 116 0 60 0 29 0\r
+r 116 0 60 0 28 0\r
+r 116 0 60 0 27 0\r
+r 116 0 5 0 2379 0\r
+r 116 0 7 0 53 0\r
+r 2165 0 2904 0 782 0\r
+r 2165 0 1 0 10 0 s Data Types\r
+r 117 0 1 0 10 0 s All types are inherited from this type.\r
+r 117 0 2923 0 25 0\r
+r 2166 0 2904 0 788 0\r
+r 2166 0 1 0 10 0 s Has Max Length\r
+r 118 0 129 0 297 0\r
+r 118 0 129 0 295 0\r
+r 118 0 129 0 293 0\r
+r 118 0 129 0 52 0\r
+r 118 0 2907 0 330 0\r
+r 118 0 2907 0 296 0\r
+r 118 0 2907 0 294 0\r
+r 118 0 59 0 1028 0\r
+r 118 0 59 0 1027 0\r
+r 118 0 59 0 1026 0\r
+r 118 0 4 0 25 0\r
+r 118 0 5 0 2427 0\r
+r 118 0 2911 0 299 0\r
+r 118 0 7 0 49 0\r
+r 2167 0 2904 0 815 0\r
+r 2167 0 1 0 10 0 s Has Component Relation\r
+r 119 0 1 0 10 0 s All types are instances of this type.\r
+r 119 0 2923 0 52 0\r
+r 2168 0 2904 0 829 0\r
+r 2168 0 1 0 10 0 s String_\r
+r 120 0 1 0 106 0\r
+r 120 0 28 0 37 0\r
+r 120 0 365 0 52 0\r
+r 120 0 38 0 27 0\r
+r 2169 0 2904 0 818 0\r
+r 2169 0 1 0 10 0 s Integer_\r
+r 121 0 1 0 106 0\r
+r 121 0 28 0 106 0\r
+r 121 0 365 0 52 0\r
+r 121 0 38 0 104 0\r
+r 2170 0 2904 0 796 0\r
+r 2170 0 1 0 10 0 s Option Type\r
+r 122 0 1 0 10 0 s We allow currently only Relation Requirements in types. Could this restriction be lifted?\r
+r 122 0 2924 0 52 0\r
+r 2171 0 2904 0 800 0\r
+r 2171 0 1 0 10 0 s Has Return Type\r
+r 123 0 129 0 315 0\r
+r 123 0 129 0 313 0\r
+r 123 0 129 0 311 0\r
+r 123 0 129 0 308 0\r
+r 123 0 129 0 303 0\r
+r 123 0 129 0 0 0\r
+r 123 0 2907 0 310 0\r
+r 123 0 2907 0 307 0\r
+r 123 0 2907 0 305 0\r
+r 123 0 59 0 302 0\r
+r 123 0 4 0 25 0\r
+r 123 0 5 0 2371 0\r
+r 123 0 7 0 49 0\r
+r 2172 0 2904 0 824 0\r
+r 2172 0 1 0 10 0 s Float32\r
+r 124 0 1 0 10 0 s All relations are instances of this type.\r
+r 124 0 2923 0 0 0\r
+r 2173 0 2904 0 802 0\r
+r 2173 0 1 0 10 0 s Union Type\r
+r 125 0 1 0 106 0\r
+r 125 0 365 0 0 0\r
+r 125 0 38 0 126 0\r
+r 2174 0 2904 0 795 0\r
+r 2174 0 1 0 10 0 s Has Component Type\r
+r 126 0 1 0 42 0\r
+r 126 0 2 0 94 0\r
+r 126 0 3 0 2930 0\r
+r 126 0 28 0 10 0\r
+r 126 0 5 0 2336 0\r
+r 126 0 7 0 53 0\r
+r 126 0 2911 0 125 0\r
+r 2175 0 2904 0 778 0\r
+r 2175 0 1 0 10 0 s Has Scale\r
+r 127 0 2 0 103 0\r
+r 127 0 3 0 2931 0\r
+r 127 0 28 0 0 0\r
+r 127 0 5 0 2383 0\r
+r 127 0 7 0 53 0\r
+r 127 0 2911 0 327 0\r
+r 2176 0 2904 0 823 0\r
+r 2176 0 1 0 10 0 s Float_\r
+r 128 0 1 0 144 0\r
+r 128 0 2 0 111 0\r
+r 128 0 2 0 110 0\r
+r 128 0 3 0 128 0\r
+r 128 0 5 0 2364 0\r
+r 128 0 7 0 53 0\r
+r 129 0 2 0 112 0\r
+r 129 0 3 0 4 0\r
+r 129 0 5 0 2422 0\r
+r 129 0 7 0 53 0\r
+r 2177 0 2904 0 825 0\r
+r 2177 0 1 0 10 0 s Float64\r
+r 2178 0 2904 0 764 0\r
+r 2178 0 1 0 10 0 s Has Base Unit\r
+r 130 0 136 0 137 0\r
+r 130 0 136 0 136 0\r
+r 130 0 136 0 133 0\r
+r 130 0 2906 0 140 0\r
+r 130 0 2906 0 138 0\r
+r 130 0 2907 0 142 0\r
+r 130 0 2907 0 133 0\r
+r 130 0 2907 0 131 0\r
+r 130 0 59 0 694 0\r
+r 130 0 59 0 679 0\r
+r 130 0 59 0 156 0\r
+r 130 0 59 0 155 0\r
+r 130 0 2908 0 142 0\r
+r 130 0 2908 0 133 0\r
+r 130 0 4 0 25 0\r
+r 130 0 5 0 2263 0\r
+r 130 0 7 0 50 0\r
+r 2179 0 2904 0 828 0\r
+r 2179 0 1 0 10 0 s Complex128\r
+r 131 0 1 0 0 0\r
+r 131 0 2 0 116 0\r
+r 131 0 139 0 52 0\r
+r 131 0 3 0 132 0\r
+r 131 0 28 0 130 0\r
+r 131 0 5 0 2374 0\r
+r 131 0 141 0 52 0\r
+r 131 0 29 0 52 0\r
+r 131 0 7 0 53 0\r
+r 131 0 2911 0 135 0\r
+r 132 0 2 0 2929 0\r
+r 132 0 3 0 131 0\r
+r 132 0 5 0 2384 0\r
+r 132 0 7 0 53 0\r
+r 2180 0 2904 0 831 0\r
+r 2180 0 1 0 10 0 s Regular Expression\r
+r 2181 0 2904 0 809 0\r
+r 2181 0 1 0 10 0 s Has Unit_\r
+r 133 0 1 0 68 0\r
+r 133 0 2 0 103 0\r
+r 133 0 139 0 130 0\r
+r 133 0 3 0 134 0\r
+r 133 0 28 0 130 0\r
+r 133 0 5 0 2251 0\r
+r 133 0 29 0 130 0\r
+r 133 0 7 0 53 0\r
+r 134 0 2 0 112 0\r
+r 134 0 3 0 133 0\r
+r 134 0 5 0 2356 0\r
+r 134 0 7 0 53 0\r
+r 2182 0 2904 0 781 0\r
+r 2182 0 1 0 10 0 s Has Shift\r
+r 2183 0 2904 0 765 0\r
+r 2183 0 1 0 10 0 s Power Unit\r
+r 135 0 1 0 106 0\r
+r 135 0 365 0 52 0\r
+r 135 0 38 0 131 0\r
+r 135 0 39 0 107 0\r
+r 2184 0 2904 0 805 0\r
+r 2184 0 1 0 10 0 s Has Lower Bound\r
+r 136 0 2 0 116 0\r
+r 136 0 139 0 130 0\r
+r 136 0 3 0 139 0\r
+r 136 0 28 0 0 0\r
+r 136 0 5 0 2260 0\r
+r 136 0 29 0 138 0\r
+r 136 0 7 0 53 0\r
+r 2185 0 2904 0 779 0\r
+r 2185 0 1 0 10 0 s Shifted Unit Conversion\r
+r 137 0 2 0 116 0\r
+r 137 0 139 0 130 0\r
+r 137 0 3 0 141 0\r
+r 137 0 28 0 0 0\r
+r 137 0 5 0 2359 0\r
+r 137 0 29 0 140 0\r
+r 137 0 7 0 53 0\r
+r 2186 0 2904 0 832 0\r
+r 2186 0 1 0 10 0 s Resource_\r
+r 138 0 1 0 33 0\r
+r 138 0 27 0 130 0\r
+r 138 0 27 0 52 0\r
+r 138 0 2908 0 136 0\r
+r 139 0 2 0 2929 0\r
+r 139 0 3 0 136 0\r
+r 139 0 5 0 2301 0\r
+r 139 0 7 0 53 0\r
+r 2187 0 2904 0 784 0\r
+r 2187 0 1 0 10 0 s String Type\r
+r 2188 0 2904 0 767 0\r
+r 2188 0 1 0 10 0 s Has Exponent\r
+r 140 0 1 0 33 0\r
+r 140 0 27 0 130 0\r
+r 140 0 27 0 52 0\r
+r 140 0 2908 0 137 0\r
+r 141 0 2 0 2929 0\r
+r 141 0 3 0 137 0\r
+r 141 0 5 0 2351 0\r
+r 141 0 7 0 53 0\r
+r 2189 0 2904 0 803 0\r
+r 2189 0 1 0 10 0 s Number Type\r
+r 2190 0 2904 0 783 0\r
+r 2190 0 1 0 10 0 s Data Type\r
+r 142 0 2 0 116 0\r
+r 142 0 3 0 143 0\r
+r 142 0 28 0 130 0\r
+r 142 0 5 0 2358 0\r
+r 142 0 29 0 130 0\r
+r 142 0 7 0 53 0\r
+r 143 0 2 0 2929 0\r
+r 143 0 3 0 142 0\r
+r 143 0 5 0 2361 0\r
+r 143 0 7 0 53 0\r
+r 2191 0 2904 0 801 0\r
+r 2191 0 1 0 10 0 s Record Type\r
+r 2192 0 2904 0 830 0\r
+r 2192 0 1 0 10 0 s URI_\r
+r 144 0 2906 0 181 0\r
+r 144 0 2907 0 995 0\r
+r 144 0 2907 0 994 0\r
+r 144 0 2907 0 43 0\r
+r 144 0 59 0 1029 0\r
+r 144 0 59 0 999 0\r
+r 144 0 59 0 997 0\r
+r 144 0 59 0 991 0\r
+r 144 0 59 0 989 0\r
+r 144 0 59 0 383 0\r
+r 144 0 59 0 277 0\r
+r 144 0 59 0 219 0\r
+r 144 0 59 0 161 0\r
+r 144 0 59 0 145 0\r
+r 144 0 59 0 128 0\r
+r 144 0 59 0 26 0\r
+r 144 0 4 0 0 0\r
+r 144 0 5 0 2329 0\r
+r 144 0 7 0 50 0\r
+r 2193 0 2904 0 827 0\r
+r 2193 0 1 0 10 0 s Complex64\r
+r 145 0 1 0 144 0\r
+r 145 0 2 0 111 0\r
+r 145 0 2 0 110 0\r
+r 145 0 3 0 145 0\r
+r 145 0 5 0 2282 0\r
+r 145 0 29 0 52 0\r
+r 145 0 78 0 146 0\r
+r 145 0 7 0 53 0\r
+r 2194 0 2904 0 758 0\r
+r 2194 0 1 0 10 0 s Units\r
+r 146 0 1 0 10 0 s Instances of a type tagged as Abstract cannot be directly instantiated.\r
+r 146 0 2923 0 145 0\r
+r 2195 0 2904 0 817 0\r
+r 2195 0 1 0 10 0 s Real\r
+r 147 0 1 0 10 0 s Instances of a type tagged Enumeration cannot be instantiated outside of the ontology that defines it.\r
+r 147 0 2923 0 26 0\r
+r 2196 0 2904 0 807 0\r
+r 2196 0 1 0 10 0 s Has Upper Bound\r
+r 148 0 1 0 10 0 s The cardinality of this relation is at most one.\r
+r 148 0 2923 0 42 0\r
+r 2197 0 2904 0 786 0\r
+r 2197 0 1 0 10 0 s Has Min Length\r
+r 149 0 1 0 10 0 s This relation acquires other relations.\r
+r 149 0 2923 0 68 0\r
+r 2198 0 2904 0 790 0\r
+r 2198 0 1 0 10 0 s Has Pattern\r
+r 150 0 1 0 106 0\r
+r 150 0 365 0 68 0\r
+r 150 0 38 0 66 0\r
+r 150 0 39 0 107 0\r
+r 2199 0 2904 0 833 0\r
+r 2199 0 1 0 10 0 s Boolean_\r
+r 151 0 104 0 153 0\r
+r 151 0 104 0 152 0\r
+r 151 0 129 0 154 0\r
+r 151 0 2907 0 70 0\r
+r 151 0 59 0 2012 0\r
+r 151 0 59 0 1979 0\r
+r 151 0 59 0 1957 0\r
+r 151 0 59 0 1954 0\r
+r 151 0 59 0 1931 0\r
+r 151 0 59 0 1877 0\r
+r 151 0 59 0 1849 0\r
+r 151 0 59 0 1827 0\r
+r 151 0 59 0 1804 0\r
+r 151 0 59 0 1769 0\r
+r 151 0 59 0 1766 0\r
+r 151 0 59 0 1753 0\r
+r 151 0 59 0 1740 0\r
+r 151 0 59 0 1737 0\r
+r 151 0 59 0 1724 0\r
+r 151 0 59 0 1721 0\r
+r 151 0 59 0 1704 0\r
+r 151 0 59 0 1631 0\r
+r 151 0 59 0 1609 0\r
+r 151 0 59 0 1586 0\r
+r 151 0 59 0 1391 0\r
+r 151 0 59 0 1083 0\r
+r 151 0 59 0 949 0\r
+r 151 0 59 0 947 0\r
+r 151 0 59 0 946 0\r
+r 151 0 2908 0 72 0\r
+r 151 0 4 0 25 0\r
+r 151 0 5 0 2274 0\r
+r 151 0 7 0 50 0\r
+r 2200 0 2904 0 810 0\r
+r 2200 0 1 0 10 0 s Resource Type\r
+r 152 0 1 0 106 0\r
+r 152 0 365 0 151 0\r
+r 152 0 38 0 71 0\r
+r 152 0 39 0 107 0\r
+r 2201 0 2904 0 826 0\r
+r 2201 0 1 0 10 0 s Complex_\r
+r 153 0 1 0 106 0\r
+r 153 0 365 0 151 0\r
+r 153 0 38 0 72 0\r
+r 153 0 39 0 107 0\r
+r 2202 0 2904 0 760 0\r
+r 2202 0 1 0 10 0 s Scaled Unit\r
+r 154 0 4 0 151 0\r
+r 154 0 5 0 2378 0\r
+r 154 0 7 0 50 0\r
+r 2203 0 2904 0 774 0\r
+r 2203 0 1 0 10 0 s Product Unit\r
+r 155 0 1 0 130 0\r
+r 155 0 132 0 69 0\r
+r 155 0 142 0 156 0\r
+r 2204 0 2904 0 773 0\r
+r 2204 0 1 0 10 0 s Has Conversion\r
+r 156 0 1 0 130 0\r
+r 156 0 132 0 52 0\r
+r 156 0 5 0 2288 0\r
+r 156 0 143 0 155 0\r
+r 2205 0 2904 0 816 0\r
+r 2205 0 1 0 10 0 s Number_\r
+r 157 0 104 0 234 0\r
+r 157 0 136 0 159 0\r
+r 157 0 136 0 158 0\r
+r 157 0 136 0 40 0\r
+r 157 0 136 0 39 0\r
+r 157 0 136 0 38 0\r
+r 157 0 136 0 30 0\r
+r 157 0 136 0 27 0\r
+r 157 0 129 0 244 0\r
+r 157 0 129 0 37 0\r
+r 157 0 129 0 36 0\r
+r 157 0 129 0 35 0\r
+r 157 0 129 0 34 0\r
+r 157 0 129 0 33 0\r
+r 157 0 129 0 32 0\r
+r 157 0 145 0 157 0\r
+r 157 0 137 0 40 0\r
+r 157 0 137 0 27 0\r
+r 157 0 2907 0 41 0\r
+r 157 0 2907 0 40 0\r
+r 157 0 2907 0 29 0\r
+r 157 0 2907 0 28 0\r
+r 157 0 2907 0 27 0\r
+r 157 0 4 0 25 0\r
+r 157 0 5 0 2271 0\r
+r 157 0 7 0 50 0\r
+r 2206 0 2904 0 771 0\r
+r 2206 0 1 0 10 0 s Has Symbol\r
+r 158 0 2 0 94 0\r
+r 158 0 3 0 2932 0\r
+r 158 0 139 0 157 0\r
+r 158 0 28 0 196 0\r
+r 158 0 5 0 2334 0\r
+r 158 0 7 0 53 0\r
+r 158 0 2911 0 246 0\r
+r 158 0 2911 0 188 0\r
+r 2207 0 2904 0 819 0\r
+r 2207 0 1 0 10 0 s Int8\r
+r 159 0 2 0 94 0\r
+r 159 0 3 0 2933 0\r
+r 159 0 139 0 157 0\r
+r 159 0 28 0 12 0\r
+r 159 0 5 0 2298 0\r
+r 159 0 7 0 53 0\r
+r 159 0 2911 0 247 0\r
+r 2208 0 2904 0 854 0\r
+r 2208 0 1 0 10 0 s Has Alpha Data\r
+r 160 0 104 0 253 0\r
+r 160 0 104 0 252 0\r
+r 160 0 104 0 251 0\r
+r 160 0 104 0 250 0\r
+r 160 0 136 0 161 0\r
+r 160 0 136 0 94 0\r
+r 160 0 137 0 94 0\r
+r 160 0 2907 0 161 0\r
+r 160 0 59 0 260 0\r
+r 160 0 59 0 58 0\r
+r 160 0 2908 0 161 0\r
+r 160 0 4 0 25 0\r
+r 160 0 5 0 2409 0\r
+r 160 0 7 0 50 0\r
+r 2209 0 2904 0 847 0\r
+r 2209 0 1 0 10 0 s Has Pixel Width\r
+r 161 0 1 0 144 0\r
+r 161 0 2 0 111 0\r
+r 161 0 2 0 110 0\r
+r 161 0 3 0 161 0\r
+r 161 0 139 0 160 0\r
+r 161 0 60 0 268 0\r
+r 161 0 60 0 267 0\r
+r 161 0 60 0 266 0\r
+r 161 0 60 0 265 0\r
+r 161 0 60 0 259 0\r
+r 161 0 28 0 160 0\r
+r 161 0 5 0 2321 0\r
+r 161 0 29 0 160 0\r
+r 161 0 7 0 53 0\r
+r 2210 0 2904 0 871 0\r
+r 2210 0 1 0 10 0 s Has Matrix Type\r
+r 162 0 1 0 106 0\r
+r 162 0 365 0 57 0\r
+r 162 0 38 0 5 0\r
+r 162 0 39 0 107 0\r
+r 2211 0 2904 0 851 0\r
+r 2211 0 1 0 10 0 s Has Image Data\r
+r 163 0 1 0 106 0\r
+r 163 0 365 0 69 0\r
+r 163 0 38 0 6 0\r
+r 163 0 39 0 107 0\r
+r 2212 0 2904 0 872 0\r
+r 2212 0 1 0 10 0 s Has Matrix Image Index\r
+r 164 0 1 0 106 0\r
+r 164 0 365 0 69 0\r
+r 164 0 38 0 97 0\r
+r 164 0 39 0 107 0\r
+r 2213 0 2904 0 848 0\r
+r 2213 0 1 0 10 0 s Has Pixel Height\r
+r 165 0 1 0 106 0\r
+r 165 0 365 0 69 0\r
+r 165 0 38 0 101 0\r
+r 165 0 39 0 107 0\r
+r 2214 0 2904 0 879 0\r
+r 2214 0 1 0 10 0 s Image Library\r
+r 166 0 1 0 10 0 s Is it reasonable to restrict possible libraries under Ontology?\r
+r 166 0 2924 0 69 0\r
+r 2215 0 2904 0 846 0\r
+r 2215 0 1 0 10 0 s Has Image\r
+r 167 0 40 0 168 0\r
+r 167 0 1 0 37 0\r
+r 167 0 2906 0 48 0\r
+r 167 0 38 0 9 0\r
+r 2216 0 2904 0 885 0\r
+r 2216 0 1 0 10 0 s Has Icon\r
+r 168 0 2913 0 167 0\r
+r 168 0 1 0 33 0\r
+r 168 0 27 0 52 0\r
+r 168 0 27 0 48 0\r
+r 2217 0 2904 0 849 0\r
+r 2217 0 1 0 10 0 s Has Physical Width\r
+r 169 0 40 0 170 0\r
+r 169 0 1 0 37 0\r
+r 169 0 2906 0 55 0\r
+r 169 0 38 0 9 0\r
+r 2218 0 2904 0 850 0\r
+r 2218 0 1 0 10 0 s Has Physical Height\r
+r 170 0 2913 0 169 0\r
+r 170 0 1 0 33 0\r
+r 170 0 27 0 55 0\r
+r 170 0 27 0 0 0\r
+r 2219 0 2904 0 845 0\r
+r 2219 0 1 0 10 0 s Image\r
+r 171 0 2906 0 173 0\r
+r 171 0 27 0 172 0\r
+r 171 0 4 0 57 0\r
+r 171 0 5 0 2311 0\r
+r 171 0 7 0 50 0\r
+r 2220 0 2904 0 874 0\r
+r 2220 0 1 0 10 0 s Matrix Image\r
+r 172 0 40 0 173 0\r
+r 172 0 1 0 37 0\r
+r 172 0 2906 0 171 0\r
+r 172 0 38 0 9 0\r
+r 2221 0 2904 0 843 0\r
+r 2221 0 1 0 10 0 s Image Namespace\r
+r 173 0 2913 0 172 0\r
+r 173 0 1 0 33 0\r
+r 173 0 27 0 174 0\r
+r 173 0 27 0 171 0\r
+r 2222 0 2904 0 855 0\r
+r 2222 0 1 0 10 0 s Bitmap Image\r
+r 174 0 2906 0 173 0\r
+r 174 0 59 0 24 0\r
+r 174 0 4 0 52 0\r
+r 174 0 5 0 2243 0\r
+r 174 0 7 0 50 0\r
+r 2223 0 2904 0 882 0\r
+r 2223 0 1 0 10 0 s Icon Library\r
+r 175 0 2906 0 177 0\r
+r 175 0 27 0 176 0\r
+r 175 0 4 0 57 0\r
+r 175 0 5 0 2341 0\r
+r 175 0 7 0 50 0\r
+r 2224 0 2904 0 30 0\r
+r 2224 0 1 0 10 0 s Has Type\r
+r 176 0 40 0 177 0\r
+r 176 0 1 0 37 0\r
+r 176 0 2906 0 175 0\r
+r 176 0 38 0 9 0\r
+r 2225 0 2904 0 189 0\r
+r 2225 0 1 0 10 0 s Value\r
+r 177 0 2913 0 176 0\r
+r 177 0 1 0 33 0\r
+r 177 0 27 0 178 0\r
+r 177 0 27 0 175 0\r
+r 178 0 2906 0 177 0\r
+r 178 0 5 0 2264 0\r
+r 2226 0 2904 0 202 0\r
+r 2226 0 1 0 10 0 s Has Perspective\r
+r 2227 0 2904 0 39 0\r
+r 2227 0 1 0 10 0 s Has Cardinality\r
+r 179 0 2906 0 181 0\r
+r 179 0 27 0 180 0\r
+r 179 0 4 0 57 0\r
+r 179 0 5 0 2368 0\r
+r 179 0 7 0 50 0\r
+r 2228 0 2904 0 19 0\r
+r 2228 0 1 0 10 0 s Double Array\r
+r 180 0 40 0 181 0\r
+r 180 0 1 0 37 0\r
+r 180 0 2906 0 179 0\r
+r 180 0 38 0 9 0\r
+r 2229 0 2904 0 271 0\r
+r 2229 0 1 0 10 0 s Has Signature\r
+r 181 0 2913 0 180 0\r
+r 181 0 1 0 33 0\r
+r 181 0 27 0 179 0\r
+r 181 0 27 0 144 0\r
+r 2230 0 2904 0 334 0\r
+r 2230 0 1 0 10 0 s Has Else Element\r
+r 182 0 40 0 183 0\r
+r 182 0 1 0 37 0\r
+r 182 0 2906 0 63 0\r
+r 182 0 38 0 9 0\r
+r 2231 0 2904 0 33 0\r
+r 2231 0 1 0 10 0 s Requirement Disjunction\r
+r 183 0 2913 0 182 0\r
+r 183 0 1 0 33 0\r
+r 183 0 27 0 63 0\r
+r 183 0 27 0 62 0\r
+r 2232 0 2904 0 303 0\r
+r 2232 0 1 0 10 0 s Composite Predicate\r
+r 184 0 2 0 114 0\r
+r 184 0 3 0 94 0\r
+r 184 0 60 0 3280 0\r
+r 184 0 60 0 3279 0\r
+r 184 0 60 0 3278 0\r
+r 184 0 60 0 3146 0\r
+r 184 0 60 0 3134 0\r
+r 184 0 60 0 3133 0\r
+r 184 0 60 0 3132 0\r
+r 184 0 60 0 3131 0\r
+r 184 0 60 0 3130 0\r
+r 184 0 60 0 3129 0\r
+r 184 0 60 0 3128 0\r
+r 184 0 60 0 3127 0\r
+r 184 0 60 0 3126 0\r
+r 184 0 60 0 3125 0\r
+r 184 0 60 0 3124 0\r
+r 184 0 60 0 3123 0\r
+r 184 0 60 0 3122 0\r
+r 184 0 60 0 3121 0\r
+r 184 0 60 0 3120 0\r
+r 184 0 60 0 3119 0\r
+r 184 0 60 0 3118 0\r
+r 184 0 60 0 3117 0\r
+r 184 0 60 0 3116 0\r
+r 184 0 60 0 3115 0\r
+r 184 0 60 0 3114 0\r
+r 184 0 60 0 3113 0\r
+r 184 0 60 0 3112 0\r
+r 184 0 60 0 3111 0\r
+r 184 0 60 0 3110 0\r
+r 184 0 60 0 3109 0\r
+r 184 0 60 0 3102 0\r
+r 184 0 60 0 3101 0\r
+r 184 0 60 0 3099 0\r
+r 184 0 60 0 3098 0\r
+r 184 0 60 0 3095 0\r
+r 184 0 60 0 3094 0\r
+r 184 0 60 0 3086 0\r
+r 184 0 60 0 3085 0\r
+r 184 0 60 0 3084 0\r
+r 184 0 60 0 3074 0\r
+r 184 0 60 0 3073 0\r
+r 184 0 60 0 3072 0\r
+r 184 0 60 0 3071 0\r
+r 184 0 60 0 3070 0\r
+r 184 0 60 0 3069 0\r
+r 184 0 60 0 3064 0\r
+r 184 0 60 0 3063 0\r
+r 184 0 60 0 3061 0\r
+r 184 0 60 0 3057 0\r
+r 184 0 60 0 3056 0\r
+r 184 0 60 0 3052 0\r
+r 184 0 60 0 3051 0\r
+r 184 0 60 0 3050 0\r
+r 184 0 60 0 3049 0\r
+r 184 0 60 0 3048 0\r
+r 184 0 60 0 3044 0\r
+r 184 0 60 0 3043 0\r
+r 184 0 60 0 3040 0\r
+r 184 0 60 0 3039 0\r
+r 184 0 60 0 3038 0\r
+r 184 0 60 0 3028 0\r
+r 184 0 60 0 3026 0\r
+r 184 0 60 0 3025 0\r
+r 184 0 60 0 3018 0\r
+r 184 0 60 0 3017 0\r
+r 184 0 60 0 3016 0\r
+r 184 0 60 0 3015 0\r
+r 184 0 60 0 3012 0\r
+r 184 0 60 0 3011 0\r
+r 184 0 60 0 3010 0\r
+r 184 0 60 0 3009 0\r
+r 184 0 60 0 3008 0\r
+r 184 0 60 0 3007 0\r
+r 184 0 60 0 3005 0\r
+r 184 0 60 0 3004 0\r
+r 184 0 60 0 3003 0\r
+r 184 0 60 0 3002 0\r
+r 184 0 60 0 3001 0\r
+r 184 0 60 0 2996 0\r
+r 184 0 60 0 2995 0\r
+r 184 0 60 0 2994 0\r
+r 184 0 60 0 2993 0\r
+r 184 0 60 0 2992 0\r
+r 184 0 60 0 2991 0\r
+r 184 0 60 0 2990 0\r
+r 184 0 60 0 2989 0\r
+r 184 0 60 0 2988 0\r
+r 184 0 60 0 2987 0\r
+r 184 0 60 0 2986 0\r
+r 184 0 60 0 2985 0\r
+r 184 0 60 0 2981 0\r
+r 184 0 60 0 2980 0\r
+r 184 0 60 0 2975 0\r
+r 184 0 60 0 2970 0\r
+r 184 0 60 0 2969 0\r
+r 184 0 60 0 2956 0\r
+r 184 0 60 0 2953 0\r
+r 184 0 60 0 2951 0\r
+r 184 0 60 0 2949 0\r
+r 184 0 60 0 2948 0\r
+r 184 0 60 0 2946 0\r
+r 184 0 60 0 2938 0\r
+r 184 0 60 0 2937 0\r
+r 184 0 60 0 2936 0\r
+r 184 0 60 0 2935 0\r
+r 184 0 60 0 2934 0\r
+r 184 0 60 0 2933 0\r
+r 184 0 60 0 2932 0\r
+r 184 0 60 0 2930 0\r
+r 184 0 60 0 2927 0\r
+r 184 0 60 0 2926 0\r
+r 184 0 60 0 2925 0\r
+r 184 0 60 0 2924 0\r
+r 184 0 60 0 2923 0\r
+r 184 0 60 0 2918 0\r
+r 184 0 60 0 2917 0\r
+r 184 0 60 0 2916 0\r
+r 184 0 60 0 2912 0\r
+r 184 0 60 0 2905 0\r
+r 184 0 60 0 2904 0\r
+r 184 0 5 0 2307 0\r
+r 184 0 7 0 53 0\r
+r 2233 0 2904 0 60 0\r
+r 2233 0 1 0 10 0 s Superrelation Of\r
+r 185 0 2 0 116 0\r
+r 185 0 2 0 94 0\r
+r 185 0 3 0 2934 0\r
+r 185 0 5 0 2247 0\r
+r 185 0 78 0 186 0\r
+r 185 0 7 0 53 0\r
+r 2234 0 2904 0 319 0\r
+r 2234 0 1 0 10 0 s Has Single Instance\r
+r 186 0 1 0 10 0 s Property relations that need to be acquired through Inherits relations are subrelations of this relation.\r
+r 186 0 2923 0 185 0\r
+r 2235 0 2904 0 315 0\r
+r 2235 0 1 0 10 0 s Intersection Predicate\r
+r 187 0 104 0 188 0\r
+r 187 0 129 0 205 0\r
+r 187 0 2907 0 245 0\r
+r 187 0 59 0 189 0\r
+r 187 0 4 0 52 0\r
+r 187 0 5 0 2385 0\r
+r 187 0 7 0 50 0\r
+r 2236 0 2904 0 115 0\r
+r 2236 0 1 0 10 0 s Is Inheritantly Weakly Related To\r
+r 188 0 1 0 106 0\r
+r 188 0 365 0 187 0\r
+r 188 0 38 0 158 0\r
+r 2237 0 2904 0 317 0\r
+r 2237 0 1 0 10 0 s Trigger\r
+r 189 0 129 0 190 0\r
+r 189 0 129 0 23 0\r
+r 189 0 129 0 22 0\r
+r 189 0 129 0 21 0\r
+r 189 0 129 0 20 0\r
+r 189 0 129 0 19 0\r
+r 189 0 129 0 18 0\r
+r 189 0 129 0 17 0\r
+r 189 0 129 0 14 0\r
+r 189 0 129 0 10 0\r
+r 189 0 145 0 189 0\r
+r 189 0 1 0 187 0\r
+r 189 0 4 0 24 0\r
+r 189 0 2909 0 495 0\r
+r 189 0 5 0 2225 0\r
+r 189 0 7 0 50 0\r
+r 2238 0 2904 0 210 0\r
+r 2238 0 1 0 10 0 s Physical Float\r
+r 190 0 129 0 16 0\r
+r 190 0 129 0 15 0\r
+r 190 0 129 0 13 0\r
+r 190 0 129 0 12 0\r
+r 190 0 129 0 11 0\r
+r 190 0 2907 0 1088 0\r
+r 190 0 4 0 189 0\r
+r 190 0 5 0 2426 0\r
+r 190 0 7 0 50 0\r
+r 2239 0 2904 0 313 0\r
+r 2239 0 1 0 10 0 s Union Predicate\r
+r 191 0 1 0 10 0 s Name\r
+r 191 0 2930 0 5 0\r
+r 2240 0 2904 0 10 0\r
+r 2240 0 1 0 10 0 s String\r
+r 192 0 2921 0 949 0\r
+r 192 0 1 0 42 0\r
+r 192 0 2 0 94 0\r
+r 192 0 3 0 2935 0\r
+r 192 0 28 0 10 0\r
+r 192 0 5 0 2267 0\r
+r 192 0 126 0 193 0\r
+r 192 0 7 0 53 0\r
+r 192 0 2911 0 969 0\r
+r 192 0 2911 0 960 0\r
+r 192 0 2911 0 945 0\r
+r 2241 0 2904 0 13 0\r
+r 2241 0 1 0 10 0 s Float\r
+r 193 0 1 0 10 0 s Label\r
+r 193 0 2930 0 192 0\r
+r 2242 0 2904 0 330 0\r
+r 2242 0 1 0 10 0 s Has Condition\r
+r 194 0 1 0 10 0 s Description\r
+r 194 0 2930 0 78 0\r
+r 2243 0 2904 0 174 0\r
+r 2243 0 1 0 10 0 s Property Type\r
+r 195 0 1 0 42 0\r
+r 195 0 2 0 94 0\r
+r 195 0 3 0 2936 0\r
+r 195 0 28 0 10 0\r
+r 195 0 5 0 2314 0\r
+r 195 0 7 0 53 0\r
+r 2244 0 2904 0 25 0\r
+r 2244 0 1 0 10 0 s Entity\r
+r 196 0 2907 0 158 0\r
+r 196 0 2907 0 39 0\r
+r 196 0 59 0 300 0\r
+r 196 0 4 0 10 0\r
+r 196 0 5 0 2349 0\r
+r 196 0 7 0 50 0\r
+r 2245 0 2904 0 320 0\r
+r 2245 0 1 0 10 0 s Is Single Instance Of\r
+r 197 0 1 0 10 0 s A Uniform Resource Identifier (URI) is just a unique string that uniquely identifies something, commonly a namespace. Sometimes they look like a URL that you could type into the address bar of your web browser, but it doesn't have to point to any physical resource on the web.\r
+r 197 0 2923 0 88 0\r
+r 2246 0 2904 0 219 0\r
+r 2246 0 1 0 10 0 s Query\r
+r 198 0 2907 0 736 0\r
+r 198 0 4 0 88 0\r
+r 198 0 5 0 2344 0\r
+r 198 0 78 0 199 0\r
+r 198 0 7 0 50 0\r
+r 2247 0 2904 0 185 0\r
+r 2247 0 1 0 10 0 s Has Inherited Property\r
+r 199 0 1 0 10 0 s A Uniform Resource Locator (URL) is an URI which locates a resource on the web.\r
+r 199 0 2923 0 198 0\r
+r 2248 0 2904 0 28 0\r
+r 2248 0 1 0 10 0 s Has Range\r
+r 200 0 2 0 7 0\r
+r 200 0 3 0 64 0\r
+r 200 0 5 0 2419 0\r
+r 200 0 7 0 53 0\r
+r 2249 0 2904 0 113 0\r
+r 2249 0 1 0 10 0 s Is Composed Of\r
+r 201 0 2907 0 202 0\r
+r 201 0 4 0 10 0\r
+r 201 0 5 0 2398 0\r
+r 201 0 7 0 50 0\r
+r 2250 0 2904 0 59 0\r
+r 2250 0 1 0 10 0 s Has Instance\r
+r 202 0 2 0 94 0\r
+r 202 0 3 0 2937 0\r
+r 202 0 28 0 201 0\r
+r 202 0 5 0 2226 0\r
+r 202 0 7 0 53 0\r
+r 2251 0 2904 0 133 0\r
+r 2251 0 1 0 10 0 s Sub Extent Of\r
+r 203 0 2907 0 204 0\r
+r 203 0 4 0 10 0\r
+r 203 0 5 0 2348 0\r
+r 203 0 7 0 50 0\r
+r 2252 0 2904 0 7 0\r
+r 2252 0 1 0 10 0 s Part Of\r
+r 204 0 1 0 42 0\r
+r 204 0 2 0 94 0\r
+r 204 0 3 0 2938 0\r
+r 204 0 28 0 203 0\r
+r 204 0 5 0 2423 0\r
+r 204 0 7 0 53 0\r
+r 2253 0 2904 0 41 0\r
+r 2253 0 1 0 10 0 s Some Values Satisfy\r
+r 205 0 104 0 206 0\r
+r 205 0 59 0 211 0\r
+r 205 0 59 0 210 0\r
+r 205 0 59 0 208 0\r
+r 205 0 4 0 187 0\r
+r 205 0 5 0 2407 0\r
+r 205 0 7 0 50 0\r
+r 2254 0 2904 0 44 0\r
+r 2254 0 1 0 10 0 s Has Stubs Package\r
+r 206 0 1 0 106 0\r
+r 206 0 365 0 205 0\r
+r 206 0 38 0 207 0\r
+r 206 0 39 0 107 0\r
+r 2255 0 2904 0 286 0\r
+r 2255 0 1 0 10 0 s Default Property Provider\r
+r 207 0 2 0 103 0\r
+r 207 0 3 0 2939 0\r
+r 207 0 28 0 10 0\r
+r 207 0 5 0 2375 0\r
+r 207 0 7 0 53 0\r
+r 207 0 2911 0 206 0\r
+r 2256 0 2904 0 307 0\r
+r 2256 0 1 0 10 0 s Applies Then\r
+r 208 0 145 0 208 0\r
+r 208 0 1 0 205 0\r
+r 208 0 4 0 12 0\r
+r 208 0 5 0 2430 0\r
+r 208 0 7 0 50 0\r
+r 208 0 207 0 209 0\r
+r 2257 0 2904 0 311 0\r
+r 2257 0 1 0 10 0 s Transitive Closure\r
+r 209 0 1 0 10 0 s Bogus\r
+r 209 0 2939 0 208 0\r
+r 2258 0 2904 0 289 0\r
+r 2258 0 1 0 10 0 s Has Generated Name Prefix\r
+r 210 0 145 0 210 0\r
+r 210 0 1 0 205 0\r
+r 210 0 4 0 13 0\r
+r 210 0 5 0 2238 0\r
+r 210 0 7 0 50 0\r
+r 2259 0 2904 0 273 0\r
+r 2259 0 1 0 10 0 s Has Method\r
+r 211 0 145 0 211 0\r
+r 211 0 1 0 205 0\r
+r 211 0 4 0 11 0\r
+r 211 0 5 0 2346 0\r
+r 211 0 7 0 50 0\r
+r 2260 0 2904 0 136 0\r
+r 2260 0 1 0 10 0 s Includes\r
+r 212 0 2 0 103 0\r
+r 212 0 3 0 2940 0\r
+r 212 0 139 0 217 0\r
+r 212 0 139 0 214 0\r
+r 212 0 28 0 10 0\r
+r 212 0 5 0 2299 0\r
+r 212 0 7 0 53 0\r
+r 212 0 2911 0 218 0\r
+r 212 0 2911 0 215 0\r
+r 2261 0 2904 0 75 0\r
+r 2261 0 1 0 10 0 s Configuration\r
+r 213 0 2 0 103 0\r
+r 213 0 3 0 2941 0\r
+r 213 0 28 0 214 0\r
+r 213 0 5 0 2416 0\r
+r 213 0 7 0 53 0\r
+r 2262 0 2904 0 83 0\r
+r 2262 0 1 0 10 0 s Administration Project\r
+r 214 0 136 0 212 0\r
+r 214 0 104 0 215 0\r
+r 214 0 2907 0 213 0\r
+r 214 0 4 0 25 0\r
+r 214 0 5 0 2405 0\r
+r 214 0 7 0 50 0\r
+r 2263 0 2904 0 130 0\r
+r 2263 0 1 0 10 0 s Extent\r
+r 215 0 1 0 106 0\r
+r 215 0 365 0 214 0\r
+r 215 0 38 0 212 0\r
+r 215 0 39 0 107 0\r
+r 2264 0 2904 0 178 0\r
+r 2264 0 1 0 10 0 s Viewpoint\r
+r 216 0 2 0 103 0\r
+r 216 0 3 0 2942 0\r
+r 216 0 28 0 217 0\r
+r 216 0 5 0 2429 0\r
+r 216 0 7 0 53 0\r
+r 2265 0 2904 0 62 0\r
+r 2265 0 1 0 10 0 s Namespace\r
+r 217 0 136 0 212 0\r
+r 217 0 104 0 218 0\r
+r 217 0 2907 0 216 0\r
+r 217 0 4 0 25 0\r
+r 217 0 5 0 2393 0\r
+r 217 0 7 0 50 0\r
+r 2266 0 2904 0 328 0\r
+r 2266 0 1 0 10 0 s Conditional List\r
+r 218 0 1 0 106 0\r
+r 218 0 365 0 217 0\r
+r 218 0 38 0 212 0\r
+r 218 0 39 0 107 0\r
+r 2267 0 2904 0 192 0\r
+r 2267 0 1 0 10 0 s Has Label\r
+r 219 0 1 0 144 0\r
+r 219 0 2 0 110 0\r
+r 219 0 3 0 2943 0\r
+r 219 0 5 0 2246 0\r
+r 219 0 7 0 53 0\r
+r 2268 0 2904 0 310 0\r
+r 2268 0 1 0 10 0 s Has Binary Predicate\r
+r 220 0 104 0 223 0\r
+r 220 0 104 0 221 0\r
+r 220 0 2907 0 719 0\r
+r 220 0 4 0 25 0\r
+r 220 0 5 0 2324 0\r
+r 220 0 7 0 50 0\r
+r 2269 0 2904 0 301 0\r
+r 2269 0 1 0 10 0 s Binary Predicates\r
+r 221 0 1 0 106 0\r
+r 221 0 365 0 220 0\r
+r 221 0 38 0 222 0\r
+r 221 0 39 0 107 0\r
+r 2270 0 2904 0 5 0\r
+r 2270 0 1 0 10 0 s Has Name\r
+r 222 0 1 0 226 0\r
+r 222 0 2 0 103 0\r
+r 222 0 3 0 227 0\r
+r 222 0 60 0 229 0\r
+r 222 0 5 0 2418 0\r
+r 222 0 7 0 53 0\r
+r 222 0 2911 0 221 0\r
+r 2271 0 2904 0 157 0\r
+r 2271 0 1 0 10 0 s Requirement\r
+r 223 0 1 0 106 0\r
+r 223 0 365 0 220 0\r
+r 223 0 38 0 224 0\r
+r 223 0 39 0 225 0\r
+r 2272 0 2904 0 111 0\r
+r 2272 0 1 0 10 0 s Inverse Of Is Related To\r
+r 224 0 1 0 42 0\r
+r 224 0 2 0 103 0\r
+r 224 0 3 0 2944 0\r
+r 224 0 5 0 2415 0\r
+r 224 0 7 0 53 0\r
+r 224 0 2911 0 223 0\r
+r 2273 0 2904 0 72 0\r
+r 2273 0 1 0 10 0 s Has Object\r
+r 225 0 2912 0 1311 0\r
+r 225 0 2912 0 1305 0\r
+r 225 0 2912 0 1271 0\r
+r 225 0 2912 0 1143 0\r
+r 225 0 2912 0 1137 0\r
+r 225 0 2912 0 1136 0\r
+r 225 0 2912 0 1135 0\r
+r 225 0 2912 0 1130 0\r
+r 225 0 2912 0 1128 0\r
+r 225 0 2912 0 1114 0\r
+r 225 0 2912 0 1087 0\r
+r 225 0 2912 0 983 0\r
+r 225 0 2912 0 969 0\r
+r 225 0 2912 0 964 0\r
+r 225 0 2912 0 963 0\r
+r 225 0 2912 0 962 0\r
+r 225 0 2912 0 961 0\r
+r 225 0 2912 0 960 0\r
+r 225 0 2912 0 945 0\r
+r 225 0 2912 0 870 0\r
+r 225 0 2912 0 869 0\r
+r 225 0 2912 0 868 0\r
+r 225 0 2912 0 867 0\r
+r 225 0 2912 0 861 0\r
+r 225 0 2912 0 860 0\r
+r 225 0 2912 0 859 0\r
+r 225 0 2912 0 814 0\r
+r 225 0 2912 0 772 0\r
+r 225 0 2912 0 586 0\r
+r 225 0 2912 0 579 0\r
+r 225 0 2912 0 577 0\r
+r 225 0 2912 0 575 0\r
+r 225 0 2912 0 573 0\r
+r 225 0 2912 0 571 0\r
+r 225 0 2912 0 569 0\r
+r 225 0 2912 0 565 0\r
+r 225 0 2912 0 563 0\r
+r 225 0 2912 0 559 0\r
+r 225 0 2912 0 557 0\r
+r 225 0 2912 0 551 0\r
+r 225 0 2912 0 525 0\r
+r 225 0 2912 0 523 0\r
+r 225 0 2912 0 521 0\r
+r 225 0 2912 0 473 0\r
+r 225 0 2912 0 441 0\r
+r 225 0 2912 0 348 0\r
+r 225 0 2912 0 346 0\r
+r 225 0 2912 0 333 0\r
+r 225 0 2912 0 247 0\r
+r 225 0 2912 0 241 0\r
+r 225 0 2912 0 223 0\r
+r 225 0 1 0 345 0\r
+r 225 0 347 0 361 0\r
+r 225 0 5 0 360 0\r
+r 225 0 7 0 49 0\r
+r 2274 0 2904 0 151 0\r
+r 2274 0 1 0 10 0 s Assertion\r
+r 226 0 129 0 1054 0\r
+r 226 0 129 0 966 0\r
+r 226 0 129 0 802 0\r
+r 226 0 129 0 801 0\r
+r 226 0 129 0 798 0\r
+r 226 0 129 0 774 0\r
+r 226 0 129 0 485 0\r
+r 226 0 129 0 325 0\r
+r 226 0 59 0 222 0\r
+r 226 0 4 0 42 0\r
+r 226 0 5 0 2279 0\r
+r 226 0 7 0 50 0\r
+r 2275 0 2904 0 64 0\r
+r 2275 0 1 0 10 0 s Consists Of Namespace\r
+r 227 0 2 0 112 0\r
+r 227 0 3 0 222 0\r
+r 227 0 60 0 2945 0\r
+r 227 0 5 0 2289 0\r
+r 227 0 7 0 53 0\r
+r 2276 0 2904 0 249 0\r
+r 2276 0 1 0 10 0 s Has Default Value\r
+r 228 0 9 0 229 0\r
+r 228 0 1 0 57 0\r
+r 228 0 5 0 2357 0\r
+r 228 0 7 0 49 0\r
+r 2277 0 2904 0 323 0\r
+r 2277 0 1 0 10 0 s Operation\r
+r 229 0 2945 0 233 0\r
+r 229 0 2 0 222 0\r
+r 229 0 3 0 2945 0\r
+r 229 0 229 0 230 0\r
+r 229 0 7 0 228 0\r
+r 2278 0 2904 0 274 0\r
+r 2278 0 1 0 10 0 s Generic Relation\r
+r 230 0 2945 0 229 0\r
+r 230 0 1 0 10 0 s First element\r
+r 230 0 229 0 231 0\r
+r 2279 0 2904 0 226 0\r
+r 2279 0 1 0 10 0 s Ordered Set\r
+r 231 0 2945 0 230 0\r
+r 231 0 1 0 10 0 s Second element\r
+r 231 0 229 0 232 0\r
+r 2280 0 2904 0 48 0\r
+r 2280 0 1 0 10 0 s Type Library\r
+r 232 0 2945 0 231 0\r
+r 232 0 1 0 10 0 s Third element\r
+r 232 0 229 0 233 0\r
+r 2281 0 2904 0 278 0\r
+r 2281 0 1 0 10 0 s Relation Application\r
+r 233 0 2945 0 232 0\r
+r 233 0 1 0 10 0 s Fourth element\r
+r 233 0 229 0 229 0\r
+r 2282 0 2904 0 145 0\r
+r 2282 0 1 0 10 0 s Abstract\r
+r 234 0 1 0 106 0\r
+r 234 0 365 0 157 0\r
+r 234 0 38 0 43 0\r
+r 2283 0 2904 0 16 0\r
+r 2283 0 1 0 10 0 s Long\r
+r 235 0 1 0 106 0\r
+r 235 0 365 0 33 0\r
+r 235 0 38 0 27 0\r
+r 2284 0 2904 0 341 0\r
+r 2284 0 1 0 10 0 s Entity Type\r
+r 236 0 1 0 106 0\r
+r 236 0 365 0 32 0\r
+r 236 0 38 0 27 0\r
+r 2285 0 2904 0 78 0\r
+r 2285 0 1 0 10 0 s Has Description\r
+r 237 0 1 0 106 0\r
+r 237 0 365 0 34 0\r
+r 237 0 38 0 27 0\r
+r 237 0 39 0 107 0\r
+r 2286 0 2904 0 101 0\r
+r 2286 0 1 0 10 0 s Has Package Name\r
+r 238 0 1 0 106 0\r
+r 238 0 365 0 36 0\r
+r 238 0 38 0 31 0\r
+r 238 0 39 0 107 0\r
+r 2287 0 2904 0 71 0\r
+r 2287 0 1 0 10 0 s Has Predicate\r
+r 239 0 1 0 106 0\r
+r 239 0 365 0 35 0\r
+r 239 0 38 0 30 0\r
+r 239 0 39 0 107 0\r
+r 2288 0 2904 0 156 0\r
+r 2288 0 1 0 10 0 s Type Extent\r
+r 240 0 1 0 106 0\r
+r 240 0 365 0 37 0\r
+r 240 0 38 0 38 0\r
+r 240 0 39 0 107 0\r
+r 2289 0 2904 0 227 0\r
+r 2289 0 1 0 10 0 s Has Previous\r
+r 241 0 1 0 106 0\r
+r 241 0 365 0 37 0\r
+r 241 0 38 0 39 0\r
+r 241 0 39 0 225 0\r
+r 2290 0 2904 0 318 0\r
+r 2290 0 1 0 10 0 s Has Trigger\r
+r 242 0 1 0 106 0\r
+r 242 0 365 0 37 0\r
+r 242 0 38 0 40 0\r
+r 2291 0 2904 0 268 0\r
+r 2291 0 1 0 10 0 s Model Configurator\r
+r 243 0 1 0 106 0\r
+r 243 0 365 0 37 0\r
+r 243 0 38 0 41 0\r
+r 2292 0 2904 0 308 0\r
+r 2292 0 1 0 10 0 s Inverse Predicate\r
+r 244 0 104 0 247 0\r
+r 244 0 104 0 246 0\r
+r 244 0 104 0 245 0\r
+r 244 0 2907 0 248 0\r
+r 244 0 4 0 157 0\r
+r 244 0 5 0 2347 0\r
+r 244 0 7 0 50 0\r
+r 2293 0 2904 0 36 0\r
+r 2293 0 1 0 10 0 s Equality Requirement\r
+r 245 0 1 0 106 0\r
+r 245 0 28 0 187 0\r
+r 245 0 365 0 244 0\r
+r 245 0 38 0 30 0\r
+r 245 0 39 0 107 0\r
+r 2294 0 2904 0 45 0\r
+r 2294 0 1 0 10 0 s Has Stub Method\r
+r 246 0 1 0 106 0\r
+r 246 0 365 0 244 0\r
+r 246 0 38 0 158 0\r
+r 246 0 39 0 107 0\r
+r 2295 0 2904 0 12 0\r
+r 2295 0 1 0 10 0 s Double\r
+r 247 0 1 0 106 0\r
+r 247 0 365 0 244 0\r
+r 247 0 38 0 159 0\r
+r 247 0 39 0 225 0\r
+r 2296 0 2904 0 43 0\r
+r 2296 0 1 0 10 0 s Ignore\r
+r 248 0 2 0 94 0\r
+r 248 0 3 0 2946 0\r
+r 248 0 28 0 244 0\r
+r 248 0 5 0 2386 0\r
+r 248 0 7 0 53 0\r
+r 2297 0 2904 0 347 0\r
+r 2297 0 1 0 10 0 s Has Max Cardinality\r
+r 249 0 2 0 103 0\r
+r 249 0 3 0 2947 0\r
+r 249 0 5 0 2276 0\r
+r 249 0 7 0 53 0\r
+r 2298 0 2904 0 159 0\r
+r 2298 0 1 0 10 0 s Has Valid Numerical Range\r
+r 250 0 1 0 106 0\r
+r 250 0 365 0 160 0\r
+r 250 0 38 0 5 0\r
+r 250 0 39 0 107 0\r
+r 2299 0 2904 0 212 0\r
+r 2299 0 1 0 10 0 s Has Documentation\r
+r 251 0 1 0 106 0\r
+r 251 0 365 0 160 0\r
+r 251 0 38 0 78 0\r
+r 251 0 39 0 107 0\r
+r 2300 0 2904 0 99 0\r
+r 2300 0 1 0 10 0 s Version\r
+r 252 0 1 0 106 0\r
+r 252 0 365 0 160 0\r
+r 252 0 38 0 61 0\r
+r 252 0 39 0 107 0\r
+r 2301 0 2904 0 139 0\r
+r 2301 0 1 0 10 0 s Is Included With\r
+r 253 0 1 0 106 0\r
+r 253 0 365 0 160 0\r
+r 253 0 38 0 254 0\r
+r 253 0 39 0 107 0\r
+r 2302 0 2904 0 77 0\r
+r 2302 0 1 0 10 0 s Type System Project\r
+r 254 0 2 0 94 0\r
+r 254 0 3 0 2948 0\r
+r 254 0 28 0 10 0\r
+r 254 0 5 0 2328 0\r
+r 254 0 7 0 53 0\r
+r 254 0 2911 0 253 0\r
+r 2303 0 2904 0 9 0\r
+r 2303 0 1 0 10 0 s Consists Of\r
+r 255 0 2904 0 58 0\r
+r 255 0 1 0 10 0 s Default User\r
+r 2304 0 2904 0 293 0\r
+r 2304 0 1 0 10 0 s Conjunction\r
+r 256 0 1 0 10 0 s z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==\r
+r 256 0 2918 0 58 0\r
+r 2305 0 2904 0 267 0\r
+r 2305 0 1 0 10 0 s Library Developer\r
+r 257 0 1 0 10 0 s Anonymous account.\r
+r 257 0 2923 0 58 0\r
+r 2306 0 2904 0 24 0\r
+r 2306 0 1 0 10 0 s Property\r
+r 258 0 1 0 10 0 s anonymous@example.org\r
+r 258 0 2948 0 58 0\r
+r 2307 0 2904 0 184 0\r
+r 2307 0 1 0 10 0 s Property Of\r
+r 259 0 2 0 161 0\r
+r 259 0 3 0 259 0\r
+r 259 0 5 0 2362 0\r
+r 259 0 7 0 53 0\r
+r 2308 0 2904 0 93 0\r
+r 2308 0 1 0 10 0 s Has Resource Class\r
+r 260 0 265 0 260 0\r
+r 260 0 1 0 160 0\r
+r 260 0 61 0 262 0\r
+r 260 0 5 0 261 0\r
+r 260 0 254 0 264 0\r
+r 260 0 78 0 263 0\r
+r 260 0 7 0 73 0\r
+r 2309 0 2904 0 56 1\r
+r 2309 0 1 0 10 0 s Root Library\r
+r 261 0 2904 0 260 0\r
+r 261 0 1 0 10 0 s Administrator\r
+r 2310 0 2904 0 66 0\r
+r 2310 0 1 0 10 0 s Acquires\r
+r 262 0 1 0 10 0 s x61Ey612Kl2gpFL56FT9weDnpSo4AV8j8+qx2AuTHdRyY036xxzTTrw10Wq3+4qQyB+XURPWx1ONxp3Y3pB37A==\r
+r 262 0 2918 0 260 0\r
+r 2311 0 2904 0 171 0\r
+r 2311 0 1 0 10 0 s Property Library\r
+r 263 0 1 0 10 0 s System administrator account.\r
+r 263 0 2923 0 260 0\r
+r 2312 0 2904 0 288 0\r
+r 2312 0 1 0 10 0 s Has Change Code\r
+r 264 0 1 0 10 0 s admin@example.org\r
+r 264 0 2948 0 260 0\r
+r 2313 0 2904 0 37 0\r
+r 2313 0 1 0 10 0 s Relation Requirement\r
+r 265 0 2 0 161 0\r
+r 265 0 3 0 265 0\r
+r 265 0 5 0 2355 0\r
+r 265 0 7 0 53 0\r
+r 2314 0 2904 0 195 0\r
+r 2314 0 1 0 10 0 s Has Stub Name\r
+r 266 0 2 0 161 0\r
+r 266 0 3 0 266 0\r
+r 266 0 5 0 2389 0\r
+r 266 0 7 0 53 0\r
+r 2315 0 2904 0 27 0\r
+r 2315 0 1 0 10 0 s Has Requirement\r
+r 267 0 2 0 161 0\r
+r 267 0 3 0 267 0\r
+r 267 0 5 0 2305 0\r
+r 267 0 7 0 53 0\r
+r 2316 0 2904 0 3 0\r
+r 2316 0 1 0 10 0 s Inverse Of\r
+r 268 0 2 0 161 0\r
+r 268 0 3 0 268 0\r
+r 268 0 5 0 2291 0\r
+r 268 0 7 0 53 0\r
+r 2317 0 2904 0 1 0\r
+r 2317 0 1 0 10 0 s Instance Of\r
+r 269 0 104 0 272 0\r
+r 269 0 104 0 270 0\r
+r 269 0 129 0 278 0\r
+r 269 0 2907 0 273 0\r
+r 269 0 2908 0 277 0\r
+r 269 0 4 0 25 0\r
+r 269 0 5 0 2352 0\r
+r 269 0 7 0 49 0\r
+r 2318 0 2904 0 343 0\r
+r 2318 0 1 0 10 0 s Requires\r
+r 270 0 1 0 106 0\r
+r 270 0 365 0 269 0\r
+r 270 0 38 0 271 0\r
+r 270 0 39 0 107 0\r
+r 2319 0 2904 0 52 0\r
+r 2319 0 1 0 10 0 s Type\r
+r 271 0 2 0 94 0\r
+r 271 0 3 0 2949 0\r
+r 271 0 28 0 10 0\r
+r 271 0 5 0 2229 0\r
+r 271 0 2911 0 275 0\r
+r 271 0 2911 0 270 0\r
+r 271 0 7 0 49 0\r
+r 2320 0 2904 0 277 0\r
+r 2320 0 1 0 10 0 s Is Operation\r
+r 272 0 1 0 106 0\r
+r 272 0 365 0 269 0\r
+r 272 0 38 0 5 0\r
+r 272 0 39 0 107 0\r
+r 2321 0 2904 0 161 0\r
+r 2321 0 1 0 10 0 s Role\r
+r 273 0 2 0 110 0\r
+r 273 0 3 0 2950 0\r
+r 273 0 28 0 269 0\r
+r 273 0 5 0 2259 0\r
+r 273 0 29 0 52 0\r
+r 273 0 7 0 49 0\r
+r 2322 0 2904 0 69 0\r
+r 2322 0 1 0 10 0 s Ontology\r
+r 274 0 104 0 276 0\r
+r 274 0 104 0 275 0\r
+r 274 0 2907 0 282 0\r
+r 274 0 4 0 25 0\r
+r 274 0 5 0 2278 0\r
+r 274 0 7 0 49 0\r
+r 2323 0 2904 0 18 0\r
+r 2323 0 1 0 10 0 s Integer Array\r
+r 275 0 1 0 106 0\r
+r 275 0 365 0 274 0\r
+r 275 0 38 0 271 0\r
+r 275 0 39 0 107 0\r
+r 2324 0 2904 0 220 0\r
+r 2324 0 1 0 10 0 s Linked List\r
+r 276 0 1 0 106 0\r
+r 276 0 365 0 274 0\r
+r 276 0 38 0 5 0\r
+r 276 0 39 0 107 0\r
+r 2325 0 2904 0 57 0\r
+r 2325 0 1 0 10 0 s Library\r
+r 277 0 1 0 144 0\r
+r 277 0 2 0 111 0\r
+r 277 0 2 0 110 0\r
+r 277 0 3 0 277 0\r
+r 277 0 5 0 2320 0\r
+r 277 0 29 0 269 0\r
+r 277 0 7 0 49 0\r
+r 2326 0 2904 0 26 0\r
+r 2326 0 1 0 10 0 s Enumeration\r
+r 278 0 104 0 281 0\r
+r 278 0 104 0 279 0\r
+r 278 0 4 0 269 0\r
+r 278 0 5 0 2281 0\r
+r 278 0 7 0 49 0\r
+r 2327 0 2904 0 22 0\r
+r 2327 0 1 0 10 0 s Byte Array\r
+r 279 0 1 0 106 0\r
+r 279 0 365 0 278 0\r
+r 279 0 38 0 280 0\r
+r 279 0 39 0 107 0\r
+r 2328 0 2904 0 254 0\r
+r 2328 0 1 0 10 0 s Has Email\r
+r 280 0 2 0 94 0\r
+r 280 0 3 0 2951 0\r
+r 280 0 28 0 10 0\r
+r 280 0 5 0 2414 0\r
+r 280 0 2911 0 279 0\r
+r 280 0 7 0 49 0\r
+r 2329 0 2904 0 144 0\r
+r 2329 0 1 0 10 0 s Tag\r
+r 281 0 1 0 106 0\r
+r 281 0 365 0 278 0\r
+r 281 0 38 0 282 0\r
+r 281 0 39 0 107 0\r
+r 2330 0 2904 0 65 0\r
+r 2330 0 1 0 10 0 s Has Namespace Root\r
+r 282 0 2 0 110 0\r
+r 282 0 3 0 2952 0\r
+r 282 0 28 0 274 0\r
+r 282 0 5 0 2417 0\r
+r 282 0 2911 0 281 0\r
+r 282 0 7 0 49 0\r
+r 2331 0 2904 0 0 0\r
+r 2331 0 1 0 10 0 s Relation\r
+r 283 0 2 0 94 0\r
+r 283 0 3 0 2953 0\r
+r 283 0 28 0 10 0\r
+r 283 0 5 0 2382 0\r
+r 283 0 7 0 53 0\r
+r 2332 0 2904 0 63 0\r
+r 2332 0 1 0 10 0 s Namespace Library\r
+r 284 0 129 0 286 0\r
+r 284 0 2907 0 285 0\r
+r 284 0 4 0 25 0\r
+r 284 0 5 0 2373 0\r
+r 284 0 7 0 50 0\r
+r 2333 0 2904 0 21 0\r
+r 2333 0 1 0 10 0 s Boolean Array\r
+r 285 0 2 0 103 0\r
+r 285 0 3 0 2954 0\r
+r 285 0 28 0 284 0\r
+r 285 0 5 0 2408 0\r
+r 285 0 29 0 52 0\r
+r 285 0 7 0 53 0\r
+r 2334 0 2904 0 158 0\r
+r 2334 0 1 0 10 0 s Has Multiplicity\r
+r 286 0 104 0 287 0\r
+r 286 0 4 0 284 0\r
+r 286 0 5 0 2255 0\r
+r 286 0 7 0 50 0\r
+r 2335 0 2904 0 324 0\r
+r 2335 0 1 0 10 0 s Abstract Contextual List\r
+r 287 0 1 0 106 0\r
+r 287 0 365 0 286 0\r
+r 287 0 38 0 94 0\r
+r 2336 0 2904 0 126 0\r
+r 2336 0 1 0 10 0 s Has Attribute Name\r
+r 288 0 2 0 110 0\r
+r 288 0 3 0 2955 0\r
+r 288 0 28 0 16 0\r
+r 288 0 5 0 2312 0\r
+r 288 0 7 0 53 0\r
+r 2337 0 2904 0 344 0\r
+r 2337 0 1 0 10 0 s Evaluates To\r
+r 289 0 192 0 290 0\r
+r 289 0 2 0 94 0\r
+r 289 0 3 0 2956 0\r
+r 289 0 28 0 10 0\r
+r 289 0 5 0 2258 0\r
+r 289 0 78 0 291 0\r
+r 289 0 7 0 53 0\r
+r 2338 0 2904 0 74 0\r
+r 2338 0 1 0 10 0 s Projects\r
+r 290 0 1 0 10 0 s Generated Name Prefix\r
+r 290 0 2935 0 289 0\r
+r 2339 0 2904 0 2 0\r
+r 2339 0 1 0 10 0 s Subrelation Of\r
+r 291 0 1 0 10 0 s Indicates the prefix used to be used for naming instances of the property owner.\r
+r 291 0 2923 0 289 0\r
+r 2340 0 2904 0 295 0\r
+r 2340 0 1 0 10 0 s Disjunction\r
+r 292 0 9 0 297 0\r
+r 292 0 9 0 295 0\r
+r 292 0 9 0 293 0\r
+r 292 0 1 0 57 0\r
+r 292 0 5 0 2432 0\r
+r 292 0 7 0 49 0\r
+r 2341 0 2904 0 175 0\r
+r 2341 0 1 0 10 0 s Viewpoint Library\r
+r 293 0 104 0 294 0\r
+r 293 0 4 0 118 0\r
+r 293 0 5 0 2304 0\r
+r 293 0 7 0 292 0\r
+r 2342 0 2904 0 88 0\r
+r 2342 0 1 0 10 0 s URI\r
+r 294 0 1 0 106 0\r
+r 294 0 28 0 118 0\r
+r 294 0 365 0 293 0\r
+r 294 0 38 0 71 0\r
+r 2343 0 2904 0 31 0\r
+r 2343 0 1 0 10 0 s Has Entity\r
+r 295 0 104 0 296 0\r
+r 295 0 4 0 118 0\r
+r 295 0 5 0 2340 0\r
+r 295 0 7 0 292 0\r
+r 2344 0 2904 0 198 0\r
+r 2344 0 1 0 10 0 s URL\r
+r 296 0 1 0 106 0\r
+r 296 0 28 0 118 0\r
+r 296 0 365 0 295 0\r
+r 296 0 38 0 71 0\r
+r 2345 0 2904 0 106 0\r
+r 2345 0 1 0 10 0 s Property Definition\r
+r 297 0 27 0 298 0\r
+r 297 0 4 0 118 0\r
+r 297 0 5 0 2376 0\r
+r 297 0 7 0 292 0\r
+r 2346 0 2904 0 211 0\r
+r 2346 0 1 0 10 0 s Physical Integer\r
+r 298 0 40 0 299 0\r
+r 298 0 1 0 37 0\r
+r 298 0 2906 0 297 0\r
+r 298 0 38 0 71 0\r
+r 2347 0 2904 0 244 0\r
+r 2347 0 1 0 10 0 s Value Requirement\r
+r 299 0 2913 0 298 0\r
+r 299 0 1 0 37 0\r
+r 299 0 38 0 118 0\r
+r 299 0 39 0 300 0\r
+r 2348 0 2904 0 203 0\r
+r 2348 0 1 0 10 0 s Default Perspective\r
+r 300 0 2912 0 299 0\r
+r 300 0 1 0 196 0 s 1\r
+r 2349 0 2904 0 196 0\r
+r 2349 0 1 0 10 0 s Integer Range Union\r
+r 301 0 9 0 315 0\r
+r 301 0 9 0 313 0\r
+r 301 0 9 0 311 0\r
+r 301 0 9 0 310 0\r
+r 301 0 9 0 308 0\r
+r 301 0 9 0 307 0\r
+r 301 0 9 0 305 0\r
+r 301 0 9 0 303 0\r
+r 301 0 9 0 302 0\r
+r 301 0 1 0 57 0\r
+r 301 0 5 0 2269 0\r
+r 301 0 7 0 49 0\r
+r 2350 0 2904 0 38 0\r
+r 2350 0 1 0 10 0 s Concerns Relation\r
+r 302 0 1 0 123 0\r
+r 302 0 5 0 2388 0\r
+r 302 0 2911 0 915 0\r
+r 302 0 7 0 301 0\r
+r 2351 0 2904 0 141 0\r
+r 2351 0 1 0 10 0 s Is Propagated With\r
+r 303 0 104 0 306 0\r
+r 303 0 104 0 304 0\r
+r 303 0 4 0 123 0\r
+r 303 0 5 0 2232 0\r
+r 303 0 7 0 301 0\r
+r 2352 0 2904 0 269 0\r
+r 2352 0 1 0 10 0 s Function\r
+r 304 0 1 0 106 0\r
+r 304 0 365 0 303 0\r
+r 304 0 38 0 305 0\r
+r 304 0 39 0 107 0\r
+r 2353 0 2904 0 4 0\r
+r 2353 0 1 0 10 0 s Inherits\r
+r 305 0 2 0 110 0\r
+r 305 0 3 0 2957 0\r
+r 305 0 28 0 123 0\r
+r 305 0 5 0 2354 0\r
+r 305 0 2911 0 304 0\r
+r 305 0 7 0 301 0\r
+r 2354 0 2904 0 305 0\r
+r 2354 0 1 0 10 0 s Applies First\r
+r 306 0 1 0 106 0\r
+r 306 0 365 0 303 0\r
+r 306 0 38 0 307 0\r
+r 306 0 39 0 107 0\r
+r 2355 0 2904 0 265 0\r
+r 2355 0 1 0 10 0 s Admin\r
+r 307 0 2 0 110 0\r
+r 307 0 3 0 2958 0\r
+r 307 0 28 0 123 0\r
+r 307 0 5 0 2256 0\r
+r 307 0 2911 0 306 0\r
+r 307 0 7 0 301 0\r
+r 2356 0 2904 0 134 0\r
+r 2356 0 1 0 10 0 s Super Extent Of\r
+r 308 0 104 0 309 0\r
+r 308 0 4 0 123 0\r
+r 308 0 5 0 2292 0\r
+r 308 0 7 0 301 0\r
+r 2357 0 2904 0 228 0\r
+r 2357 0 1 0 10 0 s Examples\r
+r 309 0 1 0 106 0\r
+r 309 0 365 0 308 0\r
+r 309 0 38 0 310 0\r
+r 309 0 39 0 107 0\r
+r 2358 0 2904 0 142 0\r
+r 2358 0 1 0 10 0 s Propagates To\r
+r 310 0 2 0 110 0\r
+r 310 0 3 0 2959 0\r
+r 310 0 28 0 123 0\r
+r 310 0 5 0 2268 0\r
+r 310 0 2911 0 316 0\r
+r 310 0 2911 0 314 0\r
+r 310 0 2911 0 312 0\r
+r 310 0 2911 0 309 0\r
+r 310 0 7 0 301 0\r
+r 2359 0 2904 0 137 0\r
+r 2359 0 1 0 10 0 s Propagates\r
+r 311 0 104 0 312 0\r
+r 311 0 4 0 123 0\r
+r 311 0 5 0 2257 0\r
+r 311 0 7 0 301 0\r
+r 2360 0 2904 0 40 0\r
+r 2360 0 1 0 10 0 s All Values Satisfy\r
+r 312 0 1 0 106 0\r
+r 312 0 365 0 311 0\r
+r 312 0 38 0 310 0\r
+r 312 0 39 0 107 0\r
+r 2361 0 2904 0 143 0\r
+r 2361 0 1 0 10 0 s Propagates From\r
+r 313 0 104 0 314 0\r
+r 313 0 4 0 123 0\r
+r 313 0 5 0 2239 0\r
+r 313 0 7 0 301 0\r
+r 2362 0 2904 0 259 0\r
+r 2362 0 1 0 10 0 s Model User\r
+r 314 0 1 0 106 0\r
+r 314 0 365 0 313 0\r
+r 314 0 38 0 310 0\r
+r 2363 0 2904 0 342 0\r
+r 2363 0 1 0 10 0 s Constraint\r
+r 315 0 104 0 316 0\r
+r 315 0 4 0 123 0\r
+r 315 0 5 0 2235 0\r
+r 315 0 7 0 301 0\r
+r 2364 0 2904 0 128 0\r
+r 2364 0 1 0 10 0 s Final\r
+r 316 0 1 0 106 0\r
+r 316 0 365 0 315 0\r
+r 316 0 38 0 310 0\r
+r 2365 0 2904 0 94 0\r
+r 2365 0 1 0 10 0 s Has Property\r
+r 317 0 129 0 1049 0\r
+r 317 0 2907 0 318 0\r
+r 317 0 4 0 25 0\r
+r 317 0 5 0 2237 0\r
+r 317 0 7 0 49 0\r
+r 2366 0 2904 0 97 0\r
+r 2366 0 1 0 10 0 s Has Version\r
+r 318 0 2 0 110 0\r
+r 318 0 3 0 2960 0\r
+r 318 0 28 0 317 0\r
+r 318 0 5 0 2290 0\r
+r 318 0 7 0 49 0\r
+r 2367 0 2904 0 325 0\r
+r 2367 0 1 0 10 0 s Contextual List\r
+r 319 0 2 0 111 0\r
+r 319 0 2 0 110 0\r
+r 319 0 3 0 320 0\r
+r 319 0 5 0 2234 0\r
+r 319 0 2911 0 322 0\r
+r 319 0 7 0 49 0\r
+r 2368 0 2904 0 179 0\r
+r 2368 0 1 0 10 0 s Tag Library\r
+r 320 0 2 0 111 0\r
+r 320 0 2 0 110 0\r
+r 320 0 3 0 319 0\r
+r 320 0 5 0 2245 0\r
+r 320 0 7 0 49 0\r
+r 2369 0 2904 0 6 0\r
+r 2369 0 1 0 10 0 s Has Namespace\r
+r 321 0 104 0 322 0\r
+r 321 0 4 0 52 0\r
+r 321 0 5 0 2412 0\r
+r 321 0 7 0 49 0\r
+r 2370 0 2904 0 17 0\r
+r 2370 0 1 0 10 0 s String Array\r
+r 322 0 1 0 106 0\r
+r 322 0 365 0 321 0\r
+r 322 0 38 0 319 0\r
+r 322 0 39 0 107 0\r
+r 2371 0 2904 0 123 0\r
+r 2371 0 1 0 10 0 s Binary Predicate\r
+r 323 0 59 0 1077 0\r
+r 323 0 59 0 1075 0\r
+r 323 0 59 0 1072 0\r
+r 323 0 59 0 1071 0\r
+r 323 0 59 0 1069 0\r
+r 323 0 59 0 1068 0\r
+r 323 0 59 0 1066 0\r
+r 323 0 59 0 1064 0\r
+r 323 0 59 0 1061 0\r
+r 323 0 4 0 25 0\r
+r 323 0 5 0 2277 0\r
+r 323 0 7 0 49 0\r
+r 2372 0 2904 0 11 0\r
+r 2372 0 1 0 10 0 s Integer\r
+r 324 0 129 0 328 0\r
+r 324 0 129 0 326 0\r
+r 324 0 129 0 325 0\r
+r 324 0 2907 0 334 0\r
+r 324 0 2907 0 332 0\r
+r 324 0 4 0 25 0\r
+r 324 0 5 0 2335 0\r
+r 324 0 7 0 49 0\r
+r 2373 0 2904 0 284 0\r
+r 2373 0 1 0 10 0 s Property Provider\r
+r 325 0 59 0 1073 0\r
+r 325 0 59 0 1070 0\r
+r 325 0 59 0 1067 0\r
+r 325 0 59 0 1062 0\r
+r 325 0 59 0 1060 0\r
+r 325 0 4 0 324 0\r
+r 325 0 4 0 226 0\r
+r 325 0 5 0 2367 0\r
+r 325 0 7 0 49 0\r
+r 2374 0 2904 0 131 0\r
+r 2374 0 1 0 10 0 s Has Extent\r
+r 326 0 104 0 327 0\r
+r 326 0 59 0 1059 0\r
+r 326 0 59 0 1058 0\r
+r 326 0 4 0 324 0\r
+r 326 0 5 0 2390 0\r
+r 326 0 7 0 49 0\r
+r 2375 0 2904 0 207 0\r
+r 2375 0 1 0 10 0 s Has Unit\r
+r 327 0 1 0 106 0\r
+r 327 0 365 0 326 0\r
+r 327 0 38 0 127 0\r
+r 327 0 39 0 107 0\r
+r 2376 0 2904 0 297 0\r
+r 2376 0 1 0 10 0 s Negation\r
+r 328 0 104 0 333 0\r
+r 328 0 104 0 331 0\r
+r 328 0 104 0 329 0\r
+r 328 0 59 0 1076 0\r
+r 328 0 59 0 1074 0\r
+r 328 0 59 0 1065 0\r
+r 328 0 59 0 1063 0\r
+r 328 0 4 0 324 0\r
+r 328 0 5 0 2266 0\r
+r 328 0 7 0 49 0\r
+r 2377 0 2904 0 35 0\r
+r 2377 0 1 0 10 0 s Type Requirement\r
+r 329 0 1 0 106 0\r
+r 329 0 365 0 328 0\r
+r 329 0 38 0 330 0\r
+r 329 0 39 0 107 0\r
+r 2378 0 2904 0 154 0\r
+r 2378 0 1 0 10 0 s Overridable Assertion\r
+r 330 0 2 0 110 0\r
+r 330 0 3 0 2961 0\r
+r 330 0 28 0 118 0\r
+r 330 0 5 0 2242 0\r
+r 330 0 2911 0 329 0\r
+r 330 0 7 0 49 0\r
+r 2379 0 2904 0 116 0\r
+r 2379 0 1 0 10 0 s Is Inheritantly Related To\r
+r 331 0 1 0 106 0\r
+r 331 0 365 0 328 0\r
+r 331 0 38 0 332 0\r
+r 331 0 39 0 107 0\r
+r 2380 0 2904 0 34 0\r
+r 2380 0 1 0 10 0 s Requirement Negation\r
+r 332 0 2 0 110 0\r
+r 332 0 3 0 2962 0\r
+r 332 0 28 0 324 0\r
+r 332 0 5 0 2428 0\r
+r 332 0 2911 0 331 0\r
+r 332 0 7 0 49 0\r
+r 2381 0 2904 0 68 0\r
+r 2381 0 1 0 10 0 s Acquiring Relation\r
+r 333 0 1 0 106 0\r
+r 333 0 365 0 328 0\r
+r 333 0 38 0 334 0\r
+r 333 0 39 0 225 0\r
+r 2382 0 2904 0 283 0\r
+r 2382 0 1 0 10 0 s Has Textual Issue\r
+r 334 0 2 0 110 0\r
+r 334 0 3 0 2963 0\r
+r 334 0 28 0 324 0\r
+r 334 0 5 0 2230 0\r
+r 334 0 2911 0 333 0\r
+r 334 0 7 0 49 0\r
+r 2383 0 2904 0 127 0\r
+r 2383 0 1 0 10 0 s Has Relation\r
+r 335 0 1 0 14 0 b true\r
+r 335 0 5 0 336 0\r
+r 335 0 7 0 49 0\r
+r 2384 0 2904 0 132 0\r
+r 2384 0 1 0 10 0 s Extent Of\r
+r 336 0 2904 0 335 0\r
+r 336 0 1 0 10 0 s True\r
+r 2385 0 2904 0 187 0\r
+r 2385 0 1 0 10 0 s Value Type\r
+r 337 0 1 0 14 0 b false\r
+r 337 0 5 0 338 0\r
+r 337 0 7 0 49 0\r
+r 2386 0 2904 0 248 0\r
+r 2386 0 1 0 10 0 s Has Value Requirement\r
+r 338 0 2904 0 337 0\r
+r 338 0 1 0 10 0 s False\r
+r 2387 0 2904 0 80 0\r
+r 2387 0 1 0 10 0 s Has Comment\r
+r 339 0 1 0 10 0 s \r
+r 339 0 5 0 340 0\r
+r 339 0 7 0 49 0\r
+r 2388 0 2904 0 302 0\r
+r 2388 0 1 0 10 0 s Ordered Set Elements\r
+r 340 0 2904 0 339 0\r
+r 340 0 1 0 10 0 s Empty String\r
+r 2389 0 2904 0 266 0\r
+r 2389 0 1 0 10 0 s Kernel Developer\r
+r 341 0 4 0 52 0\r
+r 341 0 5 0 2284 0\r
+r 341 0 7 0 49 0\r
+r 2390 0 2904 0 326 0\r
+r 2390 0 1 0 10 0 s Type Based List\r
+r 342 0 4 0 25 0\r
+r 342 0 5 0 2363 0\r
+r 342 0 7 0 49 0\r
+r 2391 0 2904 0 61 0\r
+r 2391 0 1 0 10 0 s Has Password Hash\r
+r 343 0 2 0 110 0\r
+r 343 0 3 0 2964 0\r
+r 343 0 5 0 2318 0\r
+r 343 0 7 0 49 0\r
+r 2392 0 2904 0 85 0\r
+r 2392 0 1 0 10 0 s Type System Namespaces\r
+r 344 0 2 0 110 0\r
+r 344 0 3 0 2965 0\r
+r 344 0 5 0 2337 0\r
+r 344 0 7 0 49 0\r
+r 2393 0 2904 0 217 0\r
+r 2393 0 1 0 10 0 s Document Template\r
+r 345 0 104 0 348 0\r
+r 345 0 104 0 346 0\r
+r 345 0 59 0 362 0\r
+r 345 0 59 0 356 0\r
+r 345 0 59 0 350 0\r
+r 345 0 59 0 225 0\r
+r 345 0 59 0 107 0\r
+r 345 0 4 0 25 0\r
+r 345 0 5 0 2397 0\r
+r 345 0 7 0 49 0\r
+r 2394 0 2904 0 73 0\r
+r 2394 0 1 0 10 0 s Users\r
+r 346 0 1 0 106 0\r
+r 346 0 28 0 11 0\r
+r 346 0 365 0 345 0\r
+r 346 0 38 0 347 0\r
+r 346 0 39 0 225 0\r
+r 2395 0 2904 0 42 0\r
+r 2395 0 1 0 10 0 s Functional Relation\r
+r 347 0 2 0 110 0\r
+r 347 0 3 0 2966 0\r
+r 347 0 5 0 2297 0\r
+r 347 0 2911 0 346 0\r
+r 347 0 7 0 49 0\r
+r 2396 0 2904 0 23 0\r
+r 2396 0 1 0 10 0 s Long Array\r
+r 348 0 1 0 106 0\r
+r 348 0 28 0 11 0\r
+r 348 0 365 0 345 0\r
+r 348 0 38 0 349 0\r
+r 348 0 39 0 225 0\r
+r 2397 0 2904 0 345 0\r
+r 2397 0 1 0 10 0 s Cardinality Restriction\r
+r 349 0 2 0 110 0\r
+r 349 0 3 0 2967 0\r
+r 349 0 5 0 2403 0\r
+r 349 0 2911 0 348 0\r
+r 349 0 7 0 49 0\r
+r 2398 0 2904 0 201 0\r
+r 2398 0 1 0 10 0 s Perspective\r
+r 350 0 2912 0 1132 0\r
+r 350 0 1 0 345 0\r
+r 350 0 347 0 352 0\r
+r 350 0 5 0 351 0\r
+r 350 0 7 0 49 0\r
+r 2399 0 2904 0 109 0\r
+r 2399 0 1 0 10 0 s Context\r
+r 351 0 2904 0 350 0\r
+r 351 0 1 0 10 0 s Cardinality 0\r
+r 2400 0 2904 0 14 0\r
+r 2400 0 1 0 10 0 s Boolean\r
+r 352 0 1 0 11 0 i 0\r
+r 352 0 2966 0 350 0\r
+r 2401 0 2904 0 29 0\r
+r 2401 0 1 0 10 0 s Has Domain\r
+r 353 0 2904 0 107 0\r
+r 353 0 1 0 10 0 s Cardinality 1\r
+r 2402 0 2904 0 67 0\r
+r 2402 0 1 0 10 0 s Is Acquired By\r
+r 354 0 1 0 11 0 i 1\r
+r 354 0 2967 0 107 0\r
+r 2403 0 2904 0 349 0\r
+r 2403 0 1 0 10 0 s Has Min Cardinality\r
+r 355 0 1 0 11 0 i 1\r
+r 355 0 2966 0 107 0\r
+r 2404 0 2904 0 8 0\r
+r 2404 0 1 0 10 0 s Is Weakly Related To\r
+r 356 0 2912 0 688 0\r
+r 356 0 1 0 345 0\r
+r 356 0 347 0 359 0\r
+r 356 0 349 0 358 0\r
+r 356 0 5 0 357 0\r
+r 356 0 7 0 49 0\r
+r 2405 0 2904 0 214 0\r
+r 2405 0 1 0 10 0 s Report\r
+r 357 0 2904 0 356 0\r
+r 357 0 1 0 10 0 s Cardinality 2\r
+r 2406 0 2904 0 114 0\r
+r 2406 0 1 0 10 0 s Is Owned By\r
+r 358 0 1 0 11 0 i 2\r
+r 358 0 2967 0 356 0\r
+r 2407 0 2904 0 205 0\r
+r 2407 0 1 0 10 0 s Physical Property Type\r
+r 359 0 1 0 11 0 i 2\r
+r 359 0 2966 0 356 0\r
+r 2408 0 2904 0 285 0\r
+r 2408 0 1 0 10 0 s Has Property Provider\r
+r 360 0 2904 0 225 0\r
+r 360 0 1 0 10 0 s Cardinality at most 1\r
+r 2409 0 2904 0 160 0\r
+r 2409 0 1 0 10 0 s User\r
+r 361 0 1 0 11 0 i 1\r
+r 361 0 2966 0 225 0\r
+r 2410 0 2904 0 112 0\r
+r 2410 0 1 0 10 0 s Is Dependency Of\r
+r 362 0 2912 0 648 0\r
+r 362 0 1 0 345 0\r
+r 362 0 349 0 364 0\r
+r 362 0 5 0 363 0\r
+r 362 0 7 0 49 0\r
+r 2411 0 2904 0 20 0\r
+r 2411 0 1 0 10 0 s Float Array\r
+r 363 0 2904 0 362 0\r
+r 363 0 1 0 10 0 s Cardinality at least 1\r
+r 2412 0 2904 0 321 0\r
+r 2412 0 1 0 10 0 s Singleton\r
+r 364 0 1 0 11 0 i 1\r
+r 364 0 2967 0 362 0\r
+r 2413 0 2904 0 32 0\r
+r 2413 0 1 0 10 0 s Requirement Conjunction\r
+r 365 0 2 0 111 0\r
+r 365 0 2 0 110 0\r
+r 365 0 3 0 104 0\r
+r 365 0 5 0 2433 0\r
+r 365 0 7 0 53 0\r
+r 2414 0 2904 0 280 0\r
+r 2414 0 1 0 10 0 s Has Binding Pattern\r
+r 366 0 9 0 408 0\r
+r 366 0 9 0 401 0\r
+r 366 0 9 0 398 0\r
+r 366 0 9 0 397 0\r
+r 366 0 9 0 396 0\r
+r 366 0 9 0 394 0\r
+r 366 0 9 0 392 0\r
+r 366 0 9 0 390 0\r
+r 366 0 9 0 389 0\r
+r 366 0 9 0 388 0\r
+r 366 0 9 0 384 0\r
+r 366 0 9 0 383 0\r
+r 366 0 9 0 381 0\r
+r 366 0 9 0 380 0\r
+r 366 0 9 0 379 0\r
+r 366 0 9 0 376 0\r
+r 366 0 9 0 375 0\r
+r 366 0 97 0 369 0\r
+r 366 0 1 0 69 0\r
+r 366 0 93 0 370 0\r
+r 366 0 5 0 367 0\r
+r 366 0 6 0 368 0\r
+r 366 0 2919 0 371 0\r
+r 366 0 7 0 89 0\r
+r 366 0 7 0 77 0\r
+r 2415 0 2904 0 224 0\r
+r 2415 0 1 0 10 0 s Has Element\r
+r 367 0 2904 0 366 0\r
+r 367 0 1 0 10 0 s Project-1.0\r
+r 2416 0 2904 0 213 0\r
+r 2416 0 1 0 10 0 s Has Report Factory\r
+r 368 0 2905 0 366 0\r
+r 368 0 1 0 88 0 s http://www.simantics.org/Ontology/Project/1.0\r
+r 2417 0 2904 0 282 0\r
+r 2417 0 1 0 10 0 s Applies Relation\r
+r 369 0 1 0 99 0 s 1.0\r
+r 369 0 2926 0 366 0\r
+r 2418 0 2904 0 222 0\r
+r 2418 0 1 0 10 0 s Has Next\r
+r 370 0 1 0 10 0 s org.simantics.db.Builtins\r
+r 370 0 2925 0 366 0\r
+r 2419 0 2904 0 200 0\r
+r 2419 0 1 0 10 0 s Namespace Of\r
+r 371 0 200 0 56 1\r
+r 371 0 65 0 366 0\r
+r 371 0 1 0 62 0\r
+r 371 0 5 0 372 0\r
+r 371 0 6 0 373 0\r
+r 371 0 7 0 85 0\r
+r 2420 0 2904 0 104 0\r
+r 2420 0 1 0 10 0 s Has Property Definition\r
+r 372 0 2904 0 371 0\r
+r 372 0 1 0 10 0 s http://www.simantics.org/Ontology/Project/1.0\r
+r 2421 0 2904 0 55 0\r
+r 2421 0 1 0 10 0 s Relation Library\r
+r 373 0 2905 0 371 0\r
+r 373 0 1 0 88 0 s http://www.simantics.org/Ontology/Project/1.0\r
+r 2422 0 2904 0 129 0\r
+r 2422 0 1 0 10 0 s Supertype Of\r
+r 374 0 9 0 1353 0\r
+r 374 0 9 0 1100 0\r
+r 374 0 9 0 1020 0\r
+r 374 0 9 0 891 0\r
+r 374 0 9 0 410 0\r
+r 374 0 1 0 25 0\r
+r 374 0 5 0 2777 0\r
+r 374 0 7 0 75 0\r
+r 2423 0 2904 0 204 0\r
+r 2423 0 1 0 10 0 s Has Default Perspective\r
+r 375 0 59 0 376 0\r
+r 375 0 4 0 25 0\r
+r 375 0 5 0 2774 0\r
+r 375 0 7 0 366 0\r
+r 2424 0 2904 0 103 0\r
+r 2424 0 1 0 10 0 s Depends On\r
+r 376 0 1056 0 1070 0\r
+r 376 0 104 0 378 0\r
+r 376 0 104 0 377 0\r
+r 376 0 1 0 375 0\r
+r 376 0 59 0 83 0\r
+r 376 0 59 0 77 0\r
+r 376 0 4 0 109 0\r
+r 376 0 4 0 57 0\r
+r 376 0 5 0 2776 0\r
+r 376 0 7 0 366 0\r
+r 2425 0 2904 0 110 0\r
+r 2425 0 1 0 10 0 s Is Related To\r
+r 377 0 1 0 106 0\r
+r 377 0 28 0 57 0\r
+r 377 0 365 0 376 0\r
+r 377 0 38 0 9 0\r
+r 2426 0 2904 0 190 0\r
+r 2426 0 1 0 10 0 s Number\r
+r 378 0 1 0 106 0\r
+r 378 0 365 0 376 0\r
+r 378 0 38 0 379 0\r
+r 2427 0 2904 0 118 0\r
+r 2427 0 1 0 10 0 s Predicate\r
+r 379 0 2 0 103 0\r
+r 379 0 3 0 2968 0\r
+r 379 0 28 0 387 0\r
+r 379 0 5 0 2773 0\r
+r 379 0 7 0 366 0\r
+r 379 0 2911 0 378 0\r
+r 2428 0 2904 0 332 0\r
+r 2428 0 1 0 10 0 s Has Then Element\r
+r 380 0 2 0 94 0\r
+r 380 0 3 0 2969 0\r
+r 380 0 28 0 10 0\r
+r 380 0 5 0 2778 0\r
+r 380 0 7 0 366 0\r
+r 380 0 2911 0 386 0\r
+r 2429 0 2904 0 216 0\r
+r 2429 0 1 0 10 0 s Has Document Template\r
+r 381 0 129 0 453 0\r
+r 381 0 129 0 408 0\r
+r 381 0 129 0 398 0\r
+r 381 0 129 0 397 0\r
+r 381 0 129 0 396 0\r
+r 381 0 2906 0 387 0\r
+r 381 0 2907 0 392 0\r
+r 381 0 2907 0 390 0\r
+r 381 0 59 0 1354 0\r
+r 381 0 59 0 1103 0\r
+r 381 0 59 0 1100 0\r
+r 381 0 59 0 1022 0\r
+r 381 0 59 0 1021 0\r
+r 381 0 59 0 1020 0\r
+r 381 0 59 0 891 0\r
+r 381 0 59 0 410 0\r
+r 381 0 2908 0 392 0\r
+r 381 0 2908 0 390 0\r
+r 381 0 2908 0 383 0\r
+r 381 0 4 0 25 0\r
+r 381 0 5 0 2787 0\r
+r 381 0 78 0 382 0\r
+r 381 0 7 0 366 0\r
+r 2430 0 2904 0 208 0\r
+r 2430 0 1 0 10 0 s Physical Double\r
+r 382 0 1 0 10 0 s An entity that is used to attach a feature to a project instance. Features are defined through database resource adaptation. This feature can then configure itself into that project and also deconfigure itself from that project. The configuration happens through the org.simantics.project.features.IProjectFeature interface into which instances of this entity must be adaptable. Project features should also be adaptable to org.simatnics.project.features.IProjectFeatureDescriptor and optionally org.simantics.project.IProjectLifeCycle.\r
+r 382 0 2923 0 381 0\r
+r 2431 0 2904 0 70 0\r
+r 2431 0 1 0 10 0 s Asserts\r
+r 383 0 1 0 144 0\r
+r 383 0 2 0 111 0\r
+r 383 0 2 0 110 0\r
+r 383 0 3 0 383 0\r
+r 383 0 5 0 2775 0\r
+r 383 0 29 0 381 0\r
+r 383 0 7 0 366 0\r
+r 2432 0 2904 0 292 0\r
+r 2432 0 1 0 10 0 s Predicates\r
+r 384 0 104 0 386 0\r
+r 384 0 2906 0 387 0\r
+r 384 0 4 0 25 0\r
+r 384 0 5 0 2784 0\r
+r 384 0 78 0 385 0\r
+r 384 0 7 0 366 0\r
+r 2433 0 2904 0 365 0\r
+r 2433 0 1 0 10 0 s Is Property Definition Of\r
+r 385 0 1 0 10 0 s An entity that is used to attach a feature to a project instance. Extension features are defined through the Eclipse extension framework. This feature can then configure itself into that project and also deconfigure itself from that project. The configuration happens through the org.simantics.project.features.IProjectFeature interface into which instances of this entity must be adaptable.\r
+r 385 0 2923 0 384 0\r
+r 2434 0 2904 0 76 0\r
+r 2434 0 1 0 10 0 s Agent Servers\r
+r 386 0 1 0 106 0\r
+r 386 0 365 0 384 0\r
+r 386 0 38 0 380 0\r
+r 386 0 39 0 107 0\r
+r 2435 0 2904 0 15 0\r
+r 2435 0 1 0 10 0 s Byte\r
+r 387 0 1 0 33 0\r
+r 387 0 2907 0 379 0\r
+r 387 0 27 0 384 0\r
+r 387 0 27 0 381 0\r
+r 2436 0 2904 0 978 0\r
+r 2436 0 1 0 10 0 s Is Branch Point Of\r
+r 388 0 2 0 103 0\r
+r 388 0 3 0 389 0\r
+r 388 0 5 0 2783 0\r
+r 388 0 7 0 366 0\r
+r 2437 0 2904 0 1012 0\r
+r 2437 0 1 0 10 0 s Landscape\r
+r 389 0 2 0 112 0\r
+r 389 0 3 0 388 0\r
+r 389 0 5 0 2769 0\r
+r 389 0 7 0 366 0\r
+r 2438 0 2904 0 955 0\r
+r 2438 0 1 0 10 0 s Has Link Target\r
+r 390 0 2 0 111 0\r
+r 390 0 2 0 110 0\r
+r 390 0 3 0 390 0\r
+r 390 0 28 0 381 0\r
+r 390 0 5 0 2782 0\r
+r 390 0 29 0 381 0\r
+r 390 0 78 0 391 0\r
+r 390 0 7 0 366 0\r
+r 2439 0 2904 0 920 0\r
+r 2439 0 1 0 10 0 s Has Allowed Connection Direction\r
+r 391 0 1 0 10 0 s Used to indicate that the referencing feature is guaranteed to be compatible with the referenced feature.\r
+r 391 0 2923 0 390 0\r
+r 2440 0 2904 0 916 0\r
+r 2440 0 1 0 10 0 s Shape\r
+r 392 0 2 0 111 0\r
+r 392 0 2 0 110 0\r
+r 392 0 3 0 392 0\r
+r 392 0 28 0 381 0\r
+r 392 0 5 0 2779 0\r
+r 392 0 29 0 381 0\r
+r 392 0 78 0 393 0\r
+r 392 0 7 0 366 0\r
+r 2441 0 2904 0 965 0\r
+r 2441 0 1 0 10 0 s Has Resource Path\r
+r 393 0 1 0 10 0 s Used to indicate that the referencing feature is known to be incompatible with the referenced feature.\r
+r 393 0 2923 0 392 0\r
+r 2442 0 2904 0 911 0\r
+r 2442 0 1 0 10 0 s Has Connection Variable\r
+r 394 0 2 0 94 0\r
+r 394 0 3 0 2970 0\r
+r 394 0 28 0 395 0\r
+r 394 0 5 0 2781 0\r
+r 394 0 7 0 366 0\r
+r 394 0 2911 0 409 0\r
+r 394 0 2911 0 400 0\r
+r 2443 0 2904 0 909 0\r
+r 2443 0 1 0 10 0 s Terminal\r
+r 395 0 1 0 33 0\r
+r 395 0 2907 0 394 0\r
+r 395 0 27 0 88 0\r
+r 395 0 27 0 62 0\r
+r 2444 0 2904 0 996 0\r
+r 2444 0 1 0 10 0 s Is Active\r
+r 396 0 59 0 402 0\r
+r 396 0 4 0 381 0\r
+r 396 0 5 0 2772 0\r
+r 396 0 7 0 366 0\r
+r 2445 0 2904 0 931 0\r
+r 2445 0 1 0 10 0 s Has Flag Type\r
+r 397 0 59 0 405 0\r
+r 397 0 4 0 381 0\r
+r 397 0 5 0 2785 0\r
+r 397 0 7 0 366 0\r
+r 2446 0 2904 0 953 0\r
+r 2446 0 1 0 10 0 s Link\r
+r 398 0 104 0 400 0\r
+r 398 0 4 0 381 0\r
+r 398 0 5 0 2786 0\r
+r 398 0 78 0 399 0\r
+r 398 0 7 0 366 0\r
+r 2447 0 2904 0 903 0\r
+r 2447 0 1 0 10 0 s Composite\r
+r 399 0 1 0 10 0 s Features of this type are used for describing ontology requirements.\r
+r 399 0 2923 0 398 0\r
+r 2448 0 2904 0 937 0\r
+r 2448 0 1 0 10 0 s Output Flag\r
+r 400 0 1 0 106 0\r
+r 400 0 365 0 398 0\r
+r 400 0 38 0 394 0\r
+r 2449 0 2904 0 951 0\r
+r 2449 0 1 0 10 0 s Flag Terminal\r
+r 401 0 9 0 405 0\r
+r 401 0 9 0 402 0\r
+r 401 0 1 0 57 0\r
+r 401 0 5 0 2770 0\r
+r 401 0 7 0 366 0\r
+r 2450 0 2904 0 904 0\r
+r 2450 0 1 0 10 0 s Diagram\r
+r 402 0 1 0 396 0\r
+r 402 0 389 0 1354 0\r
+r 402 0 5 0 403 0\r
+r 402 0 78 0 404 0\r
+r 402 0 7 0 401 0\r
+r 2451 0 2904 0 994 0\r
+r 2451 0 1 0 10 0 s Has Visible Tag\r
+r 403 0 2904 0 402 0\r
+r 403 0 1 0 10 0 s Experiment Control\r
+r 2452 0 2904 0 972 0\r
+r 2452 0 1 0 10 0 s Connector\r
+r 404 0 1 0 10 0 s Experiment control feature provides generic facilities for controlling the execution of simulation sequences.\r
+r 404 0 2923 0 402 0\r
+r 2453 0 2904 0 1004 0\r
+r 2453 0 1 0 10 0 s Has Page Description\r
+r 405 0 1 0 397 0\r
+r 405 0 5 0 406 0\r
+r 405 0 78 0 407 0\r
+r 405 0 7 0 401 0\r
+r 2454 0 2904 0 989 0\r
+r 2454 0 1 0 10 0 s Horizontal\r
+r 406 0 2904 0 405 0\r
+r 406 0 1 0 10 0 s Model Manager\r
+r 2455 0 2904 0 908 0\r
+r 2455 0 1 0 10 0 s Transform Parameter\r
+r 407 0 1 0 10 0 s Model management feature provides generic facilities for building models.\r
+r 407 0 2923 0 405 0\r
+r 2456 0 2904 0 934 0\r
+r 2456 0 1 0 10 0 s Flag Mode\r
+r 408 0 104 0 409 0\r
+r 408 0 59 0 1353 0\r
+r 408 0 4 0 381 0\r
+r 408 0 5 0 2780 0\r
+r 408 0 7 0 366 0\r
+r 2457 0 2904 0 1008 0\r
+r 2457 0 1 0 10 0 s Page Orientation\r
+r 409 0 1 0 106 0\r
+r 409 0 365 0 408 0\r
+r 409 0 38 0 394 0\r
+r 2458 0 2904 0 976 0\r
+r 2458 0 1 0 10 0 s Is Input Of\r
+r 410 0 2968 0 83 0\r
+r 410 0 1 0 381 0\r
+r 410 0 5 0 2771 0\r
+r 410 0 78 0 411 0\r
+r 410 0 7 0 374 0\r
+r 2459 0 2904 0 992 0\r
+r 2459 0 1 0 10 0 s Has Layer\r
+r 411 0 1 0 10 0 s For administration tasks.\r
+r 411 0 2923 0 410 0\r
+r 2460 0 2904 0 991 0\r
+r 2460 0 1 0 10 0 s Vertical\r
+r 412 0 9 0 436 0\r
+r 412 0 9 0 431 0\r
+r 412 0 9 0 428 0\r
+r 412 0 9 0 427 0\r
+r 412 0 9 0 424 0\r
+r 412 0 1 0 48 0\r
+r 412 0 5 0 413 0\r
+r 412 0 7 0 414 0\r
+r 2461 0 2904 0 1006 0\r
+r 2461 0 1 0 10 0 s Has Page Size\r
+r 413 0 2904 0 412 0\r
+r 413 0 1 0 10 0 s Types\r
+r 2462 0 2904 0 924 0\r
+r 2462 0 1 0 10 0 s Diagram Library\r
+r 414 0 97 0 419 0\r
+r 414 0 1 0 69 0\r
+r 414 0 9 0 415 0\r
+r 414 0 9 0 412 0\r
+r 414 0 101 0 421 0\r
+r 414 0 93 0 420 0\r
+r 414 0 5 0 417 0\r
+r 414 0 6 0 418 0\r
+r 414 0 2919 0 422 0\r
+r 414 0 7 0 89 0\r
+r 414 0 7 0 77 0\r
+r 2463 0 2904 0 971 0\r
+r 2463 0 1 0 10 0 s Is Connector Of\r
+r 415 0 9 0 442 0\r
+r 415 0 9 0 440 0\r
+r 415 0 9 0 438 0\r
+r 415 0 9 0 437 0\r
+r 415 0 9 0 435 0\r
+r 415 0 9 0 433 0\r
+r 415 0 1 0 55 0\r
+r 415 0 5 0 416 0\r
+r 415 0 7 0 414 0\r
+r 2464 0 2904 0 913 0\r
+r 2464 0 1 0 10 0 s SVGElement\r
+r 416 0 2904 0 415 0\r
+r 416 0 1 0 10 0 s Relations\r
+r 2465 0 2904 0 995 0\r
+r 2465 0 1 0 10 0 s Has Focusable Tag\r
+r 417 0 2904 0 414 0\r
+r 417 0 1 0 10 0 s Simulation-1.0\r
+r 2466 0 2904 0 999 0\r
+r 2466 0 1 0 10 0 s Is Focusable\r
+r 418 0 2905 0 414 0\r
+r 418 0 1 0 88 0 s http://www.vtt.fi/Simantics/Simulation/1.0\r
+r 2467 0 2904 0 929 0\r
+r 2467 0 1 0 10 0 s Has Format\r
+r 419 0 1 0 99 0 s 1.0\r
+r 419 0 2926 0 414 0\r
+r 2468 0 2904 0 933 0\r
+r 2468 0 1 0 10 0 s Has Flag Mode\r
+r 420 0 1 0 10 0 s org.simantics.db.Builtins\r
+r 420 0 2925 0 414 0\r
+r 2469 0 2904 0 973 0\r
+r 2469 0 1 0 10 0 s Has Output\r
+r 421 0 1 0 10 0 s simulation\r
+r 421 0 2927 0 414 0\r
+r 2470 0 2904 0 921 0\r
+r 2470 0 1 0 10 0 s Symbol Reference Library\r
+r 422 0 65 0 414 0\r
+r 422 0 1 0 62 0\r
+r 422 0 5 0 2620 0\r
+r 422 0 6 0 423 0\r
+r 422 0 7 0 85 0\r
+r 2471 0 2904 0 918 0\r
+r 2471 0 1 0 10 0 s Has Route Points\r
+r 423 0 2905 0 422 0\r
+r 423 0 1 0 88 0 s http://www.vtt.fi/Simantics/Simulation/1.0\r
+r 2472 0 2904 0 979 0\r
+r 2472 0 1 0 10 0 s Branch Point\r
+r 424 0 2906 0 426 0\r
+r 424 0 27 0 425 0\r
+r 424 0 4 0 57 0\r
+r 424 0 5 0 2621 0\r
+r 424 0 7 0 412 0\r
+r 2473 0 2904 0 927 0\r
+r 2473 0 1 0 10 0 s Has Direction\r
+r 425 0 40 0 426 0\r
+r 425 0 1 0 37 0\r
+r 425 0 2906 0 424 0\r
+r 425 0 38 0 9 0\r
+r 2474 0 2904 0 993 0\r
+r 2474 0 1 0 10 0 s Layer\r
+r 426 0 2913 0 425 0\r
+r 426 0 1 0 33 0\r
+r 426 0 27 0 427 0\r
+r 426 0 27 0 424 0\r
+r 2475 0 2904 0 956 0\r
+r 2475 0 1 0 10 0 s Upward Link\r
+r 427 0 136 0 433 0\r
+r 427 0 136 0 9 0\r
+r 427 0 104 0 434 0\r
+r 427 0 104 0 432 0\r
+r 427 0 129 0 1358 0\r
+r 427 0 137 0 433 0\r
+r 427 0 137 0 9 0\r
+r 427 0 2906 0 426 0\r
+r 427 0 2907 0 440 0\r
+r 427 0 4 0 25 0\r
+r 427 0 5 0 2615 0\r
+r 427 0 7 0 412 0\r
+r 2476 0 2904 0 905 0\r
+r 2476 0 1 0 10 0 s Element Class\r
+r 428 0 2906 0 430 0\r
+r 428 0 27 0 429 0\r
+r 428 0 4 0 57 0\r
+r 428 0 5 0 2614 0\r
+r 428 0 7 0 412 0\r
+r 2477 0 2904 0 907 0\r
+r 2477 0 1 0 10 0 s Element\r
+r 429 0 40 0 430 0\r
+r 429 0 1 0 37 0\r
+r 429 0 2906 0 428 0\r
+r 429 0 38 0 9 0\r
+r 2478 0 2904 0 966 0\r
+r 2478 0 1 0 10 0 s Resource Path\r
+r 430 0 2913 0 429 0\r
+r 430 0 1 0 33 0\r
+r 430 0 27 0 431 0\r
+r 430 0 27 0 428 0\r
+r 2479 0 2904 0 958 0\r
+r 2479 0 1 0 10 0 s Monitor\r
+r 431 0 136 0 9 0\r
+r 431 0 104 0 441 0\r
+r 431 0 104 0 439 0\r
+r 431 0 137 0 9 0\r
+r 431 0 2906 0 430 0\r
+r 431 0 4 0 25 0\r
+r 431 0 5 0 2619 0\r
+r 431 0 7 0 412 0\r
+r 2480 0 2904 0 970 0\r
+r 2480 0 1 0 10 0 s Has Connector\r
+r 432 0 1 0 106 0\r
+r 432 0 365 0 427 0\r
+r 432 0 38 0 433 0\r
+r 432 0 39 0 107 0\r
+r 2481 0 2904 0 1005 0\r
+r 2481 0 1 0 10 0 s Page Description\r
+r 433 0 2 0 103 0\r
+r 433 0 3 0 437 0\r
+r 433 0 139 0 427 0\r
+r 433 0 5 0 2622 0\r
+r 433 0 141 0 427 0\r
+r 433 0 7 0 415 0\r
+r 433 0 2911 0 432 0\r
+r 2482 0 2904 0 967 0\r
+r 2482 0 1 0 10 0 s Trend\r
+r 434 0 1 0 106 0\r
+r 434 0 365 0 427 0\r
+r 434 0 38 0 435 0\r
+r 2483 0 2904 0 919 0\r
+r 2483 0 1 0 10 0 s Connection\r
+r 435 0 2 0 103 0\r
+r 435 0 3 0 2971 0\r
+r 435 0 28 0 436 0\r
+r 435 0 5 0 2616 0\r
+r 435 0 7 0 415 0\r
+r 435 0 2911 0 434 0\r
+r 2484 0 2904 0 912 0\r
+r 2484 0 1 0 10 0 s Defined Element\r
+r 436 0 2907 0 435 0\r
+r 436 0 4 0 25 0\r
+r 436 0 5 0 2617 0\r
+r 436 0 7 0 412 0\r
+r 2485 0 2904 0 901 0\r
+r 2485 0 1 0 10 0 s Diagram Namespace\r
+r 437 0 2 0 112 0\r
+r 437 0 3 0 433 0\r
+r 437 0 5 0 2623 0\r
+r 437 0 7 0 415 0\r
+r 2486 0 2904 0 939 0\r
+r 2486 0 1 0 10 0 s External\r
+r 438 0 2 0 103 0\r
+r 438 0 3 0 2972 0\r
+r 438 0 5 0 2618 0\r
+r 438 0 7 0 415 0\r
+r 438 0 2911 0 441 0\r
+r 2487 0 2904 0 977 0\r
+r 2487 0 1 0 10 0 s Has Branch Point\r
+r 439 0 1 0 106 0\r
+r 439 0 365 0 431 0\r
+r 439 0 38 0 440 0\r
+r 439 0 39 0 107 0\r
+r 2488 0 2904 0 975 0\r
+r 2488 0 1 0 10 0 s Has Input\r
+r 440 0 2 0 103 0\r
+r 440 0 3 0 2973 0\r
+r 440 0 28 0 427 0\r
+r 440 0 5 0 2613 0\r
+r 440 0 7 0 415 0\r
+r 440 0 2911 0 439 0\r
+r 2489 0 2904 0 940 0\r
+r 2489 0 1 0 10 0 s Internal\r
+r 441 0 1 0 106 0\r
+r 441 0 365 0 431 0\r
+r 441 0 38 0 438 0\r
+r 441 0 39 0 225 0\r
+r 2490 0 2904 0 997 0\r
+r 2490 0 1 0 10 0 s Is Visible\r
+r 442 0 2 0 110 0\r
+r 442 0 3 0 2974 0\r
+r 442 0 5 0 2612 0\r
+r 442 0 78 0 443 0\r
+r 442 0 7 0 415 0\r
+r 2491 0 2904 0 917 0\r
+r 2491 0 1 0 10 0 s Has Transform\r
+r 443 0 1 0 10 0 s Adapter relation for configurations.\r
+r 443 0 2923 0 442 0\r
+r 2492 0 2904 0 1011 0\r
+r 2492 0 1 0 10 0 s Portrait\r
+r 444 0 9 0 454 0\r
+r 444 0 9 0 453 0\r
+r 444 0 97 0 447 0\r
+r 444 0 1 0 69 0\r
+r 444 0 101 0 449 0\r
+r 444 0 93 0 448 0\r
+r 444 0 5 0 445 0\r
+r 444 0 6 0 446 0\r
+r 444 0 2919 0 450 0\r
+r 444 0 7 0 89 0\r
+r 444 0 7 0 77 0\r
+r 2493 0 2904 0 941 0\r
+r 2493 0 1 0 10 0 s Flag\r
+r 445 0 2904 0 444 0\r
+r 445 0 1 0 10 0 s ProConf-1.0\r
+r 2494 0 2904 0 952 0\r
+r 2494 0 1 0 10 0 s Has Corresponding Flag\r
+r 446 0 2905 0 444 0\r
+r 446 0 1 0 88 0 s http://www.simantics.org/Ontology/ProConf/1.0\r
+r 2495 0 2904 0 1007 0\r
+r 2495 0 1 0 10 0 s Has Page Orientation\r
+r 447 0 1 0 99 0 s 1.0\r
+r 447 0 2926 0 444 0\r
+r 2496 0 2904 0 980 0\r
+r 2496 0 1 0 10 0 s Are Connected\r
+r 448 0 1 0 10 0 s org.simantics.project.ProConfResource\r
+r 448 0 2925 0 444 0\r
+r 2497 0 2904 0 974 0\r
+r 2497 0 1 0 10 0 s Is Output Of\r
+r 449 0 1 0 10 0 s proconf\r
+r 449 0 2927 0 444 0\r
+r 2498 0 2904 0 932 0\r
+r 2498 0 1 0 10 0 s Flag Type\r
+r 450 0 65 0 444 0\r
+r 450 0 1 0 62 0\r
+r 450 0 5 0 451 0\r
+r 450 0 6 0 452 0\r
+r 450 0 7 0 85 0\r
+r 2499 0 2904 0 936 0\r
+r 2499 0 1 0 10 0 s Input Flag\r
+r 451 0 2904 0 450 0\r
+r 451 0 1 0 10 0 s ProConf Namespace\r
+r 2500 0 2904 0 1119 0\r
+r 2500 0 1 0 10 0 s Value\r
+r 452 0 2905 0 450 0\r
+r 452 0 1 0 88 0 s http://www.simantics.org/Ontology/ProConf/1.0\r
+r 2501 0 2904 0 1116 0\r
+r 2501 0 1 0 10 0 s Point\r
+r 453 0 59 0 455 0\r
+r 453 0 4 0 381 0\r
+r 453 0 5 0 2112 0\r
+r 453 0 7 0 444 0\r
+r 2502 0 2904 0 1315 0\r
+r 2502 0 1 0 10 0 s Has Start Time\r
+r 454 0 9 0 455 0\r
+r 454 0 1 0 57 0\r
+r 454 0 5 0 2111 0\r
+r 454 0 7 0 444 0\r
+r 2503 0 2904 0 1115 0\r
+r 2503 0 1 0 10 0 s Has Default View Configuration\r
+r 455 0 1 0 453 0\r
+r 455 0 389 0 1020 0\r
+r 455 0 5 0 456 0\r
+r 455 0 78 0 457 0\r
+r 455 0 7 0 454 0\r
+r 2504 0 2904 0 1189 0\r
+r 2504 0 1 0 10 0 s Data Item\r
+r 456 0 2904 0 455 0\r
+r 456 0 1 0 10 0 s Symbol Manager\r
+r 2505 0 2904 0 1109 0\r
+r 2505 0 1 0 10 0 s View\r
+r 457 0 1 0 10 0 s Symbol management feature provides project facilities for controlling what is shown in the Symbols view.\r
+r 457 0 2923 0 455 0\r
+r 2506 0 2904 0 1163 0\r
+r 2506 0 1 0 10 0 s Variable Reference\r
+r 458 0 9 0 526 0\r
+r 458 0 9 0 524 0\r
+r 458 0 9 0 522 0\r
+r 458 0 9 0 520 0\r
+r 458 0 9 0 519 0\r
+r 458 0 9 0 518 0\r
+r 458 0 9 0 517 0\r
+r 458 0 9 0 516 0\r
+r 458 0 9 0 515 0\r
+r 458 0 9 0 513 0\r
+r 458 0 9 0 512 0\r
+r 458 0 9 0 511 0\r
+r 458 0 9 0 510 0\r
+r 458 0 9 0 509 0\r
+r 458 0 9 0 508 0\r
+r 458 0 9 0 507 0\r
+r 458 0 9 0 506 0\r
+r 458 0 9 0 504 0\r
+r 458 0 9 0 503 0\r
+r 458 0 9 0 501 0\r
+r 458 0 9 0 497 0\r
+r 458 0 9 0 494 0\r
+r 458 0 9 0 493 0\r
+r 458 0 9 0 492 0\r
+r 458 0 9 0 491 0\r
+r 458 0 9 0 489 0\r
+r 458 0 9 0 488 0\r
+r 458 0 9 0 487 0\r
+r 458 0 9 0 485 0\r
+r 458 0 9 0 482 0\r
+r 458 0 9 0 481 0\r
+r 458 0 9 0 480 0\r
+r 458 0 9 0 479 0\r
+r 458 0 9 0 477 0\r
+r 458 0 9 0 476 0\r
+r 458 0 9 0 474 0\r
+r 458 0 9 0 472 0\r
+r 458 0 9 0 469 0\r
+r 458 0 9 0 467 0\r
+r 458 0 9 0 466 0\r
+r 458 0 97 0 461 0\r
+r 458 0 1 0 69 0\r
+r 458 0 93 0 463 0\r
+r 458 0 101 0 462 0\r
+r 458 0 5 0 459 0\r
+r 458 0 6 0 460 0\r
+r 458 0 2919 0 464 0\r
+r 458 0 7 0 89 0\r
+r 458 0 7 0 77 0\r
+r 2507 0 2904 0 1141 0\r
+r 2507 0 1 0 10 0 s Has Plot Configuration\r
+r 459 0 2904 0 458 0\r
+r 459 0 1 0 10 0 s Structural-1.0\r
+r 2508 0 2904 0 1329 0\r
+r 2508 0 1 0 10 0 s Fit Time Range\r
+r 460 0 2905 0 458 0\r
+r 460 0 1 0 88 0 s http://www.simantics.org/Structural/1.0\r
+r 2509 0 2904 0 1122 0\r
+r 2509 0 1 0 10 0 s View2 D\r
+r 461 0 1 0 99 0 s 2.0\r
+r 461 0 2926 0 458 0\r
+r 2510 0 2904 0 1276 0\r
+r 2510 0 1 0 10 0 s Has Ramp\r
+r 462 0 1 0 10 0 s structural\r
+r 462 0 2927 0 458 0\r
+r 2511 0 2904 0 1167 0\r
+r 2511 0 1 0 10 0 s Has Context\r
+r 463 0 1 0 10 0 s org.simantics.structural.stubs.StructuralResource2\r
+r 463 0 2925 0 458 0\r
+r 2512 0 2904 0 1125 0\r
+r 2512 0 1 0 10 0 s Plot\r
+r 464 0 65 0 458 0\r
+r 464 0 1 0 62 0\r
+r 464 0 5 0 2119 0\r
+r 464 0 6 0 465 0\r
+r 464 0 7 0 85 0\r
+r 2513 0 2904 0 1123 0\r
+r 2513 0 1 0 10 0 s View3 D\r
+r 465 0 2905 0 464 0\r
+r 465 0 1 0 88 0 s http://www.simantics.org/Structural/1.0\r
+r 2514 0 2904 0 1245 0\r
+r 2514 0 1 0 10 0 s Trend2 DPlot Configuration\r
+r 466 0 1056 0 1062 0\r
+r 466 0 104 0 468 0\r
+r 466 0 129 0 2059 0\r
+r 466 0 129 0 2028 0\r
+r 466 0 129 0 2007 0\r
+r 466 0 129 0 1992 0\r
+r 466 0 129 0 1974 0\r
+r 466 0 129 0 1948 0\r
+r 466 0 129 0 1925 0\r
+r 466 0 129 0 1910 0\r
+r 466 0 129 0 1890 0\r
+r 466 0 129 0 1872 0\r
+r 466 0 129 0 1862 0\r
+r 466 0 129 0 1844 0\r
+r 466 0 129 0 1821 0\r
+r 466 0 129 0 1798 0\r
+r 466 0 129 0 1778 0\r
+r 466 0 129 0 1762 0\r
+r 466 0 129 0 1749 0\r
+r 466 0 129 0 1733 0\r
+r 466 0 129 0 1717 0\r
+r 466 0 129 0 1699 0\r
+r 466 0 129 0 1679 0\r
+r 466 0 129 0 1659 0\r
+r 466 0 129 0 1644 0\r
+r 466 0 129 0 1626 0\r
+r 466 0 129 0 1603 0\r
+r 466 0 129 0 1580 0\r
+r 466 0 129 0 1560 0\r
+r 466 0 129 0 1540 0\r
+r 466 0 129 0 1520 0\r
+r 466 0 129 0 1500 0\r
+r 466 0 129 0 1480 0\r
+r 466 0 129 0 1460 0\r
+r 466 0 129 0 1425 0\r
+r 466 0 129 0 1400 0\r
+r 466 0 129 0 1387 0\r
+r 466 0 129 0 907 0\r
+r 466 0 129 0 485 0\r
+r 466 0 129 0 482 0\r
+r 466 0 145 0 466 0\r
+r 466 0 1 0 467 0\r
+r 466 0 2907 0 483 0\r
+r 466 0 2907 0 474 0\r
+r 466 0 4 0 25 0\r
+r 466 0 5 0 2118 0\r
+r 466 0 78 0 470 0\r
+r 466 0 7 0 458 0\r
+r 2515 0 2904 0 1144 0\r
+r 2515 0 1 0 10 0 s Part Of View Configuration\r
+r 467 0 1056 0 1067 0\r
+r 467 0 104 0 473 0\r
+r 467 0 104 0 471 0\r
+r 467 0 129 0 905 0\r
+r 467 0 59 0 466 0\r
+r 467 0 2908 0 472 0\r
+r 467 0 4 0 52 0\r
+r 467 0 5 0 2140 0\r
+r 467 0 78 0 475 0\r
+r 467 0 7 0 458 0\r
+r 2516 0 2904 0 1147 0\r
+r 2516 0 1 0 10 0 s Has Current Time\r
+r 468 0 1 0 106 0\r
+r 468 0 365 0 466 0\r
+r 468 0 38 0 469 0\r
+r 2517 0 2904 0 1292 0\r
+r 2517 0 1 0 10 0 s Ramp Value\r
+r 469 0 145 0 469 0\r
+r 469 0 1 0 501 0\r
+r 469 0 2 0 94 0\r
+r 469 0 3 0 2975 0\r
+r 469 0 60 0 920 0\r
+r 469 0 60 0 917 0\r
+r 469 0 28 0 494 0\r
+r 469 0 5 0 2143 0\r
+r 469 0 78 0 502 0\r
+r 469 0 7 0 458 0\r
+r 469 0 2911 0 468 0\r
+r 2518 0 2904 0 1336 0\r
+r 2518 0 1 0 10 0 s Grid Mode\r
+r 470 0 1 0 10 0 s Defines a structure by instantiating some Type.\r
+r 470 0 2923 0 466 0\r
+r 2519 0 2904 0 1283 0\r
+r 2519 0 1 0 10 0 s Has Phase\r
+r 471 0 1 0 106 0\r
+r 471 0 365 0 467 0\r
+r 471 0 38 0 472 0\r
+r 2520 0 2904 0 1334 0\r
+r 2520 0 1 0 10 0 s Step Wise\r
+r 472 0 2 0 110 0\r
+r 472 0 3 0 479 0\r
+r 472 0 28 0 477 0\r
+r 472 0 5 0 2139 0\r
+r 472 0 29 0 467 0\r
+r 472 0 78 0 478 0\r
+r 472 0 7 0 458 0\r
+r 472 0 2911 0 471 0\r
+r 2521 0 2904 0 1320 0\r
+r 2521 0 1 0 10 0 s Absolute\r
+r 473 0 1 0 106 0\r
+r 473 0 365 0 467 0\r
+r 473 0 38 0 474 0\r
+r 473 0 39 0 225 0\r
+r 2522 0 2904 0 1310 0\r
+r 2522 0 1 0 10 0 s Has Scale Mode\r
+r 474 0 1 0 42 0\r
+r 474 0 2 0 113 0\r
+r 474 0 3 0 476 0\r
+r 474 0 28 0 466 0\r
+r 474 0 5 0 2116 0\r
+r 474 0 7 0 458 0\r
+r 474 0 2911 0 906 0\r
+r 474 0 2911 0 473 0\r
+r 2523 0 2904 0 1150 0\r
+r 2523 0 1 0 10 0 s Time Range Configuration\r
+r 475 0 1 0 10 0 s Parametric structure that can be instantiated.\r
+r 475 0 2923 0 467 0\r
+r 2524 0 2904 0 1274 0\r
+r 2524 0 1 0 10 0 s Has Sin\r
+r 476 0 2 0 114 0\r
+r 476 0 3 0 474 0\r
+r 476 0 5 0 2128 0\r
+r 476 0 7 0 458 0\r
+r 2525 0 2904 0 1174 0\r
+r 2525 0 1 0 10 0 s Has ZAxis Scale Percentage\r
+r 477 0 104 0 486 0\r
+r 477 0 129 0 504 0\r
+r 477 0 129 0 489 0\r
+r 477 0 145 0 477 0\r
+r 477 0 2907 0 472 0\r
+r 477 0 4 0 25 0\r
+r 477 0 5 0 2142 0\r
+r 477 0 7 0 458 0\r
+r 2526 0 2904 0 1129 0\r
+r 2526 0 1 0 10 0 s Has XValue\r
+r 478 0 1 0 10 0 s Denotes that the given relation is a parameter to the Type.\r
+r 478 0 2923 0 472 0\r
+r 2527 0 2904 0 1166 0\r
+r 2527 0 1 0 10 0 s Has Visual Configuration\r
+r 479 0 2 0 111 0\r
+r 479 0 3 0 472 0\r
+r 479 0 5 0 2133 0\r
+r 479 0 7 0 458 0\r
+r 2528 0 2904 0 1293 0\r
+r 2528 0 1 0 10 0 s Sin Value\r
+r 480 0 2 0 9 0\r
+r 480 0 3 0 481 0\r
+r 480 0 5 0 2114 0\r
+r 480 0 7 0 458 0\r
+r 2529 0 2904 0 1175 0\r
+r 2529 0 1 0 10 0 s Is Per Plot Scaling\r
+r 481 0 2 0 7 0\r
+r 481 0 3 0 480 0\r
+r 481 0 5 0 2151 0\r
+r 481 0 7 0 458 0\r
+r 2530 0 2904 0 1257 0\r
+r 2530 0 1 0 10 0 s Surface4 DPlot Configuration\r
+r 482 0 1056 0 1060 0\r
+r 482 0 104 0 483 0\r
+r 482 0 129 0 2056 0\r
+r 482 0 4 0 466 0\r
+r 482 0 5 0 2117 0\r
+r 482 0 78 0 484 0\r
+r 482 0 7 0 458 0\r
+r 2531 0 2904 0 1226 0\r
+r 2531 0 1 0 10 0 s Trend3 DView Configuration\r
+r 483 0 1 0 106 0\r
+r 483 0 28 0 466 0\r
+r 483 0 365 0 482 0\r
+r 483 0 38 0 9 0\r
+r 2532 0 2904 0 1131 0\r
+r 2532 0 1 0 10 0 s Has YValue\r
+r 484 0 1 0 10 0 s A structure defined as a set of other structures.\r
+r 484 0 2923 0 482 0\r
+r 2533 0 2904 0 1281 0\r
+r 2533 0 1 0 10 0 s Has Frequency\r
+r 485 0 129 0 903 0\r
+r 485 0 4 0 466 0\r
+r 485 0 4 0 226 0\r
+r 485 0 5 0 2130 0\r
+r 485 0 7 0 458 0\r
+r 2534 0 2904 0 1153 0\r
+r 2534 0 1 0 10 0 s Has Visual Range\r
+r 486 0 1 0 106 0\r
+r 486 0 365 0 477 0\r
+r 486 0 38 0 487 0\r
+r 486 0 39 0 107 0\r
+r 2535 0 2904 0 1162 0\r
+r 2535 0 1 0 10 0 s Has Variable Reference\r
+r 487 0 2 0 110 0\r
+r 487 0 3 0 488 0\r
+r 487 0 28 0 0 0\r
+r 487 0 5 0 2137 0\r
+r 487 0 7 0 458 0\r
+r 487 0 2911 0 505 0\r
+r 487 0 2911 0 490 0\r
+r 487 0 2911 0 486 0\r
+r 2536 0 2904 0 1173 0\r
+r 2536 0 1 0 10 0 s Has YAxis Scale Percentage\r
+r 488 0 2 0 111 0\r
+r 488 0 3 0 487 0\r
+r 488 0 5 0 2127 0\r
+r 488 0 7 0 458 0\r
+r 2537 0 2904 0 1338 0\r
+r 2537 0 1 0 10 0 s Disabled Grid\r
+r 489 0 104 0 490 0\r
+r 489 0 59 0 2011 0\r
+r 489 0 59 0 1978 0\r
+r 489 0 59 0 1956 0\r
+r 489 0 59 0 1953 0\r
+r 489 0 59 0 1930 0\r
+r 489 0 59 0 1876 0\r
+r 489 0 59 0 1848 0\r
+r 489 0 59 0 1826 0\r
+r 489 0 59 0 1803 0\r
+r 489 0 59 0 1768 0\r
+r 489 0 59 0 1765 0\r
+r 489 0 59 0 1752 0\r
+r 489 0 59 0 1739 0\r
+r 489 0 59 0 1736 0\r
+r 489 0 59 0 1723 0\r
+r 489 0 59 0 1720 0\r
+r 489 0 59 0 1703 0\r
+r 489 0 59 0 1630 0\r
+r 489 0 59 0 1608 0\r
+r 489 0 59 0 1585 0\r
+r 489 0 59 0 1390 0\r
+r 489 0 59 0 908 0\r
+r 489 0 4 0 477 0\r
+r 489 0 2909 0 498 0\r
+r 489 0 5 0 2131 0\r
+r 489 0 7 0 458 0\r
+r 2538 0 2904 0 1133 0\r
+r 2538 0 1 0 10 0 s Has ZValue\r
+r 490 0 1 0 106 0\r
+r 490 0 28 0 491 0\r
+r 490 0 365 0 489 0\r
+r 490 0 38 0 487 0\r
+r 2539 0 2904 0 1221 0\r
+r 2539 0 1 0 10 0 s Curve2 DView Configuration\r
+r 491 0 2907 0 490 0\r
+r 491 0 59 0 492 0\r
+r 491 0 4 0 0 0\r
+r 491 0 5 0 2120 0\r
+r 491 0 7 0 458 0\r
+r 2540 0 2904 0 1282 0\r
+r 2540 0 1 0 10 0 s Has Amplitude\r
+r 492 0 145 0 492 0\r
+r 492 0 1 0 491 0\r
+r 492 0 2 0 103 0\r
+r 492 0 3 0 493 0\r
+r 492 0 5 0 2153 0\r
+r 492 0 7 0 458 0\r
+r 2541 0 2904 0 1187 0\r
+r 2541 0 1 0 10 0 s Has Line Width\r
+r 493 0 2 0 112 0\r
+r 493 0 3 0 492 0\r
+r 493 0 5 0 2126 0\r
+r 493 0 7 0 458 0\r
+r 2542 0 2904 0 1335 0\r
+r 2542 0 1 0 10 0 s Has Grid Mode\r
+r 494 0 1 0 33 0\r
+r 494 0 2907 0 469 0\r
+r 494 0 27 0 498 0\r
+r 494 0 27 0 496 0\r
+r 494 0 27 0 495 0\r
+r 494 0 5 0 2113 0\r
+r 494 0 78 0 499 0\r
+r 494 0 7 0 458 0\r
+r 2543 0 2904 0 1120 0\r
+r 2543 0 1 0 10 0 s Time Range View\r
+r 495 0 1 0 35 0\r
+r 495 0 2906 0 494 0\r
+r 495 0 30 0 189 0\r
+r 2544 0 2904 0 1183 0\r
+r 2544 0 1 0 10 0 s Has Color\r
+r 496 0 1 0 35 0\r
+r 496 0 2906 0 494 0\r
+r 496 0 30 0 497 0\r
+r 2545 0 2904 0 1171 0\r
+r 2545 0 1 0 10 0 s Has ZAxis Scale\r
+r 497 0 145 0 497 0\r
+r 497 0 4 0 25 0\r
+r 497 0 2909 0 496 0\r
+r 497 0 5 0 2123 0\r
+r 497 0 78 0 500 0\r
+r 497 0 7 0 458 0\r
+r 2546 0 2904 0 1318 0\r
+r 2546 0 1 0 10 0 s Time Presentation\r
+r 498 0 1 0 35 0\r
+r 498 0 2906 0 494 0\r
+r 498 0 30 0 489 0\r
+r 2547 0 2904 0 1186 0\r
+r 2547 0 1 0 10 0 s Is Stepwise\r
+r 499 0 1 0 10 0 s Requirement for all types that can be given as a parameter to Component.\r
+r 499 0 2923 0 494 0\r
+r 2548 0 2904 0 1127 0\r
+r 2548 0 1 0 10 0 s Point2 D\r
+r 500 0 1 0 10 0 s Supertype of all value types that are not simple constant values or variables.\r
+r 500 0 2923 0 497 0\r
+r 2549 0 2904 0 1172 0\r
+r 2549 0 1 0 10 0 s Has XAxis Scale Percentage\r
+r 501 0 59 0 469 0\r
+r 501 0 4 0 42 0\r
+r 501 0 5 0 2125 0\r
+r 501 0 7 0 458 0\r
+r 2550 0 2904 0 1145 0\r
+r 2550 0 1 0 10 0 s Time Slice Configuration\r
+r 502 0 1 0 10 0 s Assigns a value to some parameter.\r
+r 502 0 2923 0 469 0\r
+r 2551 0 2904 0 1124 0\r
+r 2551 0 1 0 10 0 s Plot2 D\r
+r 503 0 129 0 2079 0\r
+r 503 0 129 0 2060 0\r
+r 503 0 129 0 972 0\r
+r 503 0 129 0 919 0\r
+r 503 0 129 0 504 0\r
+r 503 0 4 0 25 0\r
+r 503 0 5 0 2141 0\r
+r 503 0 7 0 458 0\r
+r 2552 0 2904 0 1134 0\r
+r 2552 0 1 0 10 0 s Point3 D\r
+r 504 0 104 0 505 0\r
+r 504 0 2907 0 911 0\r
+r 504 0 59 0 2046 0\r
+r 504 0 59 0 2042 0\r
+r 504 0 59 0 2038 0\r
+r 504 0 59 0 2031 0\r
+r 504 0 59 0 2030 0\r
+r 504 0 59 0 2029 0\r
+r 504 0 59 0 2023 0\r
+r 504 0 59 0 2019 0\r
+r 504 0 59 0 2009 0\r
+r 504 0 59 0 2008 0\r
+r 504 0 59 0 2005 0\r
+r 504 0 59 0 2001 0\r
+r 504 0 59 0 1994 0\r
+r 504 0 59 0 1993 0\r
+r 504 0 59 0 1990 0\r
+r 504 0 59 0 1986 0\r
+r 504 0 59 0 1976 0\r
+r 504 0 59 0 1975 0\r
+r 504 0 59 0 1972 0\r
+r 504 0 59 0 1968 0\r
+r 504 0 59 0 1964 0\r
+r 504 0 59 0 1951 0\r
+r 504 0 59 0 1950 0\r
+r 504 0 59 0 1949 0\r
+r 504 0 59 0 1946 0\r
+r 504 0 59 0 1942 0\r
+r 504 0 59 0 1938 0\r
+r 504 0 59 0 1928 0\r
+r 504 0 59 0 1927 0\r
+r 504 0 59 0 1926 0\r
+r 504 0 59 0 1923 0\r
+r 504 0 59 0 1919 0\r
+r 504 0 59 0 1912 0\r
+r 504 0 59 0 1911 0\r
+r 504 0 59 0 1908 0\r
+r 504 0 59 0 1904 0\r
+r 504 0 59 0 1900 0\r
+r 504 0 59 0 1893 0\r
+r 504 0 59 0 1892 0\r
+r 504 0 59 0 1891 0\r
+r 504 0 59 0 1888 0\r
+r 504 0 59 0 1884 0\r
+r 504 0 59 0 1874 0\r
+r 504 0 59 0 1873 0\r
+r 504 0 59 0 1870 0\r
+r 504 0 59 0 1863 0\r
+r 504 0 59 0 1860 0\r
+r 504 0 59 0 1856 0\r
+r 504 0 59 0 1846 0\r
+r 504 0 59 0 1845 0\r
+r 504 0 59 0 1842 0\r
+r 504 0 59 0 1838 0\r
+r 504 0 59 0 1834 0\r
+r 504 0 59 0 1824 0\r
+r 504 0 59 0 1823 0\r
+r 504 0 59 0 1822 0\r
+r 504 0 59 0 1819 0\r
+r 504 0 59 0 1815 0\r
+r 504 0 59 0 1811 0\r
+r 504 0 59 0 1801 0\r
+r 504 0 59 0 1800 0\r
+r 504 0 59 0 1799 0\r
+r 504 0 59 0 1796 0\r
+r 504 0 59 0 1792 0\r
+r 504 0 59 0 1788 0\r
+r 504 0 59 0 1781 0\r
+r 504 0 59 0 1780 0\r
+r 504 0 59 0 1779 0\r
+r 504 0 59 0 1776 0\r
+r 504 0 59 0 1763 0\r
+r 504 0 59 0 1760 0\r
+r 504 0 59 0 1750 0\r
+r 504 0 59 0 1747 0\r
+r 504 0 59 0 1734 0\r
+r 504 0 59 0 1731 0\r
+r 504 0 59 0 1718 0\r
+r 504 0 59 0 1715 0\r
+r 504 0 59 0 1711 0\r
+r 504 0 59 0 1701 0\r
+r 504 0 59 0 1700 0\r
+r 504 0 59 0 1697 0\r
+r 504 0 59 0 1693 0\r
+r 504 0 59 0 1689 0\r
+r 504 0 59 0 1682 0\r
+r 504 0 59 0 1681 0\r
+r 504 0 59 0 1680 0\r
+r 504 0 59 0 1677 0\r
+r 504 0 59 0 1673 0\r
+r 504 0 59 0 1669 0\r
+r 504 0 59 0 1662 0\r
+r 504 0 59 0 1661 0\r
+r 504 0 59 0 1660 0\r
+r 504 0 59 0 1657 0\r
+r 504 0 59 0 1653 0\r
+r 504 0 59 0 1646 0\r
+r 504 0 59 0 1645 0\r
+r 504 0 59 0 1642 0\r
+r 504 0 59 0 1638 0\r
+r 504 0 59 0 1628 0\r
+r 504 0 59 0 1627 0\r
+r 504 0 59 0 1624 0\r
+r 504 0 59 0 1620 0\r
+r 504 0 59 0 1616 0\r
+r 504 0 59 0 1606 0\r
+r 504 0 59 0 1605 0\r
+r 504 0 59 0 1604 0\r
+r 504 0 59 0 1601 0\r
+r 504 0 59 0 1597 0\r
+r 504 0 59 0 1593 0\r
+r 504 0 59 0 1583 0\r
+r 504 0 59 0 1582 0\r
+r 504 0 59 0 1581 0\r
+r 504 0 59 0 1578 0\r
+r 504 0 59 0 1574 0\r
+r 504 0 59 0 1570 0\r
+r 504 0 59 0 1563 0\r
+r 504 0 59 0 1562 0\r
+r 504 0 59 0 1561 0\r
+r 504 0 59 0 1558 0\r
+r 504 0 59 0 1554 0\r
+r 504 0 59 0 1550 0\r
+r 504 0 59 0 1543 0\r
+r 504 0 59 0 1542 0\r
+r 504 0 59 0 1541 0\r
+r 504 0 59 0 1538 0\r
+r 504 0 59 0 1534 0\r
+r 504 0 59 0 1530 0\r
+r 504 0 59 0 1523 0\r
+r 504 0 59 0 1522 0\r
+r 504 0 59 0 1521 0\r
+r 504 0 59 0 1518 0\r
+r 504 0 59 0 1514 0\r
+r 504 0 59 0 1510 0\r
+r 504 0 59 0 1503 0\r
+r 504 0 59 0 1502 0\r
+r 504 0 59 0 1501 0\r
+r 504 0 59 0 1498 0\r
+r 504 0 59 0 1494 0\r
+r 504 0 59 0 1490 0\r
+r 504 0 59 0 1483 0\r
+r 504 0 59 0 1482 0\r
+r 504 0 59 0 1481 0\r
+r 504 0 59 0 1478 0\r
+r 504 0 59 0 1474 0\r
+r 504 0 59 0 1470 0\r
+r 504 0 59 0 1463 0\r
+r 504 0 59 0 1462 0\r
+r 504 0 59 0 1461 0\r
+r 504 0 59 0 1458 0\r
+r 504 0 59 0 1454 0\r
+r 504 0 59 0 1450 0\r
+r 504 0 59 0 1446 0\r
+r 504 0 59 0 1442 0\r
+r 504 0 59 0 1438 0\r
+r 504 0 59 0 1431 0\r
+r 504 0 59 0 1430 0\r
+r 504 0 59 0 1429 0\r
+r 504 0 59 0 1428 0\r
+r 504 0 59 0 1427 0\r
+r 504 0 59 0 1426 0\r
+r 504 0 59 0 1423 0\r
+r 504 0 59 0 1419 0\r
+r 504 0 59 0 1415 0\r
+r 504 0 59 0 1411 0\r
+r 504 0 59 0 1404 0\r
+r 504 0 59 0 1403 0\r
+r 504 0 59 0 1402 0\r
+r 504 0 59 0 1401 0\r
+r 504 0 59 0 1398 0\r
+r 504 0 59 0 1388 0\r
+r 504 0 59 0 950 0\r
+r 504 0 4 0 503 0\r
+r 504 0 4 0 477 0\r
+r 504 0 5 0 2147 0\r
+r 504 0 7 0 458 0\r
+r 2553 0 2904 0 1126 0\r
+r 2553 0 1 0 10 0 s Plot3 D\r
+r 505 0 1 0 106 0\r
+r 505 0 28 0 506 0\r
+r 505 0 365 0 504 0\r
+r 505 0 38 0 487 0\r
+r 2554 0 2904 0 1298 0\r
+r 2554 0 1 0 10 0 s Time Series Chart\r
+r 506 0 129 0 508 0\r
+r 506 0 2907 0 505 0\r
+r 506 0 59 0 507 0\r
+r 506 0 4 0 0 0\r
+r 506 0 5 0 2135 0\r
+r 506 0 7 0 458 0\r
+r 2555 0 2904 0 1322 0\r
+r 2555 0 1 0 10 0 s YAxis Mode\r
+r 507 0 145 0 507 0\r
+r 507 0 1 0 506 0\r
+r 507 0 2 0 112 0\r
+r 507 0 2 0 103 0\r
+r 507 0 3 0 507 0\r
+r 507 0 60 0 3277 0\r
+r 507 0 60 0 3276 0\r
+r 507 0 60 0 3275 0\r
+r 507 0 60 0 3273 0\r
+r 507 0 60 0 3272 0\r
+r 507 0 60 0 3271 0\r
+r 507 0 60 0 3270 0\r
+r 507 0 60 0 3269 0\r
+r 507 0 60 0 3267 0\r
+r 507 0 60 0 3266 0\r
+r 507 0 60 0 3264 0\r
+r 507 0 60 0 3263 0\r
+r 507 0 60 0 3261 0\r
+r 507 0 60 0 3260 0\r
+r 507 0 60 0 3259 0\r
+r 507 0 60 0 3257 0\r
+r 507 0 60 0 3256 0\r
+r 507 0 60 0 3255 0\r
+r 507 0 60 0 3253 0\r
+r 507 0 60 0 3252 0\r
+r 507 0 60 0 3250 0\r
+r 507 0 60 0 3249 0\r
+r 507 0 60 0 3248 0\r
+r 507 0 60 0 3246 0\r
+r 507 0 60 0 3245 0\r
+r 507 0 60 0 3243 0\r
+r 507 0 60 0 3241 0\r
+r 507 0 60 0 3240 0\r
+r 507 0 60 0 3238 0\r
+r 507 0 60 0 3237 0\r
+r 507 0 60 0 3236 0\r
+r 507 0 60 0 3234 0\r
+r 507 0 60 0 3233 0\r
+r 507 0 60 0 3232 0\r
+r 507 0 60 0 3230 0\r
+r 507 0 60 0 3229 0\r
+r 507 0 60 0 3228 0\r
+r 507 0 60 0 3226 0\r
+r 507 0 60 0 3224 0\r
+r 507 0 60 0 3222 0\r
+r 507 0 60 0 3220 0\r
+r 507 0 60 0 3218 0\r
+r 507 0 60 0 3217 0\r
+r 507 0 60 0 3215 0\r
+r 507 0 60 0 3214 0\r
+r 507 0 60 0 3213 0\r
+r 507 0 60 0 3211 0\r
+r 507 0 60 0 3210 0\r
+r 507 0 60 0 3209 0\r
+r 507 0 60 0 3207 0\r
+r 507 0 60 0 3206 0\r
+r 507 0 60 0 3204 0\r
+r 507 0 60 0 3203 0\r
+r 507 0 60 0 3201 0\r
+r 507 0 60 0 3200 0\r
+r 507 0 60 0 3199 0\r
+r 507 0 60 0 3197 0\r
+r 507 0 60 0 3196 0\r
+r 507 0 60 0 3195 0\r
+r 507 0 60 0 3193 0\r
+r 507 0 60 0 3192 0\r
+r 507 0 60 0 3191 0\r
+r 507 0 60 0 3189 0\r
+r 507 0 60 0 3188 0\r
+r 507 0 60 0 3187 0\r
+r 507 0 60 0 3185 0\r
+r 507 0 60 0 3184 0\r
+r 507 0 60 0 3183 0\r
+r 507 0 60 0 3181 0\r
+r 507 0 60 0 3180 0\r
+r 507 0 60 0 3179 0\r
+r 507 0 60 0 3177 0\r
+r 507 0 60 0 3176 0\r
+r 507 0 60 0 3175 0\r
+r 507 0 60 0 3173 0\r
+r 507 0 60 0 3172 0\r
+r 507 0 60 0 3171 0\r
+r 507 0 60 0 3169 0\r
+r 507 0 60 0 3168 0\r
+r 507 0 60 0 3167 0\r
+r 507 0 60 0 3166 0\r
+r 507 0 60 0 3165 0\r
+r 507 0 60 0 3164 0\r
+r 507 0 60 0 3162 0\r
+r 507 0 60 0 3161 0\r
+r 507 0 60 0 3160 0\r
+r 507 0 60 0 3159 0\r
+r 507 0 60 0 3157 0\r
+r 507 0 60 0 3145 0\r
+r 507 0 60 0 3144 0\r
+r 507 0 60 0 3143 0\r
+r 507 0 60 0 3142 0\r
+r 507 0 60 0 3141 0\r
+r 507 0 60 0 3140 0\r
+r 507 0 60 0 3139 0\r
+r 507 0 60 0 3138 0\r
+r 507 0 60 0 3137 0\r
+r 507 0 60 0 3136 0\r
+r 507 0 60 0 2075 0\r
+r 507 0 60 0 2074 0\r
+r 507 0 60 0 2073 0\r
+r 507 0 60 0 2072 0\r
+r 507 0 60 0 2047 0\r
+r 507 0 60 0 2043 0\r
+r 507 0 60 0 2039 0\r
+r 507 0 60 0 2027 0\r
+r 507 0 60 0 2026 0\r
+r 507 0 60 0 2025 0\r
+r 507 0 60 0 2024 0\r
+r 507 0 60 0 2020 0\r
+r 507 0 60 0 2006 0\r
+r 507 0 60 0 2002 0\r
+r 507 0 60 0 1991 0\r
+r 507 0 60 0 1987 0\r
+r 507 0 60 0 1973 0\r
+r 507 0 60 0 1969 0\r
+r 507 0 60 0 1965 0\r
+r 507 0 60 0 1947 0\r
+r 507 0 60 0 1943 0\r
+r 507 0 60 0 1939 0\r
+r 507 0 60 0 1924 0\r
+r 507 0 60 0 1920 0\r
+r 507 0 60 0 1909 0\r
+r 507 0 60 0 1905 0\r
+r 507 0 60 0 1901 0\r
+r 507 0 60 0 1889 0\r
+r 507 0 60 0 1885 0\r
+r 507 0 60 0 1871 0\r
+r 507 0 60 0 1861 0\r
+r 507 0 60 0 1857 0\r
+r 507 0 60 0 1843 0\r
+r 507 0 60 0 1839 0\r
+r 507 0 60 0 1835 0\r
+r 507 0 60 0 1820 0\r
+r 507 0 60 0 1816 0\r
+r 507 0 60 0 1812 0\r
+r 507 0 60 0 1797 0\r
+r 507 0 60 0 1793 0\r
+r 507 0 60 0 1789 0\r
+r 507 0 60 0 1777 0\r
+r 507 0 60 0 1761 0\r
+r 507 0 60 0 1748 0\r
+r 507 0 60 0 1732 0\r
+r 507 0 60 0 1716 0\r
+r 507 0 60 0 1712 0\r
+r 507 0 60 0 1698 0\r
+r 507 0 60 0 1694 0\r
+r 507 0 60 0 1690 0\r
+r 507 0 60 0 1678 0\r
+r 507 0 60 0 1674 0\r
+r 507 0 60 0 1670 0\r
+r 507 0 60 0 1658 0\r
+r 507 0 60 0 1654 0\r
+r 507 0 60 0 1643 0\r
+r 507 0 60 0 1639 0\r
+r 507 0 60 0 1625 0\r
+r 507 0 60 0 1621 0\r
+r 507 0 60 0 1617 0\r
+r 507 0 60 0 1602 0\r
+r 507 0 60 0 1598 0\r
+r 507 0 60 0 1594 0\r
+r 507 0 60 0 1579 0\r
+r 507 0 60 0 1575 0\r
+r 507 0 60 0 1571 0\r
+r 507 0 60 0 1559 0\r
+r 507 0 60 0 1555 0\r
+r 507 0 60 0 1551 0\r
+r 507 0 60 0 1539 0\r
+r 507 0 60 0 1535 0\r
+r 507 0 60 0 1531 0\r
+r 507 0 60 0 1519 0\r
+r 507 0 60 0 1515 0\r
+r 507 0 60 0 1511 0\r
+r 507 0 60 0 1499 0\r
+r 507 0 60 0 1495 0\r
+r 507 0 60 0 1491 0\r
+r 507 0 60 0 1479 0\r
+r 507 0 60 0 1475 0\r
+r 507 0 60 0 1471 0\r
+r 507 0 60 0 1459 0\r
+r 507 0 60 0 1455 0\r
+r 507 0 60 0 1451 0\r
+r 507 0 60 0 1447 0\r
+r 507 0 60 0 1443 0\r
+r 507 0 60 0 1439 0\r
+r 507 0 60 0 1424 0\r
+r 507 0 60 0 1420 0\r
+r 507 0 60 0 1416 0\r
+r 507 0 60 0 1412 0\r
+r 507 0 60 0 1399 0\r
+r 507 0 60 0 1376 0\r
+r 507 0 60 0 1375 0\r
+r 507 0 60 0 1374 0\r
+r 507 0 60 0 1373 0\r
+r 507 0 60 0 1372 0\r
+r 507 0 60 0 1371 0\r
+r 507 0 60 0 1370 0\r
+r 507 0 60 0 1369 0\r
+r 507 0 60 0 1368 0\r
+r 507 0 60 0 1367 0\r
+r 507 0 60 0 1366 0\r
+r 507 0 60 0 1365 0\r
+r 507 0 60 0 1364 0\r
+r 507 0 60 0 1363 0\r
+r 507 0 60 0 971 0\r
+r 507 0 60 0 970 0\r
+r 507 0 60 0 951 0\r
+r 507 0 60 0 510 0\r
+r 507 0 60 0 509 0\r
+r 507 0 5 0 2122 0\r
+r 507 0 7 0 458 0\r
+r 507 0 2911 0 984 0\r
+r 2556 0 2904 0 1121 0\r
+r 2556 0 1 0 10 0 s Time Slice View\r
+r 508 0 59 0 509 0\r
+r 508 0 4 0 506 0\r
+r 508 0 5 0 2145 0\r
+r 508 0 7 0 458 0\r
+r 2557 0 2904 0 1170 0\r
+r 2557 0 1 0 10 0 s Has YAxis Scale\r
+r 509 0 145 0 509 0\r
+r 509 0 1 0 508 0\r
+r 509 0 2 0 507 0\r
+r 509 0 3 0 510 0\r
+r 509 0 5 0 2138 0\r
+r 509 0 7 0 458 0\r
+r 2558 0 2904 0 1296 0\r
+r 2558 0 1 0 10 0 s Chart Group\r
+r 510 0 2 0 507 0\r
+r 510 0 3 0 509 0\r
+r 510 0 5 0 2150 0\r
+r 510 0 7 0 458 0\r
+r 2559 0 2904 0 1250 0\r
+r 2559 0 1 0 10 0 s Trend3 DPlot Configuration\r
+r 511 0 2 0 110 0\r
+r 511 0 3 0 2976 0\r
+r 511 0 28 0 512 0\r
+r 511 0 5 0 2124 0\r
+r 511 0 7 0 458 0\r
+r 2560 0 2904 0 1231 0\r
+r 2560 0 1 0 10 0 s Surface3 DView Configuration\r
+r 512 0 104 0 514 0\r
+r 512 0 2907 0 513 0\r
+r 512 0 2907 0 511 0\r
+r 512 0 4 0 25 0\r
+r 512 0 5 0 2136 0\r
+r 512 0 7 0 458 0\r
+r 2561 0 2904 0 1339 0\r
+r 2561 0 1 0 10 0 s Adaptive Grid\r
+r 513 0 2 0 110 0\r
+r 513 0 3 0 2977 0\r
+r 513 0 28 0 512 0\r
+r 513 0 5 0 2132 0\r
+r 513 0 7 0 458 0\r
+r 2562 0 2904 0 1344 0\r
+r 2562 0 1 0 10 0 s Has XLines\r
+r 514 0 1 0 106 0\r
+r 514 0 28 0 516 0\r
+r 514 0 365 0 512 0\r
+r 514 0 38 0 515 0\r
+r 2563 0 2904 0 1168 0\r
+r 2563 0 1 0 10 0 s Has Double Range\r
+r 515 0 2 0 110 0\r
+r 515 0 3 0 2978 0\r
+r 515 0 5 0 2115 0\r
+r 515 0 7 0 458 0\r
+r 515 0 2911 0 514 0\r
+r 2564 0 2904 0 1302 0\r
+r 2564 0 1 0 10 0 s Has Time Presentation\r
+r 516 0 104 0 525 0\r
+r 516 0 104 0 523 0\r
+r 516 0 104 0 521 0\r
+r 516 0 2907 0 514 0\r
+r 516 0 4 0 25 0\r
+r 516 0 5 0 2148 0\r
+r 516 0 7 0 458 0\r
+r 2565 0 2904 0 1139 0\r
+r 2565 0 1 0 10 0 s View Configuration\r
+r 517 0 2 0 110 0\r
+r 517 0 3 0 2979 0\r
+r 517 0 28 0 518 0\r
+r 517 0 5 0 2149 0\r
+r 517 0 7 0 458 0\r
+r 2566 0 2904 0 1284 0\r
+r 2566 0 1 0 10 0 s Test Data Value\r
+r 518 0 2907 0 517 0\r
+r 518 0 59 0 520 0\r
+r 518 0 59 0 519 0\r
+r 518 0 4 0 25 0\r
+r 518 0 5 0 2121 0\r
+r 518 0 7 0 458 0\r
+r 2567 0 2904 0 1330 0\r
+r 2567 0 1 0 10 0 s Fit All\r
+r 519 0 1048 0 936 0\r
+r 519 0 1 0 518 0\r
+r 519 0 5 0 2152 0\r
+r 519 0 7 0 458 0\r
+r 2568 0 2904 0 1346 0\r
+r 2568 0 1 0 10 0 s Has YLines\r
+r 520 0 1048 0 937 0\r
+r 520 0 1 0 518 0\r
+r 520 0 5 0 2129 0\r
+r 520 0 7 0 458 0\r
+r 2569 0 2904 0 1185 0\r
+r 2569 0 1 0 10 0 s Is Auto Scale\r
+r 521 0 1 0 106 0\r
+r 521 0 365 0 516 0\r
+r 521 0 38 0 522 0\r
+r 521 0 39 0 225 0\r
+r 2570 0 2904 0 1106 0\r
+r 2570 0 1 0 10 0 s Workspace\r
+r 522 0 2 0 94 0\r
+r 522 0 3 0 2980 0\r
+r 522 0 5 0 2134 0\r
+r 522 0 7 0 458 0\r
+r 522 0 2911 0 521 0\r
+r 2571 0 2904 0 1247 0\r
+r 2571 0 1 0 10 0 s Curve2 DPlot Configuration\r
+r 523 0 1 0 106 0\r
+r 523 0 365 0 516 0\r
+r 523 0 38 0 524 0\r
+r 523 0 39 0 225 0\r
+r 2572 0 2904 0 1179 0\r
+r 2572 0 1 0 10 0 s Color\r
+r 524 0 2 0 94 0\r
+r 524 0 3 0 2981 0\r
+r 524 0 5 0 2144 0\r
+r 524 0 7 0 458 0\r
+r 524 0 2911 0 523 0\r
+r 2573 0 2904 0 1111 0\r
+r 2573 0 1 0 10 0 s Has Plot\r
+r 525 0 1 0 106 0\r
+r 525 0 365 0 516 0\r
+r 525 0 38 0 526 0\r
+r 525 0 39 0 225 0\r
+r 2574 0 2904 0 1161 0\r
+r 2574 0 1 0 10 0 s Has Session Reference\r
+r 526 0 2 0 110 0\r
+r 526 0 3 0 2982 0\r
+r 526 0 5 0 2146 0\r
+r 526 0 7 0 458 0\r
+r 526 0 2911 0 525 0\r
+r 2575 0 2904 0 1331 0\r
+r 2575 0 1 0 10 0 s Line Mode\r
+r 527 0 9 0 661 0\r
+r 527 0 9 0 655 0\r
+r 527 0 9 0 654 0\r
+r 527 0 9 0 653 0\r
+r 527 0 9 0 650 0\r
+r 527 0 9 0 649 0\r
+r 527 0 9 0 647 0\r
+r 527 0 9 0 642 0\r
+r 527 0 9 0 640 0\r
+r 527 0 9 0 639 0\r
+r 527 0 9 0 637 0\r
+r 527 0 9 0 636 0\r
+r 527 0 9 0 635 0\r
+r 527 0 9 0 631 0\r
+r 527 0 9 0 630 0\r
+r 527 0 9 0 629 0\r
+r 527 0 9 0 628 0\r
+r 527 0 9 0 625 0\r
+r 527 0 9 0 621 0\r
+r 527 0 9 0 617 0\r
+r 527 0 9 0 607 0\r
+r 527 0 9 0 606 0\r
+r 527 0 9 0 605 0\r
+r 527 0 9 0 603 0\r
+r 527 0 9 0 601 0\r
+r 527 0 9 0 598 0\r
+r 527 0 9 0 593 0\r
+r 527 0 9 0 592 0\r
+r 527 0 9 0 591 0\r
+r 527 0 9 0 590 0\r
+r 527 0 9 0 589 0\r
+r 527 0 9 0 587 0\r
+r 527 0 9 0 585 0\r
+r 527 0 9 0 582 0\r
+r 527 0 9 0 581 0\r
+r 527 0 9 0 580 0\r
+r 527 0 9 0 578 0\r
+r 527 0 9 0 576 0\r
+r 527 0 9 0 574 0\r
+r 527 0 9 0 572 0\r
+r 527 0 9 0 570 0\r
+r 527 0 9 0 567 0\r
+r 527 0 9 0 566 0\r
+r 527 0 9 0 564 0\r
+r 527 0 9 0 561 0\r
+r 527 0 9 0 560 0\r
+r 527 0 9 0 558 0\r
+r 527 0 9 0 556 0\r
+r 527 0 9 0 554 0\r
+r 527 0 9 0 552 0\r
+r 527 0 9 0 549 0\r
+r 527 0 9 0 548 0\r
+r 527 0 9 0 545 0\r
+r 527 0 9 0 543 0\r
+r 527 0 9 0 540 0\r
+r 527 0 9 0 538 0\r
+r 527 0 9 0 535 0\r
+r 527 0 97 0 530 0\r
+r 527 0 1 0 69 0\r
+r 527 0 93 0 532 0\r
+r 527 0 101 0 531 0\r
+r 527 0 5 0 528 0\r
+r 527 0 6 0 529 0\r
+r 527 0 2919 0 533 0\r
+r 527 0 7 0 89 0\r
+r 527 0 7 0 77 0\r
+r 2576 0 2904 0 1321 0\r
+r 2576 0 1 0 10 0 s Relative\r
+r 528 0 2904 0 527 0\r
+r 528 0 1 0 10 0 s G2D-1.0\r
+r 2577 0 2904 0 1169 0\r
+r 2577 0 1 0 10 0 s Has XAxis Scale\r
+r 529 0 2905 0 527 0\r
+r 529 0 1 0 88 0 s http://www.vtt.fi/Simantics/G2DOntology/1.0\r
+r 2578 0 2904 0 1272 0\r
+r 2578 0 1 0 10 0 s Test Data Source\r
+r 530 0 1 0 99 0 s 1.0\r
+r 530 0 2926 0 527 0\r
+r 2579 0 2904 0 1317 0\r
+r 2579 0 1 0 10 0 s Has End Time\r
+r 531 0 1 0 10 0 s g2d\r
+r 531 0 2927 0 527 0\r
+r 2580 0 2904 0 1138 0\r
+r 2580 0 1 0 10 0 s Visual Configuration\r
+r 532 0 1 0 10 0 s org.simantics.diagram.stubs.G2DResource\r
+r 532 0 2925 0 527 0\r
+r 2581 0 2904 0 1184 0\r
+r 2581 0 1 0 10 0 s Is Enabled\r
+r 533 0 65 0 527 0\r
+r 533 0 1 0 62 0\r
+r 533 0 5 0 2841 0\r
+r 533 0 6 0 534 0\r
+r 533 0 7 0 85 0\r
+r 2582 0 2904 0 1159 0\r
+r 2582 0 1 0 10 0 s Constant Value\r
+r 534 0 2905 0 533 0\r
+r 534 0 1 0 88 0 s http://www.vtt.fi/Simantics/G2DOntology/1.0\r
+r 2583 0 2904 0 1326 0\r
+r 2583 0 1 0 10 0 s Scale Mode\r
+r 535 0 2907 0 1006 0\r
+r 535 0 2907 0 628 0\r
+r 535 0 2907 0 538 0\r
+r 535 0 4 0 19 0\r
+r 535 0 5 0 536 0\r
+r 535 0 78 0 537 0\r
+r 535 0 7 0 527 0\r
+r 2584 0 2904 0 1176 0\r
+r 2584 0 1 0 10 0 s Has Red\r
+r 536 0 2904 0 535 0\r
+r 536 0 1 0 10 0 s Point2D\r
+r 2585 0 2904 0 1108 0\r
+r 2585 0 1 0 10 0 s Data Sources\r
+r 537 0 1 0 10 0 s A double valued property describing a two-dimensional point in (x,y) coordinate space.\r
+r 537 0 2923 0 535 0\r
+r 2586 0 2904 0 1118 0\r
+r 2586 0 1 0 10 0 s Has Value\r
+r 538 0 2 0 103 0\r
+r 538 0 3 0 2983 0\r
+r 538 0 28 0 535 0\r
+r 538 0 5 0 539 0\r
+r 538 0 7 0 527 0\r
+r 2587 0 2904 0 1157 0\r
+r 2587 0 1 0 10 0 s Has Point\r
+r 539 0 2904 0 538 0\r
+r 539 0 1 0 10 0 s Has Point2D\r
+r 2588 0 2904 0 1313 0\r
+r 2588 0 1 0 10 0 s Time Segment\r
+r 540 0 2907 0 918 0\r
+r 540 0 2907 0 543 0\r
+r 540 0 4 0 12 0\r
+r 540 0 5 0 541 0\r
+r 540 0 78 0 542 0\r
+r 540 0 7 0 527 0\r
+r 2589 0 2904 0 1113 0\r
+r 2589 0 1 0 10 0 s Has View Configuration\r
+r 541 0 2904 0 540 0\r
+r 541 0 1 0 10 0 s Point2D Array\r
+r 2590 0 2904 0 1253 0\r
+r 2590 0 1 0 10 0 s Surface3 DPlot Configuration\r
+r 542 0 1 0 10 0 s An array of Point2D property values (x,y) as consecutive double values.\r
+r 542 0 2923 0 540 0\r
+r 2591 0 2904 0 1216 0\r
+r 2591 0 1 0 10 0 s Trend2 DView Configuration\r
+r 543 0 2 0 103 0\r
+r 543 0 3 0 2984 0\r
+r 543 0 28 0 540 0\r
+r 543 0 5 0 544 0\r
+r 543 0 7 0 527 0\r
+r 2592 0 2904 0 1324 0\r
+r 2592 0 1 0 10 0 s Plots Share YAxis\r
+r 544 0 2904 0 543 0\r
+r 544 0 1 0 10 0 s Has Point2D Array\r
+r 2593 0 2904 0 1142 0\r
+r 2593 0 1 0 10 0 s Plot Configuration\r
+r 545 0 249 0 547 0\r
+r 545 0 2907 0 548 0\r
+r 545 0 59 0 2045 0\r
+r 545 0 59 0 2041 0\r
+r 545 0 59 0 2037 0\r
+r 545 0 59 0 2022 0\r
+r 545 0 59 0 2018 0\r
+r 545 0 59 0 2004 0\r
+r 545 0 59 0 2000 0\r
+r 545 0 59 0 1989 0\r
+r 545 0 59 0 1985 0\r
+r 545 0 59 0 1971 0\r
+r 545 0 59 0 1967 0\r
+r 545 0 59 0 1963 0\r
+r 545 0 59 0 1945 0\r
+r 545 0 59 0 1941 0\r
+r 545 0 59 0 1937 0\r
+r 545 0 59 0 1922 0\r
+r 545 0 59 0 1918 0\r
+r 545 0 59 0 1907 0\r
+r 545 0 59 0 1903 0\r
+r 545 0 59 0 1899 0\r
+r 545 0 59 0 1887 0\r
+r 545 0 59 0 1883 0\r
+r 545 0 59 0 1869 0\r
+r 545 0 59 0 1859 0\r
+r 545 0 59 0 1855 0\r
+r 545 0 59 0 1841 0\r
+r 545 0 59 0 1837 0\r
+r 545 0 59 0 1833 0\r
+r 545 0 59 0 1818 0\r
+r 545 0 59 0 1814 0\r
+r 545 0 59 0 1810 0\r
+r 545 0 59 0 1795 0\r
+r 545 0 59 0 1791 0\r
+r 545 0 59 0 1787 0\r
+r 545 0 59 0 1775 0\r
+r 545 0 59 0 1759 0\r
+r 545 0 59 0 1746 0\r
+r 545 0 59 0 1730 0\r
+r 545 0 59 0 1714 0\r
+r 545 0 59 0 1710 0\r
+r 545 0 59 0 1696 0\r
+r 545 0 59 0 1692 0\r
+r 545 0 59 0 1688 0\r
+r 545 0 59 0 1676 0\r
+r 545 0 59 0 1672 0\r
+r 545 0 59 0 1668 0\r
+r 545 0 59 0 1656 0\r
+r 545 0 59 0 1652 0\r
+r 545 0 59 0 1641 0\r
+r 545 0 59 0 1637 0\r
+r 545 0 59 0 1623 0\r
+r 545 0 59 0 1619 0\r
+r 545 0 59 0 1615 0\r
+r 545 0 59 0 1600 0\r
+r 545 0 59 0 1596 0\r
+r 545 0 59 0 1592 0\r
+r 545 0 59 0 1577 0\r
+r 545 0 59 0 1573 0\r
+r 545 0 59 0 1569 0\r
+r 545 0 59 0 1557 0\r
+r 545 0 59 0 1553 0\r
+r 545 0 59 0 1549 0\r
+r 545 0 59 0 1537 0\r
+r 545 0 59 0 1533 0\r
+r 545 0 59 0 1529 0\r
+r 545 0 59 0 1517 0\r
+r 545 0 59 0 1513 0\r
+r 545 0 59 0 1509 0\r
+r 545 0 59 0 1497 0\r
+r 545 0 59 0 1493 0\r
+r 545 0 59 0 1489 0\r
+r 545 0 59 0 1477 0\r
+r 545 0 59 0 1473 0\r
+r 545 0 59 0 1469 0\r
+r 545 0 59 0 1457 0\r
+r 545 0 59 0 1453 0\r
+r 545 0 59 0 1449 0\r
+r 545 0 59 0 1445 0\r
+r 545 0 59 0 1441 0\r
+r 545 0 59 0 1437 0\r
+r 545 0 59 0 1422 0\r
+r 545 0 59 0 1418 0\r
+r 545 0 59 0 1414 0\r
+r 545 0 59 0 1410 0\r
+r 545 0 59 0 1397 0\r
+r 545 0 59 0 547 0\r
+r 545 0 4 0 19 0\r
+r 545 0 5 0 2818 0\r
+r 545 0 78 0 546 0\r
+r 545 0 7 0 527 0\r
+r 2594 0 2904 0 1308 0\r
+r 2594 0 1 0 10 0 s Has Line Mode\r
+r 546 0 1 0 10 0 s A 2x3 matrix of six doubles representing an affine 2D transformation in column-major order.\r
+r 546 0 2923 0 545 0\r
+r 2595 0 2904 0 1280 0\r
+r 2595 0 1 0 10 0 s Has Interval\r
+r 547 0 1 0 545 0 [d 1. 0. 0. 1. 0. 0.\r
+r 547 0 2947 0 545 0\r
+r 2596 0 2904 0 1188 0\r
+r 2596 0 1 0 10 0 s Data Source\r
+r 548 0 1 0 42 0\r
+r 548 0 2 0 94 0\r
+r 548 0 3 0 2985 0\r
+r 548 0 60 0 917 0\r
+r 548 0 28 0 545 0\r
+r 548 0 5 0 2842 0\r
+r 548 0 7 0 527 0\r
+r 2597 0 2904 0 1177 0\r
+r 2597 0 1 0 10 0 s Has Green\r
+r 549 0 104 0 559 0\r
+r 549 0 104 0 557 0\r
+r 549 0 104 0 555 0\r
+r 549 0 104 0 553 0\r
+r 549 0 104 0 551 0\r
+r 549 0 129 0 916 0\r
+r 549 0 4 0 25 0\r
+r 549 0 5 0 2795 0\r
+r 549 0 78 0 550 0\r
+r 549 0 7 0 527 0\r
+r 2598 0 2904 0 1342 0\r
+r 2598 0 1 0 10 0 s Manual Grid\r
+r 550 0 1 0 10 0 s A Graphics Node which has some kind of graphical representation.\r
+r 550 0 2923 0 549 0\r
+r 2599 0 2904 0 1304 0\r
+r 2599 0 1 0 10 0 s Has YAxis Mode\r
+r 551 0 1 0 106 0\r
+r 551 0 365 0 549 0\r
+r 551 0 38 0 552 0\r
+r 551 0 39 0 225 0\r
+r 2600 0 2904 0 1295 0\r
+r 2600 0 1 0 10 0 s Chart\r
+r 552 0 2 0 94 0\r
+r 552 0 3 0 2986 0\r
+r 552 0 28 0 561 0\r
+r 552 0 5 0 2828 0\r
+r 552 0 7 0 527 0\r
+r 552 0 2911 0 551 0\r
+r 2601 0 2904 0 1325 0\r
+r 2601 0 1 0 10 0 s Plots Have Individual YAxis\r
+r 553 0 1 0 106 0\r
+r 553 0 365 0 549 0\r
+r 553 0 38 0 554 0\r
+r 553 0 39 0 107 0\r
+r 2602 0 2904 0 1158 0\r
+r 2602 0 1 0 10 0 s Has Color Value\r
+r 554 0 2 0 94 0\r
+r 554 0 3 0 2987 0\r
+r 554 0 28 0 12 0\r
+r 554 0 5 0 2803 0\r
+r 554 0 7 0 527 0\r
+r 554 0 2911 0 553 0\r
+r 2603 0 2904 0 1341 0\r
+r 2603 0 1 0 10 0 s Has Spacing\r
+r 555 0 1 0 106 0\r
+r 555 0 365 0 549 0\r
+r 555 0 38 0 556 0\r
+r 555 0 39 0 107 0\r
+r 2604 0 2904 0 1160 0\r
+r 2604 0 1 0 10 0 s Time Value\r
+r 556 0 2 0 94 0\r
+r 556 0 3 0 2988 0\r
+r 556 0 28 0 11 0\r
+r 556 0 5 0 2820 0\r
+r 556 0 7 0 527 0\r
+r 556 0 2911 0 555 0\r
+r 2605 0 2904 0 1178 0\r
+r 2605 0 1 0 10 0 s Has Blue\r
+r 557 0 1 0 106 0\r
+r 557 0 365 0 549 0\r
+r 557 0 38 0 558 0\r
+r 557 0 39 0 225 0\r
+r 2606 0 2904 0 1098 0\r
+r 2606 0 1 0 10 0 s Webmon Namespace\r
+r 558 0 2 0 94 0\r
+r 558 0 3 0 2989 0\r
+r 558 0 28 0 637 0\r
+r 558 0 5 0 2806 0\r
+r 558 0 7 0 527 0\r
+r 558 0 2911 0 557 0\r
+r 2607 0 2904 0 1238 0\r
+r 2607 0 1 0 10 0 s Surface4 DView Configuration\r
+r 559 0 1 0 106 0\r
+r 559 0 365 0 549 0\r
+r 559 0 38 0 560 0\r
+r 559 0 39 0 225 0\r
+r 2608 0 2904 0 1107 0\r
+r 2608 0 1 0 10 0 s Visualizations\r
+r 560 0 2 0 94 0\r
+r 560 0 3 0 2990 0\r
+r 560 0 28 0 637 0\r
+r 560 0 5 0 2789 0\r
+r 560 0 7 0 527 0\r
+r 560 0 2911 0 559 0\r
+r 2609 0 2904 0 1333 0\r
+r 2609 0 1 0 10 0 s Linear Interpolation\r
+r 561 0 104 0 565 0\r
+r 561 0 104 0 563 0\r
+r 561 0 2907 0 552 0\r
+r 561 0 4 0 24 0\r
+r 561 0 5 0 2846 0\r
+r 561 0 78 0 562 0\r
+r 561 0 7 0 527 0\r
+r 2610 0 2904 0 1328 0\r
+r 2610 0 1 0 10 0 s Fit Min Max\r
+r 562 0 1 0 10 0 s A composite property describing a complete SVG style with stroke and fill attributes. An opacity defined for a Style represents an 'object opacity' which effects both stroke and fill opacity.\r
+r 562 0 2923 0 561 0\r
+r 2611 0 2904 0 1312 0\r
+r 2611 0 1 0 10 0 s Has Time Segment\r
+r 563 0 1 0 106 0\r
+r 563 0 365 0 561 0\r
+r 563 0 38 0 564 0\r
+r 563 0 39 0 225 0\r
+r 2612 0 2904 0 442 0\r
+r 2612 0 1 0 10 0 s Has Devs Component\r
+r 564 0 2 0 94 0\r
+r 564 0 3 0 2991 0\r
+r 564 0 28 0 567 0\r
+r 564 0 5 0 2823 0\r
+r 564 0 7 0 527 0\r
+r 564 0 2911 0 563 0\r
+r 2613 0 2904 0 440 0\r
+r 2613 0 1 0 10 0 s Has Model\r
+r 565 0 1 0 106 0\r
+r 565 0 365 0 561 0\r
+r 565 0 38 0 566 0\r
+r 565 0 39 0 225 0\r
+r 2614 0 2904 0 428 0\r
+r 2614 0 1 0 10 0 s Experiment Library\r
+r 566 0 2 0 94 0\r
+r 566 0 3 0 2992 0\r
+r 566 0 28 0 13 0\r
+r 566 0 5 0 2791 0\r
+r 566 0 7 0 527 0\r
+r 566 0 2911 0 565 0\r
+r 2615 0 2904 0 427 0\r
+r 2615 0 1 0 10 0 s Model\r
+r 567 0 104 0 579 0\r
+r 567 0 104 0 577 0\r
+r 567 0 104 0 575 0\r
+r 567 0 104 0 573 0\r
+r 567 0 104 0 571 0\r
+r 567 0 104 0 569 0\r
+r 567 0 2907 0 564 0\r
+r 567 0 59 0 655 0\r
+r 567 0 4 0 24 0\r
+r 567 0 5 0 2801 0\r
+r 567 0 78 0 568 0\r
+r 567 0 7 0 527 0\r
+r 2616 0 2904 0 435 0\r
+r 2616 0 1 0 10 0 s Has State\r
+r 568 0 1 0 10 0 s A composite property describing all stroke painting attributes possible in SVG\r
+r 568 0 2923 0 567 0\r
+r 2617 0 2904 0 436 0\r
+r 2617 0 1 0 10 0 s State\r
+r 569 0 1 0 106 0\r
+r 569 0 365 0 567 0\r
+r 569 0 38 0 570 0\r
+r 569 0 39 0 225 0\r
+r 2618 0 2904 0 438 0\r
+r 2618 0 1 0 10 0 s Has Initial State\r
+r 570 0 2 0 94 0\r
+r 570 0 3 0 2993 0\r
+r 570 0 28 0 20 0\r
+r 570 0 5 0 2821 0\r
+r 570 0 78 0 626 0\r
+r 570 0 7 0 527 0\r
+r 570 0 2911 0 569 0\r
+r 2619 0 2904 0 431 0\r
+r 2619 0 1 0 10 0 s Experiment\r
+r 571 0 1 0 106 0\r
+r 571 0 365 0 567 0\r
+r 571 0 38 0 572 0\r
+r 571 0 39 0 225 0\r
+r 2620 0 2904 0 422 0\r
+r 2620 0 1 0 10 0 s Simulation Namespace\r
+r 572 0 2 0 94 0\r
+r 572 0 3 0 2994 0\r
+r 572 0 28 0 13 0\r
+r 572 0 5 0 2796 0\r
+r 572 0 78 0 627 0\r
+r 572 0 7 0 527 0\r
+r 572 0 2911 0 571 0\r
+r 2621 0 2904 0 424 0\r
+r 2621 0 1 0 10 0 s Model Library\r
+r 573 0 1 0 106 0\r
+r 573 0 365 0 567 0\r
+r 573 0 38 0 574 0\r
+r 573 0 39 0 225 0\r
+r 2622 0 2904 0 433 0\r
+r 2622 0 1 0 10 0 s Has Configuration\r
+r 574 0 2 0 94 0\r
+r 574 0 3 0 2995 0\r
+r 574 0 28 0 13 0\r
+r 574 0 5 0 2834 0\r
+r 574 0 7 0 527 0\r
+r 574 0 2911 0 573 0\r
+r 2623 0 2904 0 437 0\r
+r 2623 0 1 0 10 0 s Is Configuration Of\r
+r 575 0 1 0 106 0\r
+r 575 0 365 0 567 0\r
+r 575 0 38 0 576 0\r
+r 575 0 39 0 225 0\r
+r 2624 0 2904 0 750 0\r
+r 2624 0 1 0 10 0 s Plugin\r
+r 576 0 2 0 94 0\r
+r 576 0 3 0 2996 0\r
+r 576 0 28 0 13 0\r
+r 576 0 5 0 2819 0\r
+r 576 0 7 0 527 0\r
+r 576 0 2911 0 575 0\r
+r 2625 0 2904 0 742 0\r
+r 2625 0 1 0 10 0 s Requires Version\r
+r 577 0 1 0 106 0\r
+r 577 0 365 0 567 0\r
+r 577 0 38 0 578 0\r
+r 577 0 39 0 225 0\r
+r 2626 0 2904 0 745 0\r
+r 2626 0 1 0 10 0 s Update Site\r
+r 578 0 2 0 110 0\r
+r 578 0 3 0 2997 0\r
+r 578 0 28 0 621 0\r
+r 578 0 5 0 2788 0\r
+r 578 0 7 0 527 0\r
+r 578 0 2911 0 577 0\r
+r 2627 0 2904 0 754 0\r
+r 2627 0 1 0 10 0 s Feature Reference\r
+r 579 0 1 0 106 0\r
+r 579 0 365 0 567 0\r
+r 579 0 38 0 580 0\r
+r 579 0 39 0 225 0\r
+r 2628 0 2904 0 740 0\r
+r 2628 0 1 0 10 0 s Refers To Item\r
+r 580 0 2 0 110 0\r
+r 580 0 3 0 2998 0\r
+r 580 0 28 0 617 0\r
+r 580 0 5 0 2845 0\r
+r 580 0 7 0 527 0\r
+r 580 0 2911 0 579 0\r
+r 2629 0 2904 0 756 0\r
+r 2629 0 1 0 10 0 s Plugin Reference\r
+r 581 0 2 0 110 0\r
+r 581 0 3 0 2999 0\r
+r 581 0 28 0 582 0\r
+r 581 0 5 0 2812 0\r
+r 581 0 7 0 527 0\r
+r 2630 0 2904 0 741 0\r
+r 2630 0 1 0 10 0 s Versioned Item\r
+r 582 0 9 0 584 0\r
+r 582 0 9 0 583 0\r
+r 582 0 26 0 582 0\r
+r 582 0 2907 0 581 0\r
+r 582 0 59 0 584 0\r
+r 582 0 59 0 583 0\r
+r 582 0 4 0 24 0\r
+r 582 0 5 0 2816 0\r
+r 582 0 7 0 527 0\r
+r 2631 0 2904 0 736 0\r
+r 2631 0 1 0 10 0 s Has URL\r
+r 583 0 1 0 582 0\r
+r 583 0 5 0 2793 0\r
+r 583 0 7 0 582 0\r
+r 2632 0 2904 0 743 0\r
+r 2632 0 1 0 10 0 s Has Data\r
+r 584 0 1 0 582 0\r
+r 584 0 5 0 2800 0\r
+r 584 0 7 0 582 0\r
+r 2633 0 2904 0 737 0\r
+r 2633 0 1 0 10 0 s Has Dependency\r
+r 585 0 104 0 588 0\r
+r 585 0 104 0 586 0\r
+r 585 0 2907 0 592 0\r
+r 585 0 2907 0 591 0\r
+r 585 0 2907 0 590 0\r
+r 585 0 4 0 24 0\r
+r 585 0 5 0 2831 0\r
+r 585 0 7 0 527 0\r
+r 2634 0 2904 0 735 0\r
+r 2634 0 1 0 10 0 s Version Range\r
+r 586 0 1 0 106 0\r
+r 586 0 365 0 585 0\r
+r 586 0 38 0 587 0\r
+r 586 0 39 0 225 0\r
+r 2635 0 2904 0 739 0\r
+r 2635 0 1 0 10 0 s Is Dependency Of\r
+r 587 0 2 0 110 0\r
+r 587 0 3 0 3000 0\r
+r 587 0 28 0 593 0\r
+r 587 0 5 0 2839 0\r
+r 587 0 7 0 527 0\r
+r 587 0 2911 0 586 0\r
+r 2636 0 2904 0 733 0\r
+r 2636 0 1 0 10 0 s Deployment Namespace\r
+r 588 0 1 0 106 0\r
+r 588 0 365 0 585 0\r
+r 588 0 38 0 589 0\r
+r 588 0 39 0 107 0\r
+r 2637 0 2904 0 749 0\r
+r 2637 0 1 0 10 0 s Feature\r
+r 589 0 2 0 94 0\r
+r 589 0 3 0 3001 0\r
+r 589 0 28 0 12 0\r
+r 589 0 5 0 2843 0\r
+r 589 0 7 0 527 0\r
+r 589 0 2911 0 588 0\r
+r 2638 0 2904 0 738 0\r
+r 2638 0 1 0 10 0 s Versioned Item Reference\r
+r 590 0 2 0 94 0\r
+r 590 0 3 0 3002 0\r
+r 590 0 28 0 585 0\r
+r 590 0 5 0 2822 0\r
+r 590 0 7 0 527 0\r
+r 2639 0 2904 0 744 0\r
+r 2639 0 1 0 10 0 s Has Item Identifier\r
+r 591 0 2 0 94 0\r
+r 591 0 3 0 3003 0\r
+r 591 0 28 0 585 0\r
+r 591 0 5 0 2813 0\r
+r 591 0 7 0 527 0\r
+r 2640 0 2904 0 691 0\r
+r 2640 0 1 0 10 0 s Has Coefficient\r
+r 592 0 2 0 94 0\r
+r 592 0 3 0 3004 0\r
+r 592 0 28 0 585 0\r
+r 592 0 5 0 2835 0\r
+r 592 0 7 0 527 0\r
+r 2641 0 2904 0 713 0\r
+r 2641 0 1 0 10 0 s Operator\r
+r 593 0 9 0 596 0\r
+r 593 0 9 0 594 0\r
+r 593 0 26 0 593 0\r
+r 593 0 2907 0 587 0\r
+r 593 0 59 0 596 0\r
+r 593 0 59 0 594 0\r
+r 593 0 4 0 24 0\r
+r 593 0 5 0 2811 0\r
+r 593 0 7 0 527 0\r
+r 2642 0 2904 0 720 0\r
+r 2642 0 1 0 10 0 s Element Expression\r
+r 594 0 1 0 593 0\r
+r 594 0 5 0 595 0\r
+r 594 0 7 0 593 0\r
+r 2643 0 2904 0 694 0\r
+r 2643 0 1 0 10 0 s Scalar Polynomial Extent\r
+r 595 0 2904 0 594 0\r
+r 595 0 1 0 10 0 s Normal\r
+r 2644 0 2904 0 679 0\r
+r 2644 0 1 0 10 0 s Expression Extent\r
+r 596 0 1 0 593 0\r
+r 596 0 5 0 597 0\r
+r 596 0 7 0 593 0\r
+r 2645 0 2904 0 723 0\r
+r 2645 0 1 0 10 0 s Assign\r
+r 597 0 2904 0 596 0\r
+r 597 0 1 0 10 0 s Filled\r
+r 2646 0 2904 0 663 0\r
+r 2646 0 1 0 10 0 s Has Source\r
+r 598 0 104 0 604 0\r
+r 598 0 104 0 602 0\r
+r 598 0 104 0 600 0\r
+r 598 0 2907 0 606 0\r
+r 598 0 4 0 24 0\r
+r 598 0 5 0 2799 0\r
+r 598 0 78 0 599 0\r
+r 598 0 7 0 527 0\r
+r 2647 0 2904 0 677 0\r
+r 2647 0 1 0 10 0 s Expression\r
+r 599 0 1 0 10 0 s A composite property describing a single font configuration by its family, style and size.\r
+r 599 0 2923 0 598 0\r
+r 2648 0 2904 0 715 0\r
+r 2648 0 1 0 10 0 s Addition\r
+r 600 0 1 0 106 0\r
+r 600 0 365 0 598 0\r
+r 600 0 38 0 601 0\r
+r 600 0 39 0 107 0\r
+r 2649 0 2904 0 719 0\r
+r 2649 0 1 0 10 0 s Has Element List\r
+r 601 0 2 0 94 0\r
+r 601 0 3 0 3005 0\r
+r 601 0 28 0 10 0\r
+r 601 0 5 0 2804 0\r
+r 601 0 7 0 527 0\r
+r 601 0 2911 0 600 0\r
+r 2650 0 2904 0 700 0\r
+r 2650 0 1 0 10 0 s System Of Equations\r
+r 602 0 1 0 106 0\r
+r 602 0 365 0 598 0\r
+r 602 0 38 0 603 0\r
+r 602 0 39 0 107 0\r
+r 2651 0 2904 0 712 0\r
+r 2651 0 1 0 10 0 s Element\r
+r 603 0 2 0 110 0\r
+r 603 0 3 0 3006 0\r
+r 603 0 28 0 607 0\r
+r 603 0 5 0 2807 0\r
+r 603 0 7 0 527 0\r
+r 603 0 2911 0 602 0\r
+r 2652 0 2904 0 704 0\r
+r 2652 0 1 0 10 0 s Second Order Scalar Polynomial\r
+r 604 0 1 0 106 0\r
+r 604 0 365 0 598 0\r
+r 604 0 38 0 605 0\r
+r 604 0 39 0 107 0\r
+r 2653 0 2904 0 707 0\r
+r 2653 0 1 0 10 0 s Has A\r
+r 605 0 2 0 94 0\r
+r 605 0 3 0 3007 0\r
+r 605 0 28 0 11 0\r
+r 605 0 5 0 2792 0\r
+r 605 0 7 0 527 0\r
+r 605 0 2911 0 604 0\r
+r 2654 0 2904 0 709 0\r
+r 2654 0 1 0 10 0 s Has B\r
+r 606 0 2 0 94 0\r
+r 606 0 3 0 3008 0\r
+r 606 0 28 0 598 0\r
+r 606 0 5 0 2833 0\r
+r 606 0 7 0 527 0\r
+r 2655 0 2904 0 711 0\r
+r 2655 0 1 0 10 0 s Has C\r
+r 607 0 9 0 615 0\r
+r 607 0 9 0 613 0\r
+r 607 0 9 0 611 0\r
+r 607 0 9 0 609 0\r
+r 607 0 26 0 607 0\r
+r 607 0 2907 0 603 0\r
+r 607 0 59 0 615 0\r
+r 607 0 59 0 613 0\r
+r 607 0 59 0 611 0\r
+r 607 0 59 0 609 0\r
+r 607 0 4 0 24 0\r
+r 607 0 5 0 2840 0\r
+r 607 0 78 0 608 0\r
+r 607 0 7 0 527 0\r
+r 2656 0 2904 0 664 0\r
+r 2656 0 1 0 10 0 s Has Target\r
+r 608 0 1 0 10 0 s An enumeration of the allowed font styles.\r
+r 608 0 2923 0 607 0\r
+r 2657 0 2904 0 728 0\r
+r 2657 0 1 0 10 0 s Double To Integer Assign\r
+r 609 0 1 0 607 0\r
+r 609 0 5 0 610 0\r
+r 609 0 7 0 607 0\r
+r 2658 0 2904 0 675 0\r
+r 2658 0 1 0 10 0 s Equation Namespace\r
+r 610 0 2904 0 609 0\r
+r 610 0 1 0 10 0 s normal\r
+r 2659 0 2904 0 727 0\r
+r 2659 0 1 0 10 0 s Double Assign\r
+r 611 0 1 0 607 0\r
+r 611 0 5 0 612 0\r
+r 611 0 7 0 607 0\r
+r 2660 0 2904 0 717 0\r
+r 2660 0 1 0 10 0 s Multiplication\r
+r 612 0 2904 0 611 0\r
+r 612 0 1 0 10 0 s italic\r
+r 2661 0 2904 0 689 0\r
+r 2661 0 1 0 10 0 s Scalar Polynomial\r
+r 613 0 1 0 607 0\r
+r 613 0 5 0 614 0\r
+r 613 0 7 0 607 0\r
+r 2662 0 2904 0 726 0\r
+r 2662 0 1 0 10 0 s Integer Assign\r
+r 614 0 2904 0 613 0\r
+r 614 0 1 0 10 0 s bold\r
+r 2663 0 2904 0 718 0\r
+r 2663 0 1 0 10 0 s Division\r
+r 615 0 1 0 607 0\r
+r 615 0 5 0 616 0\r
+r 615 0 7 0 607 0\r
+r 2664 0 2904 0 665 0\r
+r 2664 0 1 0 10 0 s Number\r
+r 616 0 2904 0 615 0\r
+r 616 0 1 0 10 0 s bold italic\r
+r 2665 0 2904 0 687 0\r
+r 2665 0 1 0 10 0 s Equation\r
+r 617 0 9 0 620 0\r
+r 617 0 9 0 619 0\r
+r 617 0 9 0 618 0\r
+r 617 0 26 0 617 0\r
+r 617 0 2907 0 580 0\r
+r 617 0 59 0 620 0\r
+r 617 0 59 0 619 0\r
+r 617 0 59 0 618 0\r
+r 617 0 4 0 24 0\r
+r 617 0 5 0 2827 0\r
+r 617 0 7 0 527 0\r
+r 2666 0 2904 0 698 0\r
+r 2666 0 1 0 10 0 s System Of Expressions\r
+r 618 0 1 0 617 0\r
+r 618 0 5 0 2817 0\r
+r 618 0 7 0 617 0\r
+r 2667 0 2904 0 716 0\r
+r 2667 0 1 0 10 0 s Subtraction\r
+r 619 0 1 0 617 0\r
+r 619 0 5 0 2797 0\r
+r 619 0 2998 0 655 0\r
+r 619 0 7 0 617 0\r
+r 2668 0 2904 0 703 0\r
+r 2668 0 1 0 10 0 s Has Variable\r
+r 620 0 1 0 617 0\r
+r 620 0 5 0 2805 0\r
+r 620 0 7 0 617 0\r
+r 2669 0 2904 0 1992 0\r
+r 2669 0 1 0 10 0 s Exponential\r
+r 621 0 9 0 624 0\r
+r 621 0 9 0 623 0\r
+r 621 0 9 0 622 0\r
+r 621 0 26 0 621 0\r
+r 621 0 2907 0 578 0\r
+r 621 0 59 0 624 0\r
+r 621 0 59 0 623 0\r
+r 621 0 59 0 622 0\r
+r 621 0 4 0 24 0\r
+r 621 0 5 0 2837 0\r
+r 621 0 7 0 527 0\r
+r 2670 0 2904 0 1380 0\r
+r 2670 0 1 0 10 0 s Value\r
+r 622 0 1 0 621 0\r
+r 622 0 5 0 2798 0\r
+r 622 0 7 0 621 0\r
+r 2671 0 2904 0 2028 0\r
+r 2671 0 1 0 10 0 s Building\r
+r 623 0 1 0 621 0\r
+r 623 0 5 0 2802 0\r
+r 623 0 7 0 621 0\r
+r 2672 0 2904 0 1913 28\r
+r 2672 0 1 0 10 0 s Less Or Equal Than Symbol\r
+r 624 0 1 0 621 0\r
+r 624 0 2997 0 655 0\r
+r 624 0 5 0 2808 0\r
+r 624 0 7 0 621 0\r
+r 2673 0 2904 0 1366 0\r
+r 2673 0 1 0 10 0 s Input\r
+r 625 0 2 0 94 0\r
+r 625 0 3 0 3009 0\r
+r 625 0 28 0 10 0\r
+r 625 0 5 0 2850 0\r
+r 625 0 7 0 527 0\r
+r 2674 0 2904 0 1374 0\r
+r 2674 0 1 0 10 0 s Output Of\r
+r 626 0 1 0 10 0 s The array represents the lengths of the dash segments. Alternate entries in the array represent the user space lengths of the opaque and transparent segments of the dashes.\r
+r 626 0 2923 0 570 0\r
+r 2675 0 2904 0 1778 0\r
+r 2675 0 1 0 10 0 s And\r
+r 627 0 1 0 10 0 s The dash phase is a distance specified in user coordinates that represents an offset into the dashing pattern.\r
+r 627 0 2923 0 572 0\r
+r 2676 0 2904 0 1377 0\r
+r 2676 0 1 0 10 0 s Has Functional Property\r
+r 628 0 2 0 94 0\r
+r 628 0 3 0 3010 0\r
+r 628 0 28 0 535 0\r
+r 628 0 5 0 2829 0\r
+r 628 0 7 0 527 0\r
+r 2677 0 2904 0 1480 0\r
+r 2677 0 1 0 10 0 s Max\r
+r 629 0 2 0 94 0\r
+r 629 0 3 0 3011 0\r
+r 629 0 28 0 10 0\r
+r 629 0 5 0 2832 0\r
+r 629 0 7 0 527 0\r
+r 2678 0 2904 0 1386 0\r
+r 2678 0 1 0 10 0 s Limit\r
+r 630 0 2 0 94 0\r
+r 630 0 3 0 3012 0\r
+r 630 0 28 0 10 0\r
+r 630 0 5 0 2794 0\r
+r 630 0 7 0 527 0\r
+r 2679 0 2904 0 1484 6\r
+r 2679 0 1 0 10 0 s Max Symbol\r
+r 631 0 9 0 634 0\r
+r 631 0 9 0 633 0\r
+r 631 0 9 0 632 0\r
+r 631 0 26 0 631 0\r
+r 631 0 2907 0 636 0\r
+r 631 0 2907 0 635 0\r
+r 631 0 59 0 634 0\r
+r 631 0 59 0 633 0\r
+r 631 0 59 0 632 0\r
+r 631 0 4 0 24 0\r
+r 631 0 5 0 2809 0\r
+r 631 0 7 0 527 0\r
+r 2680 0 2904 0 1925 0\r
+r 2680 0 1 0 10 0 s Less Than\r
+r 632 0 1 0 631 0\r
+r 632 0 5 0 2848 0\r
+r 632 0 7 0 631 0\r
+r 2681 0 2904 0 1392 2\r
+r 2681 0 1 0 10 0 s Random Symbol\r
+r 633 0 1 0 631 0\r
+r 633 0 5 0 2851 0\r
+r 633 0 7 0 631 0\r
+r 2682 0 2904 0 1373 0\r
+r 2682 0 1 0 10 0 s Output\r
+r 634 0 1 0 631 0\r
+r 634 0 5 0 2836 0\r
+r 634 0 7 0 631 0\r
+r 2683 0 2904 0 1754 19\r
+r 2683 0 1 0 10 0 s Generic Sampler Symbol\r
+r 635 0 2 0 110 0\r
+r 635 0 3 0 3013 0\r
+r 635 0 28 0 631 0\r
+r 635 0 5 0 2826 0\r
+r 635 0 7 0 527 0\r
+r 635 0 2911 0 963 0\r
+r 2684 0 2904 0 1890 0\r
+r 2684 0 1 0 10 0 s Greater Than\r
+r 636 0 2 0 110 0\r
+r 636 0 3 0 3014 0\r
+r 636 0 28 0 631 0\r
+r 636 0 5 0 2824 0\r
+r 636 0 7 0 527 0\r
+r 636 0 2911 0 964 0\r
+r 2685 0 2904 0 1958 30\r
+r 2685 0 1 0 10 0 s Linear Combination2 Symbol\r
+r 637 0 2907 0 639 0\r
+r 637 0 2907 0 560 0\r
+r 637 0 2907 0 558 0\r
+r 637 0 59 0 645 0\r
+r 637 0 59 0 643 0\r
+r 637 0 4 0 20 0\r
+r 637 0 5 0 2825 0\r
+r 637 0 78 0 638 0\r
+r 637 0 7 0 527 0\r
+r 2686 0 2904 0 1872 0\r
+r 2686 0 1 0 10 0 s Greater Or Equal Than\r
+r 638 0 1 0 10 0 s A 4-component RGBA color as floats.\r
+r 638 0 2923 0 637 0\r
+r 2687 0 2904 0 1821 0\r
+r 2687 0 1 0 10 0 s Xor\r
+r 639 0 2 0 94 0\r
+r 639 0 3 0 3015 0\r
+r 639 0 28 0 637 0\r
+r 639 0 5 0 2814 0\r
+r 639 0 7 0 527 0\r
+r 639 0 2911 0 651 0\r
+r 2688 0 2904 0 1948 0\r
+r 2688 0 1 0 10 0 s Linear Combination2\r
+r 640 0 59 0 642 0\r
+r 640 0 4 0 57 0\r
+r 640 0 5 0 2830 0\r
+r 640 0 78 0 641 0\r
+r 640 0 7 0 527 0\r
+r 2689 0 2904 0 1460 0\r
+r 2689 0 1 0 10 0 s Min\r
+r 641 0 1 0 10 0 s A collection of colors\r
+r 641 0 2923 0 640 0\r
+r 2690 0 2904 0 1425 0\r
+r 2690 0 1 0 10 0 s Random Normal\r
+r 642 0 9 0 645 0\r
+r 642 0 9 0 643 0\r
+r 642 0 1 0 640 0\r
+r 642 0 5 0 2838 0\r
+r 642 0 7 0 527 0\r
+r 2691 0 2904 0 1805 22\r
+r 2691 0 1 0 10 0 s Or Symbol\r
+r 643 0 1 0 637 0 [f 0.0 0.0 0.0 1.0\r
+r 643 0 5 0 644 0\r
+r 643 0 7 0 642 0\r
+r 2692 0 2904 0 1364 0\r
+r 2692 0 1 0 10 0 s Control\r
+r 644 0 2904 0 643 0\r
+r 644 0 1 0 10 0 s Black\r
+r 2693 0 2904 0 1405 3\r
+r 2693 0 1 0 10 0 s Select Symbol\r
+r 645 0 1 0 637 0 [f 1.0 1.0 1.0 1.0\r
+r 645 0 5 0 646 0\r
+r 645 0 7 0 642 0\r
+r 2694 0 2904 0 1910 0\r
+r 2694 0 1 0 10 0 s Less Or Equal Than\r
+r 646 0 2904 0 645 0\r
+r 646 0 1 0 10 0 s White\r
+r 2695 0 2904 0 2025 0\r
+r 2695 0 1 0 10 0 s External Air Temperature\r
+r 647 0 104 0 648 0\r
+r 647 0 2907 0 654 0\r
+r 647 0 4 0 24 0\r
+r 647 0 5 0 2810 0\r
+r 647 0 7 0 527 0\r
+r 2696 0 2904 0 1379 0\r
+r 2696 0 1 0 10 0 s Length\r
+r 648 0 1 0 106 0\r
+r 648 0 365 0 647 0\r
+r 648 0 38 0 649 0\r
+r 648 0 39 0 362 0\r
+r 2697 0 2904 0 1894 27\r
+r 2697 0 1 0 10 0 s Greater Than Symbol\r
+r 649 0 2 0 94 0\r
+r 649 0 3 0 3016 0\r
+r 649 0 28 0 650 0\r
+r 649 0 5 0 2849 0\r
+r 649 0 7 0 527 0\r
+r 649 0 2911 0 648 0\r
+r 2698 0 2904 0 1358 0\r
+r 2698 0 1 0 10 0 s Devs Model\r
+r 650 0 104 0 652 0\r
+r 650 0 104 0 651 0\r
+r 650 0 2907 0 649 0\r
+r 650 0 4 0 24 0\r
+r 650 0 5 0 2790 0\r
+r 650 0 7 0 527 0\r
+r 2699 0 2904 0 1400 0\r
+r 2699 0 1 0 10 0 s Select\r
+r 651 0 1 0 106 0\r
+r 651 0 365 0 650 0\r
+r 651 0 38 0 639 0\r
+r 651 0 39 0 107 0\r
+r 2700 0 2904 0 1932 29\r
+r 2700 0 1 0 10 0 s Less Than Symbol\r
+r 652 0 1 0 106 0\r
+r 652 0 365 0 650 0\r
+r 652 0 38 0 653 0\r
+r 652 0 39 0 107 0\r
+r 2701 0 2904 0 2032 33\r
+r 2701 0 1 0 10 0 s Building Symbol\r
+r 653 0 2 0 94 0\r
+r 653 0 3 0 3017 0\r
+r 653 0 28 0 12 0\r
+r 653 0 5 0 2847 0\r
+r 653 0 7 0 527 0\r
+r 653 0 2911 0 652 0\r
+r 2702 0 2904 0 1647 14\r
+r 2702 0 1 0 10 0 s Boolean Value Symbol\r
+r 654 0 2 0 94 0\r
+r 654 0 3 0 3018 0\r
+r 654 0 28 0 647 0\r
+r 654 0 5 0 2844 0\r
+r 654 0 7 0 527 0\r
+r 2703 0 2904 0 1679 0\r
+r 2703 0 1 0 10 0 s Demux\r
+r 655 0 576 0 660 0\r
+r 655 0 1 0 567 0\r
+r 655 0 578 0 624 0\r
+r 655 0 570 0 658 0\r
+r 655 0 580 0 619 0\r
+r 655 0 572 0 659 0\r
+r 655 0 5 0 2815 0\r
+r 655 0 574 0 657 0\r
+r 655 0 78 0 656 0\r
+r 655 0 7 0 527 0\r
+r 2704 0 2904 0 1659 0\r
+r 2704 0 1 0 10 0 s Mux\r
+r 656 0 1 0 10 0 s Default Stroke with width = 1\r
+r 656 0 2923 0 655 0\r
+r 2705 0 2904 0 1359 0\r
+r 2705 0 1 0 10 0 s Phantom Terminal\r
+r 657 0 1 0 13 0 f 1.0\r
+r 657 0 2995 0 655 0\r
+r 2706 0 2904 0 1603 0\r
+r 2706 0 1 0 10 0 s Integral2\r
+r 658 0 2993 0 655 0\r
+r 658 0 1 0 20 0 [f 1.0\r
+r 2707 0 2904 0 1385 0\r
+r 2707 0 1 0 10 0 s Output Value\r
+r 659 0 1 0 13 0 f 0.0\r
+r 659 0 2994 0 655 0\r
+r 2708 0 2904 0 1375 0\r
+r 2708 0 1 0 10 0 s Output1\r
+r 660 0 1 0 13 0 f 1.0\r
+r 660 0 2996 0 655 0\r
+r 2709 0 2904 0 1376 0\r
+r 2709 0 1 0 10 0 s Output2\r
+r 661 0 2 0 110 0\r
+r 661 0 3 0 3019 0\r
+r 661 0 28 0 10 0\r
+r 661 0 5 0 662 0\r
+r 661 0 7 0 527 0\r
+r 661 0 2911 0 914 0\r
+r 2710 0 2904 0 1878 26\r
+r 2710 0 1 0 10 0 s Greater Or Equal Than Symbol\r
+r 662 0 2904 0 661 0\r
+r 662 0 1 0 10 0 s Has SVG Document\r
+r 2711 0 2904 0 1351 0\r
+r 2711 0 1 0 10 0 s Devs Namespace\r
+r 663 0 2 0 103 0\r
+r 663 0 3 0 664 0\r
+r 663 0 139 0 687 0\r
+r 663 0 139 0 679 0\r
+r 663 0 139 0 677 0\r
+r 663 0 28 0 697 0\r
+r 663 0 5 0 2646 0\r
+r 663 0 29 0 695 0\r
+r 663 0 7 0 669 0\r
+r 663 0 2911 0 724 0\r
+r 663 0 2911 0 701 0\r
+r 663 0 2911 0 692 0\r
+r 663 0 2911 0 688 0\r
+r 663 0 2911 0 682 0\r
+r 2712 0 2904 0 1632 13\r
+r 2712 0 1 0 10 0 s Gain Symbol\r
+r 664 0 2 0 112 0\r
+r 664 0 3 0 663 0\r
+r 664 0 139 0 679 0\r
+r 664 0 139 0 677 0\r
+r 664 0 5 0 2656 0\r
+r 664 0 7 0 669 0\r
+r 664 0 2911 0 725 0\r
+r 664 0 2911 0 722 0\r
+r 664 0 2911 0 693 0\r
+r 664 0 2911 0 678 0\r
+r 2713 0 2904 0 1663 15\r
+r 2713 0 1 0 10 0 s Mux Symbol\r
+r 665 0 104 0 714 0\r
+r 665 0 4 0 712 0\r
+r 665 0 5 0 2664 0\r
+r 665 0 7 0 666 0\r
+r 2714 0 2904 0 2027 0\r
+r 2714 0 1 0 10 0 s Cooling Power Use\r
+r 666 0 9 0 728 0\r
+r 666 0 9 0 727 0\r
+r 666 0 9 0 726 0\r
+r 666 0 9 0 723 0\r
+r 666 0 9 0 720 0\r
+r 666 0 9 0 718 0\r
+r 666 0 9 0 717 0\r
+r 666 0 9 0 716 0\r
+r 666 0 9 0 715 0\r
+r 666 0 9 0 713 0\r
+r 666 0 9 0 712 0\r
+r 666 0 9 0 704 0\r
+r 666 0 9 0 700 0\r
+r 666 0 9 0 698 0\r
+r 666 0 9 0 689 0\r
+r 666 0 9 0 687 0\r
+r 666 0 9 0 685 0\r
+r 666 0 9 0 683 0\r
+r 666 0 9 0 680 0\r
+r 666 0 9 0 677 0\r
+r 666 0 9 0 665 0\r
+r 666 0 1 0 48 0\r
+r 666 0 5 0 667 0\r
+r 666 0 7 0 668 0\r
+r 2715 0 2904 0 1644 0\r
+r 2715 0 1 0 10 0 s Boolean Value\r
+r 667 0 2904 0 666 0\r
+r 667 0 1 0 10 0 s Types\r
+r 2716 0 2904 0 1524 8\r
+r 2716 0 1 0 10 0 s Division Symbol\r
+r 668 0 97 0 673 0\r
+r 668 0 1 0 69 0\r
+r 668 0 9 0 694 0\r
+r 668 0 9 0 679 0\r
+r 668 0 9 0 669 0\r
+r 668 0 9 0 666 0\r
+r 668 0 93 0 674 0\r
+r 668 0 5 0 671 0\r
+r 668 0 6 0 672 0\r
+r 668 0 2919 0 675 0\r
+r 668 0 7 0 89 0\r
+r 668 0 7 0 77 0\r
+r 2717 0 2904 0 1504 7\r
+r 2717 0 1 0 10 0 s Sum Symbol\r
+r 669 0 9 0 719 0\r
+r 669 0 9 0 711 0\r
+r 669 0 9 0 709 0\r
+r 669 0 9 0 707 0\r
+r 669 0 9 0 703 0\r
+r 669 0 9 0 691 0\r
+r 669 0 9 0 664 0\r
+r 669 0 9 0 663 0\r
+r 669 0 1 0 55 0\r
+r 669 0 5 0 670 0\r
+r 669 0 7 0 668 0\r
+r 2718 0 2904 0 1432 4\r
+r 2718 0 1 0 10 0 s Random Normal Symbol\r
+r 670 0 2904 0 669 0\r
+r 670 0 1 0 10 0 s Relations\r
+r 2719 0 2904 0 1560 0\r
+r 2719 0 1 0 10 0 s Product\r
+r 671 0 2904 0 668 0\r
+r 671 0 1 0 10 0 s Equation-1.0\r
+r 2720 0 2904 0 1770 20\r
+r 2720 0 1 0 10 0 s Boolean Sampler Symbol\r
+r 672 0 2905 0 668 0\r
+r 672 0 1 0 88 0 s http://www.vtt.fi/Simantics/Equation/1.0\r
+r 2721 0 2904 0 1500 0\r
+r 2721 0 1 0 10 0 s Sum\r
+r 673 0 1 0 99 0 s 1.0\r
+r 673 0 2926 0 668 0\r
+r 2722 0 2904 0 1580 0\r
+r 2722 0 1 0 10 0 s Integral\r
+r 674 0 1 0 10 0 s org.simantics.equation.stubs.EquationResource\r
+r 674 0 2925 0 668 0\r
+r 2723 0 2904 0 1382 0\r
+r 2723 0 1 0 10 0 s Scale1\r
+r 675 0 65 0 668 0\r
+r 675 0 1 0 62 0\r
+r 675 0 5 0 2658 0\r
+r 675 0 6 0 676 0\r
+r 675 0 7 0 85 0\r
+r 2724 0 2904 0 1741 18\r
+r 2724 0 1 0 10 0 s Sampler Symbol\r
+r 676 0 2905 0 675 0\r
+r 676 0 1 0 88 0 s http://www.vtt.fi/Simantics/Equation/1.0\r
+r 2725 0 2904 0 1383 0\r
+r 2725 0 1 0 10 0 s Scale2\r
+r 677 0 104 0 678 0\r
+r 677 0 136 0 664 0\r
+r 677 0 136 0 663 0\r
+r 677 0 129 0 723 0\r
+r 677 0 129 0 720 0\r
+r 677 0 129 0 689 0\r
+r 677 0 129 0 687 0\r
+r 677 0 129 0 680 0\r
+r 677 0 145 0 677 0\r
+r 677 0 2906 0 697 0\r
+r 677 0 2906 0 695 0\r
+r 677 0 2907 0 701 0\r
+r 677 0 2907 0 699 0\r
+r 677 0 131 0 679 0\r
+r 677 0 4 0 25 0\r
+r 677 0 5 0 2647 0\r
+r 677 0 7 0 666 0\r
+r 2726 0 2904 0 1381 0\r
+r 2726 0 1 0 10 0 s Scale\r
+r 678 0 1 0 106 0\r
+r 678 0 365 0 677 0\r
+r 678 0 38 0 664 0\r
+r 2727 0 2904 0 1850 24\r
+r 2727 0 1 0 10 0 s Not Symbol\r
+r 679 0 136 0 664 0\r
+r 679 0 136 0 663 0\r
+r 679 0 1 0 130 0\r
+r 679 0 132 0 677 0\r
+r 679 0 5 0 2644 0\r
+r 679 0 142 0 694 0\r
+r 679 0 7 0 668 0\r
+r 2728 0 2904 0 1798 0\r
+r 2728 0 1 0 10 0 s Or\r
+r 680 0 104 0 682 0\r
+r 680 0 129 0 685 0\r
+r 680 0 129 0 683 0\r
+r 680 0 145 0 680 0\r
+r 680 0 4 0 677 0\r
+r 680 0 5 0 681 0\r
+r 680 0 7 0 666 0\r
+r 2729 0 2904 0 1564 10\r
+r 2729 0 1 0 10 0 s Product Symbol\r
+r 681 0 2904 0 680 0\r
+r 681 0 1 0 10 0 s AggregateExpression\r
+r 2730 0 2904 0 1725 0\r
+r 2730 0 1 0 10 0 s Trend Symbol\r
+r 682 0 1 0 106 0\r
+r 682 0 365 0 680 0\r
+r 682 0 38 0 663 0\r
+r 2731 0 2904 0 1464 5\r
+r 2731 0 1 0 10 0 s Min Symbol\r
+r 683 0 4 0 680 0\r
+r 683 0 5 0 684 0\r
+r 683 0 7 0 666 0\r
+r 2732 0 2904 0 1974 0\r
+r 2732 0 1 0 10 0 s Set Value\r
+r 684 0 2904 0 683 0\r
+r 684 0 1 0 10 0 s SumExpression\r
+r 2733 0 2904 0 2013 0\r
+r 2733 0 1 0 10 0 s Boolean Toggle Value Symbol\r
+r 685 0 4 0 680 0\r
+r 685 0 5 0 686 0\r
+r 685 0 7 0 666 0\r
+r 2734 0 2904 0 1699 0\r
+r 2734 0 1 0 10 0 s Delay\r
+r 686 0 2904 0 685 0\r
+r 686 0 1 0 10 0 s ProductExpression\r
+r 2735 0 2904 0 1363 0\r
+r 2735 0 1 0 10 0 s Self\r
+r 687 0 136 0 663 0\r
+r 687 0 104 0 688 0\r
+r 687 0 2906 0 696 0\r
+r 687 0 4 0 677 0\r
+r 687 0 5 0 2665 0\r
+r 687 0 7 0 666 0\r
+r 2736 0 2904 0 1844 0\r
+r 2736 0 1 0 10 0 s Not\r
+r 688 0 1 0 106 0\r
+r 688 0 365 0 687 0\r
+r 688 0 38 0 663 0\r
+r 688 0 39 0 356 0\r
+r 2737 0 2904 0 1544 9\r
+r 2737 0 1 0 10 0 s Subtraction Symbol\r
+r 689 0 136 0 691 0\r
+r 689 0 104 0 693 0\r
+r 689 0 104 0 692 0\r
+r 689 0 104 0 690 0\r
+r 689 0 129 0 704 0\r
+r 689 0 137 0 691 0\r
+r 689 0 131 0 694 0\r
+r 689 0 4 0 677 0\r
+r 689 0 5 0 2661 0\r
+r 689 0 7 0 666 0\r
+r 2738 0 2904 0 1587 11\r
+r 2738 0 1 0 10 0 s Integral Symbol\r
+r 690 0 1 0 106 0\r
+r 690 0 28 0 12 0\r
+r 690 0 365 0 689 0\r
+r 690 0 38 0 691 0\r
+r 2739 0 2904 0 1683 16\r
+r 2739 0 1 0 10 0 s Demux Symbol\r
+r 691 0 2 0 110 0\r
+r 691 0 3 0 3020 0\r
+r 691 0 139 0 689 0\r
+r 691 0 60 0 711 0\r
+r 691 0 60 0 709 0\r
+r 691 0 60 0 707 0\r
+r 691 0 5 0 2640 0\r
+r 691 0 141 0 694 0\r
+r 691 0 141 0 689 0\r
+r 691 0 7 0 669 0\r
+r 691 0 2911 0 690 0\r
+r 2740 0 2904 0 1387 0\r
+r 2740 0 1 0 10 0 s Random Boolean Sequence\r
+r 692 0 1 0 106 0\r
+r 692 0 365 0 689 0\r
+r 692 0 38 0 663 0\r
+r 692 0 39 0 107 0\r
+r 2741 0 2904 0 1762 0\r
+r 2741 0 1 0 10 0 s Boolean Sampler\r
+r 693 0 1 0 106 0\r
+r 693 0 365 0 689 0\r
+r 693 0 38 0 664 0\r
+r 693 0 39 0 107 0\r
+r 2742 0 2904 0 1717 0\r
+r 2742 0 1 0 10 0 s Trend\r
+r 694 0 137 0 691 0\r
+r 694 0 1 0 130 0\r
+r 694 0 132 0 689 0\r
+r 694 0 5 0 2643 0\r
+r 694 0 143 0 679 0\r
+r 694 0 7 0 668 0\r
+r 2743 0 2904 0 1368 0\r
+r 2743 0 1 0 10 0 s Input1\r
+r 695 0 1 0 33 0\r
+r 695 0 27 0 696 0\r
+r 695 0 27 0 677 0\r
+r 695 0 2908 0 663 0\r
+r 2744 0 2904 0 1369 0\r
+r 2744 0 1 0 10 0 s Input2\r
+r 696 0 1 0 33 0\r
+r 696 0 2906 0 695 0\r
+r 696 0 27 0 687 0\r
+r 696 0 27 0 24 0\r
+r 2745 0 2904 0 1995 32\r
+r 2745 0 1 0 10 0 s Exponential Symbol\r
+r 697 0 1 0 33 0\r
+r 697 0 2907 0 663 0\r
+r 697 0 27 0 677 0\r
+r 697 0 27 0 24 0\r
+r 2746 0 2904 0 1370 0\r
+r 2746 0 1 0 10 0 s Input3\r
+r 698 0 104 0 699 0\r
+r 698 0 4 0 25 0\r
+r 698 0 5 0 2666 0\r
+r 698 0 7 0 666 0\r
+r 2747 0 2904 0 1371 0\r
+r 2747 0 1 0 10 0 s Input4\r
+r 699 0 1 0 106 0\r
+r 699 0 28 0 677 0\r
+r 699 0 365 0 698 0\r
+r 699 0 38 0 9 0\r
+r 2748 0 2904 0 1705 17\r
+r 2748 0 1 0 10 0 s Delay Symbol\r
+r 700 0 104 0 702 0\r
+r 700 0 104 0 701 0\r
+r 700 0 4 0 25 0\r
+r 700 0 5 0 2650 0\r
+r 700 0 7 0 666 0\r
+r 2749 0 2904 0 1372 0\r
+r 2749 0 1 0 10 0 s Input5\r
+r 701 0 1 0 106 0\r
+r 701 0 28 0 677 0\r
+r 701 0 365 0 700 0\r
+r 701 0 38 0 663 0\r
+r 2750 0 2904 0 1354 0\r
+r 2750 0 1 0 10 0 s Devs Model Manager\r
+r 702 0 1 0 106 0\r
+r 702 0 365 0 700 0\r
+r 702 0 38 0 703 0\r
+r 2751 0 2904 0 1864 25\r
+r 2751 0 1 0 10 0 s Ground Symbol\r
+r 703 0 2 0 103 0\r
+r 703 0 3 0 3021 0\r
+r 703 0 28 0 24 0\r
+r 703 0 5 0 2668 0\r
+r 703 0 7 0 669 0\r
+r 703 0 2911 0 714 0\r
+r 703 0 2911 0 702 0\r
+r 2752 0 2904 0 1378 0\r
+r 2752 0 1 0 10 0 s Count\r
+r 704 0 104 0 710 0\r
+r 704 0 104 0 708 0\r
+r 704 0 104 0 706 0\r
+r 704 0 4 0 689 0\r
+r 704 0 5 0 2652 0\r
+r 704 0 78 0 705 0\r
+r 704 0 7 0 666 0\r
+r 2753 0 2904 0 1353 0\r
+r 2753 0 1 0 10 0 s Devs Modelling Domain\r
+r 705 0 1 0 10 0 s Defines a second order equation in form of: ax^2 + bx + c = y , x=[source], y=[target]\r
+r 705 0 2923 0 704 0\r
+r 2754 0 2904 0 1626 0\r
+r 2754 0 1 0 10 0 s Gain\r
+r 706 0 1 0 106 0\r
+r 706 0 365 0 704 0\r
+r 706 0 38 0 707 0\r
+r 706 0 39 0 107 0\r
+r 2755 0 2904 0 1733 0\r
+r 2755 0 1 0 10 0 s Sampler\r
+r 707 0 2 0 691 0\r
+r 707 0 3 0 3022 0\r
+r 707 0 28 0 12 0\r
+r 707 0 5 0 2653 0\r
+r 707 0 7 0 669 0\r
+r 707 0 2911 0 706 0\r
+r 2756 0 2904 0 1384 0\r
+r 2756 0 1 0 10 0 s Frequency\r
+r 708 0 1 0 106 0\r
+r 708 0 365 0 704 0\r
+r 708 0 38 0 709 0\r
+r 708 0 39 0 107 0\r
+r 2757 0 2904 0 2007 0\r
+r 2757 0 1 0 10 0 s Boolean Toggle Value\r
+r 709 0 2 0 691 0\r
+r 709 0 3 0 3023 0\r
+r 709 0 28 0 12 0\r
+r 709 0 5 0 2654 0\r
+r 709 0 7 0 669 0\r
+r 709 0 2911 0 708 0\r
+r 2758 0 2904 0 1782 21\r
+r 2758 0 1 0 10 0 s And Symbol\r
+r 710 0 1 0 106 0\r
+r 710 0 365 0 704 0\r
+r 710 0 38 0 711 0\r
+r 710 0 39 0 107 0\r
+r 2759 0 2904 0 1520 0\r
+r 2759 0 1 0 10 0 s Division\r
+r 711 0 2 0 691 0\r
+r 711 0 3 0 3024 0\r
+r 711 0 28 0 12 0\r
+r 711 0 5 0 2655 0\r
+r 711 0 7 0 669 0\r
+r 711 0 2911 0 710 0\r
+r 2760 0 2904 0 1828 23\r
+r 2760 0 1 0 10 0 s Xor Symbol\r
+r 712 0 129 0 713 0\r
+r 712 0 129 0 665 0\r
+r 712 0 4 0 25 0\r
+r 712 0 5 0 2651 0\r
+r 712 0 7 0 666 0\r
+r 2761 0 2904 0 1365 0\r
+r 2761 0 1 0 10 0 s Reset\r
+r 713 0 129 0 718 0\r
+r 713 0 129 0 717 0\r
+r 713 0 129 0 716 0\r
+r 713 0 129 0 715 0\r
+r 713 0 4 0 712 0\r
+r 713 0 5 0 2641 0\r
+r 713 0 7 0 666 0\r
+r 2762 0 2904 0 1980 31\r
+r 2762 0 1 0 10 0 s Set Value Symbol\r
+r 714 0 1 0 106 0\r
+r 714 0 365 0 665 0\r
+r 714 0 38 0 703 0\r
+r 714 0 39 0 107 0\r
+r 2763 0 2904 0 1862 0\r
+r 2763 0 1 0 10 0 s Ground\r
+r 715 0 4 0 713 0\r
+r 715 0 5 0 2648 0\r
+r 715 0 7 0 666 0\r
+r 2764 0 2904 0 2026 0\r
+r 2764 0 1 0 10 0 s Heating Power Use\r
+r 716 0 4 0 713 0\r
+r 716 0 5 0 2667 0\r
+r 716 0 7 0 666 0\r
+r 2765 0 2904 0 1610 12\r
+r 2765 0 1 0 10 0 s Integral2 Symbol\r
+r 717 0 4 0 713 0\r
+r 717 0 5 0 2660 0\r
+r 717 0 7 0 666 0\r
+r 2766 0 2904 0 1749 0\r
+r 2766 0 1 0 10 0 s Generic Sampler\r
+r 718 0 4 0 713 0\r
+r 718 0 5 0 2663 0\r
+r 718 0 7 0 666 0\r
+r 2767 0 2904 0 1367 0\r
+r 2767 0 1 0 10 0 s Input Of\r
+r 719 0 2 0 94 0\r
+r 719 0 3 0 3025 0\r
+r 719 0 28 0 220 0\r
+r 719 0 5 0 2649 0\r
+r 719 0 7 0 669 0\r
+r 719 0 2911 0 721 0\r
+r 2768 0 2904 0 1540 0\r
+r 2768 0 1 0 10 0 s Subtraction\r
+r 720 0 104 0 722 0\r
+r 720 0 104 0 721 0\r
+r 720 0 4 0 677 0\r
+r 720 0 5 0 2642 0\r
+r 720 0 7 0 666 0\r
+r 2769 0 2904 0 389 0\r
+r 2769 0 1 0 10 0 s Required By Feature\r
+r 721 0 1 0 106 0\r
+r 721 0 365 0 720 0\r
+r 721 0 38 0 719 0\r
+r 721 0 39 0 107 0\r
+r 2770 0 2904 0 401 0\r
+r 2770 0 1 0 10 0 s Features\r
+r 722 0 1 0 106 0\r
+r 722 0 365 0 720 0\r
+r 722 0 38 0 664 0\r
+r 722 0 39 0 107 0\r
+r 2771 0 2904 0 410 0\r
+r 2771 0 1 0 10 0 s Administration Feature\r
+r 723 0 104 0 725 0\r
+r 723 0 104 0 724 0\r
+r 723 0 129 0 728 0\r
+r 723 0 129 0 727 0\r
+r 723 0 129 0 726 0\r
+r 723 0 4 0 677 0\r
+r 723 0 5 0 2645 0\r
+r 723 0 7 0 666 0\r
+r 2772 0 2904 0 396 0\r
+r 2772 0 1 0 10 0 s Experiment Control Feature\r
+r 724 0 1 0 106 0\r
+r 724 0 365 0 723 0\r
+r 724 0 38 0 663 0\r
+r 724 0 39 0 107 0\r
+r 2773 0 2904 0 379 0\r
+r 2773 0 1 0 10 0 s Has Feature\r
+r 725 0 1 0 106 0\r
+r 725 0 365 0 723 0\r
+r 725 0 38 0 664 0\r
+r 725 0 39 0 107 0\r
+r 2774 0 2904 0 375 0\r
+r 2774 0 1 0 10 0 s Project Type2\r
+r 726 0 4 0 723 0\r
+r 726 0 5 0 2662 0\r
+r 726 0 7 0 666 0\r
+r 2775 0 2904 0 383 0\r
+r 2775 0 1 0 10 0 s Lifecycle Feature\r
+r 727 0 4 0 723 0\r
+r 727 0 5 0 2659 0\r
+r 727 0 7 0 666 0\r
+r 2776 0 2904 0 376 0\r
+r 2776 0 1 0 10 0 s Project2\r
+r 728 0 4 0 723 0\r
+r 728 0 5 0 2657 0\r
+r 728 0 7 0 666 0\r
+r 2777 0 2904 0 374 0\r
+r 2777 0 1 0 10 0 s Published Project Features\r
+r 729 0 9 0 756 0\r
+r 729 0 9 0 754 0\r
+r 729 0 9 0 750 0\r
+r 729 0 9 0 749 0\r
+r 729 0 9 0 745 0\r
+r 729 0 9 0 744 0\r
+r 729 0 9 0 743 0\r
+r 729 0 9 0 742 0\r
+r 729 0 9 0 741 0\r
+r 729 0 9 0 740 0\r
+r 729 0 9 0 739 0\r
+r 729 0 9 0 738 0\r
+r 729 0 9 0 737 0\r
+r 729 0 9 0 736 0\r
+r 729 0 9 0 735 0\r
+r 729 0 97 0 732 0\r
+r 729 0 1 0 69 0\r
+r 729 0 5 0 730 0\r
+r 729 0 6 0 731 0\r
+r 729 0 2919 0 733 0\r
+r 729 0 7 0 89 0\r
+r 729 0 7 0 77 0\r
+r 2778 0 2904 0 380 0\r
+r 2778 0 1 0 10 0 s Has Extension Id\r
+r 730 0 2904 0 729 0\r
+r 730 0 1 0 10 0 s Deployment-1.0\r
+r 2779 0 2904 0 392 0\r
+r 2779 0 1 0 10 0 s Is Incompatible With Feature\r
+r 731 0 2905 0 729 0\r
+r 731 0 1 0 88 0 s http://www.simantics.org/Ontology/Deployment/1.0\r
+r 2780 0 2904 0 408 0\r
+r 2780 0 1 0 10 0 s Modelling Domain\r
+r 732 0 1 0 99 0 s 1.0\r
+r 732 0 2926 0 729 0\r
+r 2781 0 2904 0 394 0\r
+r 2781 0 1 0 10 0 s Requires Namespace\r
+r 733 0 65 0 729 0\r
+r 733 0 1 0 62 0\r
+r 733 0 5 0 2636 0\r
+r 733 0 6 0 734 0\r
+r 733 0 7 0 85 0\r
+r 2782 0 2904 0 390 0\r
+r 2782 0 1 0 10 0 s Is Compatible With Feature\r
+r 734 0 2905 0 733 0\r
+r 734 0 1 0 88 0 s http://www.simantics.org/Ontology/Deployment/1.0\r
+r 2783 0 2904 0 388 0\r
+r 2783 0 1 0 10 0 s Requires Feature\r
+r 735 0 2907 0 742 0\r
+r 735 0 4 0 10 0\r
+r 735 0 5 0 2634 0\r
+r 735 0 7 0 729 0\r
+r 2784 0 2904 0 384 0\r
+r 2784 0 1 0 10 0 s Extension Feature\r
+r 736 0 2 0 94 0\r
+r 736 0 3 0 3026 0\r
+r 736 0 28 0 198 0\r
+r 736 0 5 0 2631 0\r
+r 736 0 7 0 729 0\r
+r 736 0 2911 0 746 0\r
+r 2785 0 2904 0 397 0\r
+r 2785 0 1 0 10 0 s Model Manager Feature\r
+r 737 0 2 0 103 0\r
+r 737 0 3 0 739 0\r
+r 737 0 28 0 738 0\r
+r 737 0 5 0 2633 0\r
+r 737 0 7 0 729 0\r
+r 2786 0 2904 0 398 0\r
+r 2786 0 1 0 10 0 s Ontology Requirement Validation Feature\r
+r 738 0 104 0 753 0\r
+r 738 0 104 0 752 0\r
+r 738 0 104 0 751 0\r
+r 738 0 129 0 756 0\r
+r 738 0 129 0 754 0\r
+r 738 0 2907 0 737 0\r
+r 738 0 4 0 25 0\r
+r 738 0 5 0 2638 0\r
+r 738 0 7 0 729 0\r
+r 2787 0 2904 0 381 0\r
+r 2787 0 1 0 10 0 s Feature\r
+r 739 0 2 0 112 0\r
+r 739 0 3 0 737 0\r
+r 739 0 5 0 2635 0\r
+r 739 0 7 0 729 0\r
+r 2788 0 2904 0 578 0\r
+r 2788 0 1 0 10 0 s Has Line Cap\r
+r 740 0 2 0 8 0\r
+r 740 0 3 0 3027 0\r
+r 740 0 28 0 741 0\r
+r 740 0 5 0 2628 0\r
+r 740 0 7 0 729 0\r
+r 740 0 2911 0 757 0\r
+r 740 0 2911 0 755 0\r
+r 740 0 2911 0 753 0\r
+r 2789 0 2904 0 560 0\r
+r 2789 0 1 0 10 0 s Has Border Color\r
+r 741 0 104 0 748 0\r
+r 741 0 104 0 747 0\r
+r 741 0 129 0 750 0\r
+r 741 0 129 0 749 0\r
+r 741 0 2907 0 740 0\r
+r 741 0 4 0 25 0\r
+r 741 0 5 0 2630 0\r
+r 741 0 7 0 729 0\r
+r 2790 0 2904 0 650 0\r
+r 2790 0 1 0 10 0 s Color Placement\r
+r 742 0 2 0 94 0\r
+r 742 0 3 0 3028 0\r
+r 742 0 28 0 735 0\r
+r 742 0 5 0 2625 0\r
+r 742 0 7 0 729 0\r
+r 742 0 2911 0 752 0\r
+r 2791 0 2904 0 566 0\r
+r 2791 0 1 0 10 0 s Has Opacity\r
+r 743 0 2 0 103 0\r
+r 743 0 3 0 3029 0\r
+r 743 0 28 0 15 0\r
+r 743 0 5 0 2632 0\r
+r 743 0 7 0 729 0\r
+r 2792 0 2904 0 605 0\r
+r 2792 0 1 0 10 0 s Has Font Size\r
+r 744 0 2 0 103 0\r
+r 744 0 3 0 3030 0\r
+r 744 0 28 0 10 0\r
+r 744 0 5 0 2639 0\r
+r 744 0 7 0 729 0\r
+r 744 0 2911 0 751 0\r
+r 744 0 2911 0 747 0\r
+r 2793 0 2904 0 583 0\r
+r 2793 0 1 0 10 0 s Scaling\r
+r 745 0 104 0 746 0\r
+r 745 0 4 0 25 0\r
+r 745 0 5 0 2626 0\r
+r 745 0 7 0 729 0\r
+r 2794 0 2904 0 630 0\r
+r 2794 0 1 0 10 0 s Has Text\r
+r 746 0 1 0 106 0\r
+r 746 0 365 0 745 0\r
+r 746 0 38 0 736 0\r
+r 746 0 39 0 107 0\r
+r 2795 0 2904 0 549 0\r
+r 2795 0 1 0 10 0 s Shape\r
+r 747 0 1 0 106 0\r
+r 747 0 365 0 741 0\r
+r 747 0 38 0 744 0\r
+r 747 0 39 0 107 0\r
+r 2796 0 2904 0 572 0\r
+r 2796 0 1 0 10 0 s Has Dash Offset\r
+r 748 0 1 0 106 0\r
+r 748 0 365 0 741 0\r
+r 748 0 38 0 97 0\r
+r 748 0 39 0 107 0\r
+r 2797 0 2904 0 619 0\r
+r 2797 0 1 0 10 0 s Round Join\r
+r 749 0 2907 0 755 0\r
+r 749 0 4 0 741 0\r
+r 749 0 5 0 2637 0\r
+r 749 0 7 0 729 0\r
+r 2798 0 2904 0 622 0\r
+r 2798 0 1 0 10 0 s Butt Cap\r
+r 750 0 2907 0 757 0\r
+r 750 0 4 0 741 0\r
+r 750 0 5 0 2624 0\r
+r 750 0 7 0 729 0\r
+r 2799 0 2904 0 598 0\r
+r 2799 0 1 0 10 0 s Font\r
+r 751 0 1 0 106 0\r
+r 751 0 365 0 738 0\r
+r 751 0 38 0 744 0\r
+r 751 0 39 0 107 0\r
+r 2800 0 2904 0 584 0\r
+r 2800 0 1 0 10 0 s Nonscaling\r
+r 752 0 1 0 106 0\r
+r 752 0 365 0 738 0\r
+r 752 0 38 0 742 0\r
+r 752 0 39 0 107 0\r
+r 2801 0 2904 0 567 0\r
+r 2801 0 1 0 10 0 s Stroke\r
+r 753 0 1 0 106 0\r
+r 753 0 365 0 738 0\r
+r 753 0 38 0 740 0\r
+r 2802 0 2904 0 623 0\r
+r 2802 0 1 0 10 0 s Round Cap\r
+r 754 0 104 0 755 0\r
+r 754 0 4 0 738 0\r
+r 754 0 5 0 2627 0\r
+r 754 0 7 0 729 0\r
+r 2803 0 2904 0 554 0\r
+r 2803 0 1 0 10 0 s Has Line Segments\r
+r 755 0 1 0 106 0\r
+r 755 0 28 0 749 0\r
+r 755 0 365 0 754 0\r
+r 755 0 38 0 740 0\r
+r 2804 0 2904 0 601 0\r
+r 2804 0 1 0 10 0 s Has Font Family\r
+r 756 0 104 0 757 0\r
+r 756 0 4 0 738 0\r
+r 756 0 5 0 2629 0\r
+r 756 0 7 0 729 0\r
+r 2805 0 2904 0 620 0\r
+r 2805 0 1 0 10 0 s Bevel Join\r
+r 757 0 1 0 106 0\r
+r 757 0 28 0 750 0\r
+r 757 0 365 0 756 0\r
+r 757 0 38 0 740 0\r
+r 2806 0 2904 0 558 0\r
+r 2806 0 1 0 10 0 s Has Fill Color\r
+r 758 0 9 0 781 0\r
+r 758 0 9 0 779 0\r
+r 758 0 9 0 778 0\r
+r 758 0 9 0 776 0\r
+r 758 0 9 0 775 0\r
+r 758 0 9 0 774 0\r
+r 758 0 9 0 773 0\r
+r 758 0 9 0 771 0\r
+r 758 0 9 0 769 0\r
+r 758 0 9 0 767 0\r
+r 758 0 9 0 765 0\r
+r 758 0 9 0 764 0\r
+r 758 0 9 0 762 0\r
+r 758 0 9 0 760 0\r
+r 758 0 9 0 759 0\r
+r 758 0 1 0 57 0\r
+r 758 0 5 0 2194 0\r
+r 758 0 7 0 49 0\r
+r 2807 0 2904 0 603 0\r
+r 2807 0 1 0 10 0 s Has Font Style\r
+r 759 0 129 0 769 0\r
+r 759 0 129 0 765 0\r
+r 759 0 129 0 760 0\r
+r 759 0 2907 0 809 0\r
+r 759 0 2907 0 764 0\r
+r 759 0 4 0 25 0\r
+r 759 0 5 0 2158 0\r
+r 759 0 7 0 758 0\r
+r 2808 0 2904 0 624 0\r
+r 2808 0 1 0 10 0 s Square Cap\r
+r 760 0 104 0 763 0\r
+r 760 0 104 0 761 0\r
+r 760 0 4 0 759 0\r
+r 760 0 5 0 2202 0\r
+r 760 0 7 0 758 0\r
+r 2809 0 2904 0 631 0\r
+r 2809 0 1 0 10 0 s Alignment\r
+r 761 0 1 0 106 0\r
+r 761 0 365 0 760 0\r
+r 761 0 38 0 762 0\r
+r 761 0 39 0 107 0\r
+r 2810 0 2904 0 647 0\r
+r 2810 0 1 0 10 0 s Color Gradient\r
+r 762 0 2 0 110 0\r
+r 762 0 3 0 3031 0\r
+r 762 0 28 0 11 0\r
+r 762 0 5 0 2163 0\r
+r 762 0 2911 0 761 0\r
+r 762 0 7 0 758 0\r
+r 2811 0 2904 0 593 0\r
+r 2811 0 1 0 10 0 s Line End Style\r
+r 763 0 1 0 106 0\r
+r 763 0 365 0 760 0\r
+r 763 0 38 0 764 0\r
+r 763 0 39 0 107 0\r
+r 2812 0 2904 0 581 0\r
+r 2812 0 1 0 10 0 s Has Stroke Type\r
+r 764 0 2 0 110 0\r
+r 764 0 3 0 3032 0\r
+r 764 0 28 0 759 0\r
+r 764 0 5 0 2178 0\r
+r 764 0 2911 0 768 0\r
+r 764 0 2911 0 763 0\r
+r 764 0 7 0 758 0\r
+r 2813 0 2904 0 591 0\r
+r 2813 0 1 0 10 0 s Has Mid Arrow\r
+r 765 0 104 0 768 0\r
+r 765 0 104 0 766 0\r
+r 765 0 4 0 759 0\r
+r 765 0 5 0 2183 0\r
+r 765 0 7 0 758 0\r
+r 2814 0 2904 0 639 0\r
+r 2814 0 1 0 10 0 s Has Color\r
+r 766 0 1 0 106 0\r
+r 766 0 365 0 765 0\r
+r 766 0 38 0 767 0\r
+r 766 0 39 0 107 0\r
+r 2815 0 2904 0 655 0\r
+r 2815 0 1 0 10 0 s Default Stroke\r
+r 767 0 2 0 110 0\r
+r 767 0 3 0 3033 0\r
+r 767 0 28 0 11 0\r
+r 767 0 5 0 2188 0\r
+r 767 0 2911 0 766 0\r
+r 767 0 7 0 758 0\r
+r 2816 0 2904 0 582 0\r
+r 2816 0 1 0 10 0 s Stroke Type\r
+r 768 0 1 0 106 0\r
+r 768 0 365 0 765 0\r
+r 768 0 38 0 764 0\r
+r 768 0 39 0 107 0\r
+r 2817 0 2904 0 618 0\r
+r 2817 0 1 0 10 0 s Miter Join\r
+r 769 0 104 0 772 0\r
+r 769 0 104 0 770 0\r
+r 769 0 4 0 759 0\r
+r 769 0 5 0 2155 0\r
+r 769 0 7 0 758 0\r
+r 2818 0 2904 0 545 0\r
+r 2818 0 1 0 10 0 s Transform\r
+r 770 0 1 0 106 0\r
+r 770 0 365 0 769 0\r
+r 770 0 38 0 771 0\r
+r 770 0 39 0 107 0\r
+r 2819 0 2904 0 576 0\r
+r 2819 0 1 0 10 0 s Has Miter Limit\r
+r 771 0 2 0 110 0\r
+r 771 0 3 0 3034 0\r
+r 771 0 28 0 10 0\r
+r 771 0 5 0 2206 0\r
+r 771 0 2911 0 770 0\r
+r 771 0 7 0 758 0\r
+r 2820 0 2904 0 556 0\r
+r 2820 0 1 0 10 0 s Has Line Segment Types\r
+r 772 0 1 0 106 0\r
+r 772 0 365 0 769 0\r
+r 772 0 38 0 773 0\r
+r 772 0 39 0 225 0\r
+r 2821 0 2904 0 570 0\r
+r 2821 0 1 0 10 0 s Has Dash Array\r
+r 773 0 2 0 110 0\r
+r 773 0 3 0 3035 0\r
+r 773 0 28 0 775 0\r
+r 773 0 5 0 2204 0\r
+r 773 0 2911 0 772 0\r
+r 773 0 7 0 758 0\r
+r 2822 0 2904 0 590 0\r
+r 2822 0 1 0 10 0 s Has End Arrow\r
+r 774 0 4 0 226 0\r
+r 774 0 5 0 2203 0\r
+r 774 0 7 0 758 0\r
+r 2823 0 2904 0 564 0\r
+r 2823 0 1 0 10 0 s Has Stroke\r
+r 775 0 2907 0 773 0\r
+r 775 0 4 0 25 0\r
+r 775 0 5 0 2159 0\r
+r 775 0 7 0 758 0\r
+r 2824 0 2904 0 636 0\r
+r 2824 0 1 0 10 0 s Has Vertical Alignment\r
+r 776 0 104 0 777 0\r
+r 776 0 4 0 25 0\r
+r 776 0 5 0 2160 0\r
+r 776 0 7 0 758 0\r
+r 2825 0 2904 0 637 0\r
+r 2825 0 1 0 10 0 s Color\r
+r 777 0 1 0 106 0\r
+r 777 0 365 0 776 0\r
+r 777 0 38 0 778 0\r
+r 777 0 39 0 107 0\r
+r 2826 0 2904 0 635 0\r
+r 2826 0 1 0 10 0 s Has Horizontal Alignment\r
+r 778 0 2 0 110 0\r
+r 778 0 3 0 3036 0\r
+r 778 0 28 0 12 0\r
+r 778 0 5 0 2175 0\r
+r 778 0 2911 0 777 0\r
+r 778 0 7 0 758 0\r
+r 2827 0 2904 0 617 0\r
+r 2827 0 1 0 10 0 s Line Join\r
+r 779 0 104 0 780 0\r
+r 779 0 4 0 25 0\r
+r 779 0 5 0 2185 0\r
+r 779 0 7 0 758 0\r
+r 2828 0 2904 0 552 0\r
+r 2828 0 1 0 10 0 s Has Style\r
+r 780 0 1 0 106 0\r
+r 780 0 365 0 779 0\r
+r 780 0 38 0 781 0\r
+r 780 0 39 0 107 0\r
+r 2829 0 2904 0 628 0\r
+r 2829 0 1 0 10 0 s Has Radii\r
+r 781 0 2 0 110 0\r
+r 781 0 3 0 3037 0\r
+r 781 0 28 0 12 0\r
+r 781 0 5 0 2182 0\r
+r 781 0 2911 0 780 0\r
+r 781 0 7 0 758 0\r
+r 2830 0 2904 0 640 0\r
+r 2830 0 1 0 10 0 s Color Profile\r
+r 782 0 9 0 833 0\r
+r 782 0 9 0 832 0\r
+r 782 0 9 0 831 0\r
+r 782 0 9 0 830 0\r
+r 782 0 9 0 829 0\r
+r 782 0 9 0 828 0\r
+r 782 0 9 0 827 0\r
+r 782 0 9 0 826 0\r
+r 782 0 9 0 825 0\r
+r 782 0 9 0 824 0\r
+r 782 0 9 0 823 0\r
+r 782 0 9 0 822 0\r
+r 782 0 9 0 821 0\r
+r 782 0 9 0 820 0\r
+r 782 0 9 0 819 0\r
+r 782 0 9 0 818 0\r
+r 782 0 9 0 817 0\r
+r 782 0 9 0 816 0\r
+r 782 0 9 0 815 0\r
+r 782 0 9 0 812 0\r
+r 782 0 9 0 810 0\r
+r 782 0 9 0 809 0\r
+r 782 0 9 0 807 0\r
+r 782 0 9 0 805 0\r
+r 782 0 9 0 803 0\r
+r 782 0 9 0 802 0\r
+r 782 0 9 0 801 0\r
+r 782 0 9 0 800 0\r
+r 782 0 9 0 798 0\r
+r 782 0 9 0 796 0\r
+r 782 0 9 0 795 0\r
+r 782 0 9 0 791 0\r
+r 782 0 9 0 790 0\r
+r 782 0 9 0 788 0\r
+r 782 0 9 0 786 0\r
+r 782 0 9 0 784 0\r
+r 782 0 9 0 783 0\r
+r 782 0 1 0 57 0\r
+r 782 0 5 0 2165 0\r
+r 782 0 7 0 49 0\r
+r 2831 0 2904 0 585 0\r
+r 2831 0 1 0 10 0 s Line End\r
+r 783 0 129 0 810 0\r
+r 783 0 129 0 803 0\r
+r 783 0 129 0 802 0\r
+r 783 0 129 0 801 0\r
+r 783 0 129 0 798 0\r
+r 783 0 129 0 796 0\r
+r 783 0 129 0 791 0\r
+r 783 0 129 0 784 0\r
+r 783 0 2907 0 800 0\r
+r 783 0 2907 0 795 0\r
+r 783 0 59 0 833 0\r
+r 783 0 4 0 52 0\r
+r 783 0 5 0 2190 0\r
+r 783 0 7 0 782 0\r
+r 2832 0 2904 0 629 0\r
+r 2832 0 1 0 10 0 s Has Path Data\r
+r 784 0 104 0 789 0\r
+r 784 0 104 0 787 0\r
+r 784 0 104 0 785 0\r
+r 784 0 59 0 829 0\r
+r 784 0 4 0 783 0\r
+r 784 0 5 0 2187 0\r
+r 784 0 7 0 782 0\r
+r 2833 0 2904 0 606 0\r
+r 2833 0 1 0 10 0 s Has Font\r
+r 785 0 1 0 106 0\r
+r 785 0 365 0 784 0\r
+r 785 0 38 0 786 0\r
+r 2834 0 2904 0 574 0\r
+r 2834 0 1 0 10 0 s Has Stroke Width\r
+r 786 0 2 0 94 0\r
+r 786 0 3 0 3038 0\r
+r 786 0 28 0 11 0\r
+r 786 0 5 0 2197 0\r
+r 786 0 2911 0 792 0\r
+r 786 0 2911 0 785 0\r
+r 786 0 7 0 782 0\r
+r 2835 0 2904 0 592 0\r
+r 2835 0 1 0 10 0 s Has Begin Arrow\r
+r 787 0 1 0 106 0\r
+r 787 0 365 0 784 0\r
+r 787 0 38 0 788 0\r
+r 2836 0 2904 0 634 0\r
+r 2836 0 1 0 10 0 s Trailing\r
+r 788 0 2 0 94 0\r
+r 788 0 3 0 3039 0\r
+r 788 0 28 0 11 0\r
+r 788 0 5 0 2166 0\r
+r 788 0 2911 0 793 0\r
+r 788 0 2911 0 787 0\r
+r 788 0 7 0 782 0\r
+r 2837 0 2904 0 621 0\r
+r 2837 0 1 0 10 0 s Line Cap\r
+r 789 0 1 0 106 0\r
+r 789 0 365 0 784 0\r
+r 789 0 38 0 790 0\r
+r 2838 0 2904 0 642 0\r
+r 2838 0 1 0 10 0 s Colors\r
+r 790 0 2 0 94 0\r
+r 790 0 3 0 3040 0\r
+r 790 0 28 0 10 0\r
+r 790 0 5 0 2198 0\r
+r 790 0 2911 0 789 0\r
+r 790 0 7 0 782 0\r
+r 2839 0 2904 0 587 0\r
+r 2839 0 1 0 10 0 s Has Line End Style\r
+r 791 0 104 0 794 0\r
+r 791 0 104 0 793 0\r
+r 791 0 104 0 792 0\r
+r 791 0 4 0 783 0\r
+r 791 0 5 0 2162 0\r
+r 791 0 7 0 782 0\r
+r 2840 0 2904 0 607 0\r
+r 2840 0 1 0 10 0 s Font Style\r
+r 792 0 1 0 106 0\r
+r 792 0 365 0 791 0\r
+r 792 0 38 0 786 0\r
+r 2841 0 2904 0 533 0\r
+r 2841 0 1 0 10 0 s G2 DNamespace\r
+r 793 0 1 0 106 0\r
+r 793 0 365 0 791 0\r
+r 793 0 38 0 788 0\r
+r 2842 0 2904 0 548 0\r
+r 2842 0 1 0 10 0 s Has Transform\r
+r 794 0 1 0 106 0\r
+r 794 0 365 0 791 0\r
+r 794 0 38 0 795 0\r
+r 794 0 39 0 107 0\r
+r 2843 0 2904 0 589 0\r
+r 2843 0 1 0 10 0 s Has Size\r
+r 795 0 2 0 110 0\r
+r 795 0 3 0 3041 0\r
+r 795 0 28 0 783 0\r
+r 795 0 5 0 2174 0\r
+r 795 0 2911 0 813 0\r
+r 795 0 2911 0 797 0\r
+r 795 0 2911 0 794 0\r
+r 795 0 7 0 782 0\r
+r 2844 0 2904 0 654 0\r
+r 2844 0 1 0 10 0 s Has Color Gradient\r
+r 796 0 104 0 797 0\r
+r 796 0 4 0 783 0\r
+r 796 0 5 0 2170 0\r
+r 796 0 7 0 782 0\r
+r 2845 0 2904 0 580 0\r
+r 2845 0 1 0 10 0 s Has Line Join\r
+r 797 0 1 0 106 0\r
+r 797 0 365 0 796 0\r
+r 797 0 38 0 795 0\r
+r 797 0 39 0 107 0\r
+r 2846 0 2904 0 561 0\r
+r 2846 0 1 0 10 0 s Style\r
+r 798 0 104 0 799 0\r
+r 798 0 4 0 783 0\r
+r 798 0 4 0 226 0\r
+r 798 0 5 0 2157 0\r
+r 798 0 7 0 782 0\r
+r 2847 0 2904 0 653 0\r
+r 2847 0 1 0 10 0 s Has Gradient Position\r
+r 799 0 1 0 106 0\r
+r 799 0 365 0 798 0\r
+r 799 0 38 0 800 0\r
+r 799 0 39 0 107 0\r
+r 2848 0 2904 0 632 0\r
+r 2848 0 1 0 10 0 s Leading\r
+r 800 0 2 0 110 0\r
+r 800 0 3 0 3042 0\r
+r 800 0 28 0 783 0\r
+r 800 0 5 0 2171 0\r
+r 800 0 2911 0 799 0\r
+r 800 0 7 0 782 0\r
+r 2849 0 2904 0 649 0\r
+r 2849 0 1 0 10 0 s Has Color Placement\r
+r 801 0 4 0 783 0\r
+r 801 0 4 0 226 0\r
+r 801 0 5 0 2191 0\r
+r 801 0 7 0 782 0\r
+r 2850 0 2904 0 625 0\r
+r 2850 0 1 0 10 0 s Has Paint\r
+r 802 0 4 0 783 0\r
+r 802 0 4 0 226 0\r
+r 802 0 5 0 2173 0\r
+r 802 0 7 0 782 0\r
+r 2851 0 2904 0 633 0\r
+r 2851 0 1 0 10 0 s Center\r
+r 803 0 104 0 808 0\r
+r 803 0 104 0 806 0\r
+r 803 0 104 0 804 0\r
+r 803 0 59 0 816 0\r
+r 803 0 4 0 783 0\r
+r 803 0 5 0 2189 0\r
+r 803 0 7 0 782 0\r
+r 2852 0 2904 0 1086 0\r
+r 2852 0 1 0 10 0 s Has Node Id\r
+r 804 0 1 0 106 0\r
+r 804 0 365 0 803 0\r
+r 804 0 38 0 805 0\r
+r 2853 0 2904 0 1037 0\r
+r 2853 0 1 0 10 0 s Diagram Connection To Connection\r
+r 805 0 2 0 94 0\r
+r 805 0 3 0 3043 0\r
+r 805 0 28 0 12 0\r
+r 805 0 5 0 2184 0\r
+r 805 0 2911 0 804 0\r
+r 805 0 7 0 782 0\r
+r 2854 0 2904 0 1038 0\r
+r 2854 0 1 0 10 0 s Connection To Diagram Connection\r
+r 806 0 1 0 106 0\r
+r 806 0 365 0 803 0\r
+r 806 0 38 0 807 0\r
+r 2855 0 2904 0 1059 0\r
+r 2855 0 1 0 10 0 s Diagram Operations\r
+r 807 0 2 0 94 0\r
+r 807 0 3 0 3044 0\r
+r 807 0 28 0 12 0\r
+r 807 0 5 0 2196 0\r
+r 807 0 2911 0 806 0\r
+r 807 0 7 0 782 0\r
+r 2856 0 2904 0 1048 0\r
+r 2856 0 1 0 10 0 s Connection Direction To Flag Type\r
+r 808 0 1 0 106 0\r
+r 808 0 365 0 803 0\r
+r 808 0 38 0 809 0\r
+r 2857 0 2904 0 1030 0\r
+r 2857 0 1 0 10 0 s Maps\r
+r 809 0 2 0 110 0\r
+r 809 0 3 0 3045 0\r
+r 809 0 28 0 759 0\r
+r 809 0 5 0 2181 0\r
+r 809 0 2911 0 808 0\r
+r 809 0 7 0 782 0\r
+r 2858 0 2904 0 1032 0\r
+r 2858 0 1 0 10 0 s Component Type To Symbol\r
+r 810 0 104 0 811 0\r
+r 810 0 59 0 832 0\r
+r 810 0 4 0 783 0\r
+r 810 0 5 0 2200 0\r
+r 810 0 7 0 782 0\r
+r 2859 0 2904 0 1056 0\r
+r 2859 0 1 0 10 0 s Has Modeling Operations\r
+r 811 0 1 0 106 0\r
+r 811 0 365 0 810 0\r
+r 811 0 38 0 27 0\r
+r 2860 0 2904 0 1028 0\r
+r 2860 0 1 0 10 0 s Has Counterpart\r
+r 812 0 104 0 814 0\r
+r 812 0 104 0 813 0\r
+r 812 0 4 0 25 0\r
+r 812 0 5 0 2164 0\r
+r 812 0 7 0 782 0\r
+r 2861 0 2904 0 1040 0\r
+r 2861 0 1 0 10 0 s Connection Relation To Diagram Connection Relation\r
+r 813 0 1 0 106 0\r
+r 813 0 365 0 812 0\r
+r 813 0 38 0 795 0\r
+r 813 0 39 0 107 0\r
+r 2862 0 2904 0 1066 0\r
+r 2862 0 1 0 10 0 s Instantiate\r
+r 814 0 1 0 106 0\r
+r 814 0 365 0 812 0\r
+r 814 0 38 0 815 0\r
+r 814 0 39 0 225 0\r
+r 2863 0 2904 0 1031 0\r
+r 2863 0 1 0 10 0 s Symbol To Component Type\r
+r 815 0 2 0 110 0\r
+r 815 0 3 0 3046 0\r
+r 815 0 28 0 0 0\r
+r 815 0 5 0 2167 0\r
+r 815 0 2911 0 814 0\r
+r 815 0 7 0 782 0\r
+r 2864 0 2904 0 1075 0\r
+r 2864 0 1 0 10 0 s Navigate To Target\r
+r 816 0 129 0 826 0\r
+r 816 0 129 0 817 0\r
+r 816 0 1 0 803 0\r
+r 816 0 4 0 24 0\r
+r 816 0 5 0 2205 0\r
+r 816 0 7 0 782 0\r
+r 2865 0 2904 0 1027 0\r
+r 2865 0 1 0 10 0 s Instantiable\r
+r 817 0 129 0 823 0\r
+r 817 0 129 0 818 0\r
+r 817 0 4 0 816 0\r
+r 817 0 5 0 2195 0\r
+r 817 0 7 0 782 0\r
+r 2866 0 2904 0 1020 0\r
+r 2866 0 1 0 10 0 s Modeling Project\r
+r 818 0 129 0 822 0\r
+r 818 0 129 0 821 0\r
+r 818 0 129 0 820 0\r
+r 818 0 129 0 819 0\r
+r 818 0 4 0 817 0\r
+r 818 0 5 0 2169 0\r
+r 818 0 7 0 782 0\r
+r 2867 0 2904 0 1071 0\r
+r 2867 0 1 0 10 0 s New Component Type\r
+r 819 0 4 0 818 0\r
+r 819 0 5 0 2207 0\r
+r 819 0 7 0 782 0\r
+r 2868 0 2904 0 1057 0\r
+r 2868 0 1 0 10 0 s Has Diagram Operations\r
+r 820 0 4 0 818 0\r
+r 820 0 5 0 2154 0\r
+r 820 0 7 0 782 0\r
+r 2869 0 2904 0 1050 0\r
+r 2869 0 1 0 10 0 s Test Terminal\r
+r 821 0 4 0 818 0\r
+r 821 0 5 0 2156 0\r
+r 821 0 7 0 782 0\r
+r 2870 0 2904 0 1042 0\r
+r 2870 0 1 0 10 0 s Parameter To Flag\r
+r 822 0 4 0 818 0\r
+r 822 0 5 0 2161 0\r
+r 822 0 7 0 782 0\r
+r 2871 0 2904 0 1061 0\r
+r 2871 0 1 0 10 0 s New Component\r
+r 823 0 129 0 825 0\r
+r 823 0 129 0 824 0\r
+r 823 0 4 0 817 0\r
+r 823 0 5 0 2176 0\r
+r 823 0 7 0 782 0\r
+r 2872 0 2904 0 1069 0\r
+r 2872 0 1 0 10 0 s New Literal Variable\r
+r 824 0 4 0 823 0\r
+r 824 0 5 0 2172 0\r
+r 824 0 7 0 782 0\r
+r 2873 0 2904 0 1049 0\r
+r 2873 0 1 0 10 0 s Diagram To Composite Mapping\r
+r 825 0 4 0 823 0\r
+r 825 0 5 0 2177 0\r
+r 825 0 7 0 782 0\r
+r 2874 0 2904 0 1018 0\r
+r 2874 0 1 0 10 0 s Modeling Namespace\r
+r 826 0 129 0 828 0\r
+r 826 0 129 0 827 0\r
+r 826 0 4 0 816 0\r
+r 826 0 5 0 2201 0\r
+r 826 0 7 0 782 0\r
+r 2875 0 2904 0 1029 0\r
+r 2875 0 1 0 10 0 s Mapped\r
+r 827 0 4 0 826 0\r
+r 827 0 5 0 2193 0\r
+r 827 0 7 0 782 0\r
+r 2876 0 2904 0 1039 0\r
+r 2876 0 1 0 10 0 s Diagram Connection Relation To Connection Relation\r
+r 828 0 4 0 826 0\r
+r 828 0 5 0 2179 0\r
+r 828 0 7 0 782 0\r
+r 2877 0 2904 0 1045 0\r
+r 2877 0 1 0 10 0 s Connection Type To Connection Relation\r
+r 829 0 129 0 831 0\r
+r 829 0 129 0 830 0\r
+r 829 0 1 0 784 0\r
+r 829 0 4 0 24 0\r
+r 829 0 5 0 2168 0\r
+r 829 0 7 0 782 0\r
+r 2878 0 2904 0 1078 0\r
+r 2878 0 1 0 10 0 s Subscription\r
+r 830 0 4 0 829 0\r
+r 830 0 5 0 2192 0\r
+r 830 0 7 0 782 0\r
+r 2879 0 2904 0 1047 0\r
+r 2879 0 1 0 10 0 s Flag Type To Connection Direction\r
+r 831 0 4 0 829 0\r
+r 831 0 5 0 2180 0\r
+r 831 0 7 0 782 0\r
+r 2880 0 2904 0 1043 0\r
+r 2880 0 1 0 10 0 s Connection Type To Component Type\r
+r 832 0 1 0 810 0\r
+r 832 0 5 0 2186 0\r
+r 832 0 7 0 782 0\r
+r 2881 0 2904 0 1084 0\r
+r 2881 0 1 0 10 0 s Subscription Item\r
+r 833 0 1 0 783 0\r
+r 833 0 5 0 2199 0\r
+r 833 0 7 0 782 0\r
+r 2882 0 2904 0 1077 0\r
+r 2882 0 1 0 10 0 s Disconnect Flag\r
+r 834 0 9 0 882 0\r
+r 834 0 9 0 879 0\r
+r 834 0 9 0 874 0\r
+r 834 0 9 0 864 0\r
+r 834 0 9 0 855 0\r
+r 834 0 9 0 845 0\r
+r 834 0 1 0 48 0\r
+r 834 0 5 0 835 0\r
+r 834 0 7 0 836 0\r
+r 2883 0 2904 0 1081 0\r
+r 2883 0 1 0 10 0 s Is Enabled\r
+r 835 0 2904 0 834 0\r
+r 835 0 1 0 10 0 s Types\r
+r 2884 0 2904 0 1088 0\r
+r 2884 0 1 0 10 0 s Has Deadband\r
+r 836 0 97 0 841 0\r
+r 836 0 1 0 69 0\r
+r 836 0 9 0 837 0\r
+r 836 0 9 0 834 0\r
+r 836 0 93 0 842 0\r
+r 836 0 5 0 839 0\r
+r 836 0 6 0 840 0\r
+r 836 0 2919 0 843 0\r
+r 836 0 7 0 89 0\r
+r 836 0 7 0 77 0\r
+r 2885 0 2904 0 1064 0\r
+r 2885 0 1 0 10 0 s Encapsulate\r
+r 837 0 9 0 885 0\r
+r 837 0 9 0 872 0\r
+r 837 0 9 0 871 0\r
+r 837 0 9 0 862 0\r
+r 837 0 9 0 854 0\r
+r 837 0 9 0 852 0\r
+r 837 0 9 0 851 0\r
+r 837 0 9 0 850 0\r
+r 837 0 9 0 849 0\r
+r 837 0 9 0 848 0\r
+r 837 0 9 0 847 0\r
+r 837 0 9 0 846 0\r
+r 837 0 1 0 55 0\r
+r 837 0 5 0 838 0\r
+r 837 0 7 0 836 0\r
+r 2886 0 2904 0 1035 0\r
+r 2886 0 1 0 10 0 s Element To Component\r
+r 838 0 2904 0 837 0\r
+r 838 0 1 0 10 0 s Relations\r
+r 2887 0 2904 0 1046 0\r
+r 2887 0 1 0 10 0 s Connection Relation To Connection Type\r
+r 839 0 2904 0 836 0\r
+r 839 0 1 0 10 0 s Image-1.0\r
+r 2888 0 2904 0 1068 0\r
+r 2888 0 1 0 10 0 s New Connection Point\r
+r 840 0 2905 0 836 0\r
+r 840 0 1 0 88 0 s http://www.simantics.org/Image/1.0\r
+r 2889 0 2904 0 1041 0\r
+r 2889 0 1 0 10 0 s Flag To Parameter\r
+r 841 0 1 0 99 0 s 1.0\r
+r 841 0 2926 0 836 0\r
+r 2890 0 2904 0 1058 0\r
+r 2890 0 1 0 10 0 s Modeling Operations\r
+r 842 0 1 0 10 0 s org.simantics.diagram.stubs.ImageResource\r
+r 842 0 2925 0 836 0\r
+r 2891 0 2904 0 1022 0\r
+r 2891 0 1 0 10 0 s Structural Model Manager\r
+r 843 0 65 0 836 0\r
+r 843 0 1 0 62 0\r
+r 843 0 5 0 2221 0\r
+r 843 0 6 0 844 0\r
+r 843 0 7 0 85 0\r
+r 2892 0 2904 0 1026 0\r
+r 2892 0 1 0 10 0 s Encapsulable\r
+r 844 0 2905 0 843 0\r
+r 844 0 1 0 88 0 s http://www.simantics.org/Image/1.0\r
+r 2893 0 2904 0 1054 0\r
+r 2893 0 1 0 10 0 s Webmon Variable\r
+r 845 0 129 0 874 0\r
+r 845 0 129 0 864 0\r
+r 845 0 129 0 855 0\r
+r 845 0 2906 0 884 0\r
+r 845 0 2906 0 881 0\r
+r 845 0 2907 0 885 0\r
+r 845 0 2907 0 846 0\r
+r 845 0 4 0 25 0\r
+r 845 0 5 0 2219 0\r
+r 845 0 7 0 834 0\r
+r 2894 0 2904 0 1034 0\r
+r 2894 0 1 0 10 0 s Composite To Diagram\r
+r 846 0 2 0 103 0\r
+r 846 0 3 0 3047 0\r
+r 846 0 28 0 845 0\r
+r 846 0 5 0 2215 0\r
+r 846 0 7 0 837 0\r
+r 2895 0 2904 0 1055 0\r
+r 2895 0 1 0 10 0 s Operations\r
+r 847 0 2 0 94 0\r
+r 847 0 3 0 3048 0\r
+r 847 0 28 0 11 0\r
+r 847 0 5 0 2209 0\r
+r 847 0 7 0 837 0\r
+r 847 0 2911 0 867 0\r
+r 847 0 2911 0 856 0\r
+r 2896 0 2904 0 1021 0\r
+r 2896 0 1 0 10 0 s Headless Diagram Viewer\r
+r 848 0 2 0 94 0\r
+r 848 0 3 0 3049 0\r
+r 848 0 28 0 11 0\r
+r 848 0 5 0 2213 0\r
+r 848 0 7 0 837 0\r
+r 848 0 2911 0 868 0\r
+r 848 0 2911 0 857 0\r
+r 2897 0 2904 0 1025 0\r
+r 2897 0 1 0 10 0 s Predicates\r
+r 849 0 2 0 94 0\r
+r 849 0 3 0 3050 0\r
+r 849 0 28 0 12 0\r
+r 849 0 5 0 2217 0\r
+r 849 0 7 0 837 0\r
+r 849 0 2911 0 877 0\r
+r 849 0 2911 0 869 0\r
+r 849 0 2911 0 860 0\r
+r 2898 0 2904 0 1072 0\r
+r 2898 0 1 0 10 0 s New Model\r
+r 850 0 2 0 94 0\r
+r 850 0 3 0 3051 0\r
+r 850 0 28 0 12 0\r
+r 850 0 5 0 2218 0\r
+r 850 0 7 0 837 0\r
+r 850 0 2911 0 878 0\r
+r 850 0 2911 0 870 0\r
+r 850 0 2911 0 861 0\r
+r 2899 0 2904 0 1044 0\r
+r 2899 0 1 0 10 0 s Component Type To Connection Type\r
+r 851 0 2 0 94 0\r
+r 851 0 3 0 3052 0\r
+r 851 0 60 0 854 0\r
+r 851 0 60 0 852 0\r
+r 851 0 28 0 22 0\r
+r 851 0 5 0 2211 0\r
+r 851 0 7 0 837 0\r
+r 2900 0 2904 0 1033 0\r
+r 2900 0 1 0 10 0 s Diagram To Composite\r
+r 852 0 2 0 851 0\r
+r 852 0 3 0 3053 0\r
+r 852 0 5 0 853 0\r
+r 852 0 7 0 837 0\r
+r 852 0 2911 0 858 0\r
+r 2901 0 2904 0 1036 0\r
+r 2901 0 1 0 10 0 s Component To Element\r
+r 853 0 2904 0 852 0\r
+r 853 0 1 0 10 0 s Has RGB Data\r
+r 2902 0 2904 0 893 0\r
+r 2902 0 1 0 10 0 s Ontology Development Environment Namespace\r
+r 854 0 2 0 851 0\r
+r 854 0 3 0 3054 0\r
+r 854 0 5 0 2208 0\r
+r 854 0 7 0 837 0\r
+r 854 0 2911 0 859 0\r
+r 2903 0 2904 0 891 0\r
+r 2903 0 1 0 10 0 s Ontology Development Project\r
+r 855 0 104 0 861 0\r
+r 855 0 104 0 860 0\r
+r 855 0 104 0 859 0\r
+r 855 0 104 0 858 0\r
+r 855 0 104 0 857 0\r
+r 855 0 104 0 856 0\r
+r 855 0 4 0 845 0\r
+r 855 0 5 0 2222 0\r
+r 855 0 7 0 834 0\r
+r 2904 0 2 0 184 0\r
+r 2904 0 3 0 5 0\r
+r 856 0 1 0 106 0\r
+r 856 0 365 0 855 0\r
+r 856 0 38 0 847 0\r
+r 856 0 39 0 107 0\r
+r 2905 0 2 0 184 0\r
+r 2905 0 3 0 6 0\r
+r 857 0 1 0 106 0\r
+r 857 0 365 0 855 0\r
+r 857 0 38 0 848 0\r
+r 857 0 39 0 107 0\r
+r 2906 0 2 0 2929 0\r
+r 2906 0 2 0 112 0\r
+r 2906 0 3 0 27 0\r
+r 858 0 1 0 106 0\r
+r 858 0 365 0 855 0\r
+r 858 0 38 0 852 0\r
+r 858 0 39 0 107 0\r
+r 2907 0 2 0 2929 0\r
+r 2907 0 2 0 112 0\r
+r 2907 0 3 0 28 0\r
+r 859 0 1 0 106 0\r
+r 859 0 365 0 855 0\r
+r 859 0 38 0 854 0\r
+r 859 0 39 0 225 0\r
+r 2908 0 2 0 2929 0\r
+r 2908 0 2 0 112 0\r
+r 2908 0 3 0 29 0\r
+r 860 0 1 0 106 0\r
+r 860 0 365 0 855 0\r
+r 860 0 38 0 849 0\r
+r 860 0 39 0 225 0\r
+r 2909 0 2 0 112 0\r
+r 2909 0 3 0 30 0\r
+r 861 0 1 0 106 0\r
+r 861 0 365 0 855 0\r
+r 861 0 38 0 850 0\r
+r 861 0 39 0 225 0\r
+r 2910 0 2 0 111 0\r
+r 2910 0 3 0 31 0\r
+r 862 0 2 0 110 0\r
+r 862 0 3 0 3055 0\r
+r 862 0 28 0 10 0\r
+r 862 0 5 0 863 0\r
+r 862 0 7 0 837 0\r
+r 862 0 2911 0 866 0\r
+r 2911 0 2 0 111 0\r
+r 2911 0 3 0 38 0\r
+r 863 0 2904 0 862 0\r
+r 863 0 1 0 10 0 s Has SVG Document\r
+r 2912 0 2 0 184 0\r
+r 2912 0 3 0 39 0\r
+r 864 0 104 0 870 0\r
+r 864 0 104 0 869 0\r
+r 864 0 104 0 868 0\r
+r 864 0 104 0 867 0\r
+r 864 0 104 0 866 0\r
+r 864 0 4 0 845 0\r
+r 864 0 5 0 865 0\r
+r 864 0 7 0 834 0\r
+r 2913 0 2 0 112 0\r
+r 2913 0 3 0 40 0\r
+r 865 0 2904 0 864 0\r
+r 865 0 1 0 10 0 s SVG Image\r
+r 2914 0 2 0 112 0\r
+r 2914 0 3 0 41 0\r
+r 866 0 1 0 106 0\r
+r 866 0 365 0 864 0\r
+r 866 0 38 0 862 0\r
+r 866 0 39 0 107 0\r
+r 2915 0 2 0 111 0\r
+r 2915 0 3 0 43 0\r
+r 867 0 1 0 106 0\r
+r 867 0 365 0 864 0\r
+r 867 0 38 0 847 0\r
+r 867 0 39 0 225 0\r
+r 2916 0 2 0 184 0\r
+r 2916 0 3 0 44 0\r
+r 868 0 1 0 106 0\r
+r 868 0 365 0 864 0\r
+r 868 0 38 0 848 0\r
+r 868 0 39 0 225 0\r
+r 2917 0 2 0 184 0\r
+r 2917 0 3 0 45 0\r
+r 869 0 1 0 106 0\r
+r 869 0 365 0 864 0\r
+r 869 0 38 0 849 0\r
+r 869 0 39 0 225 0\r
+r 2918 0 2 0 184 0\r
+r 2918 0 3 0 61 0\r
+r 870 0 1 0 106 0\r
+r 870 0 365 0 864 0\r
+r 870 0 38 0 850 0\r
+r 870 0 39 0 225 0\r
+r 2919 0 2 0 112 0\r
+r 2919 0 3 0 65 0\r
+r 871 0 2 0 94 0\r
+r 871 0 3 0 3056 0\r
+r 871 0 28 0 11 0\r
+r 871 0 5 0 2210 0\r
+r 871 0 7 0 837 0\r
+r 871 0 2911 0 875 0\r
+r 2920 0 2 0 111 0\r
+r 2920 0 3 0 70 0\r
+r 872 0 2 0 94 0\r
+r 872 0 3 0 3057 0\r
+r 872 0 28 0 11 0\r
+r 872 0 5 0 2212 0\r
+r 872 0 78 0 873 0\r
+r 872 0 7 0 837 0\r
+r 872 0 2911 0 876 0\r
+r 2921 0 2 0 111 0\r
+r 2921 0 3 0 71 0\r
+r 873 0 1 0 10 0 s An index from 0..63 to describe the 8x8 2D bit pattern\r
+r 873 0 2923 0 872 0\r
+r 2922 0 2 0 111 0\r
+r 2922 0 3 0 72 0\r
+r 874 0 104 0 878 0\r
+r 874 0 104 0 877 0\r
+r 874 0 104 0 876 0\r
+r 874 0 104 0 875 0\r
+r 874 0 4 0 845 0\r
+r 874 0 5 0 2220 0\r
+r 874 0 7 0 834 0\r
+r 2923 0 2 0 184 0\r
+r 2923 0 3 0 78 0\r
+r 875 0 1 0 106 0\r
+r 875 0 365 0 874 0\r
+r 875 0 38 0 871 0\r
+r 875 0 39 0 107 0\r
+r 2924 0 2 0 184 0\r
+r 2924 0 3 0 80 0\r
+r 876 0 1 0 106 0\r
+r 876 0 365 0 874 0\r
+r 876 0 38 0 872 0\r
+r 876 0 39 0 107 0\r
+r 2925 0 2 0 184 0\r
+r 2925 0 3 0 93 0\r
+r 877 0 1 0 106 0\r
+r 877 0 365 0 874 0\r
+r 877 0 38 0 849 0\r
+r 877 0 39 0 107 0\r
+r 2926 0 2 0 184 0\r
+r 2926 0 3 0 97 0\r
+r 878 0 1 0 106 0\r
+r 878 0 365 0 874 0\r
+r 878 0 38 0 850 0\r
+r 878 0 39 0 107 0\r
+r 2927 0 2 0 184 0\r
+r 2927 0 3 0 101 0\r
+r 879 0 2906 0 881 0\r
+r 879 0 27 0 880 0\r
+r 879 0 4 0 57 0\r
+r 879 0 5 0 2214 0\r
+r 879 0 7 0 834 0\r
+r 2928 0 2 0 8 0\r
+r 2928 0 3 0 115 0\r
+r 2928 0 60 0 2929 0\r
+r 880 0 40 0 881 0\r
+r 880 0 1 0 37 0\r
+r 880 0 2906 0 879 0\r
+r 880 0 38 0 9 0\r
+r 2929 0 2 0 2928 0\r
+r 2929 0 2 0 111 0\r
+r 2929 0 3 0 116 0\r
+r 2929 0 60 0 2934 0\r
+r 2929 0 60 0 2908 0\r
+r 2929 0 60 0 2907 0\r
+r 2929 0 60 0 2906 0\r
+r 2929 0 60 0 143 0\r
+r 2929 0 60 0 141 0\r
+r 2929 0 60 0 139 0\r
+r 2929 0 60 0 132 0\r
+r 881 0 2913 0 880 0\r
+r 881 0 1 0 33 0\r
+r 881 0 27 0 879 0\r
+r 881 0 27 0 845 0\r
+r 2930 0 2 0 184 0\r
+r 2930 0 3 0 126 0\r
+r 882 0 2906 0 884 0\r
+r 882 0 27 0 883 0\r
+r 882 0 4 0 57 0\r
+r 882 0 5 0 2223 0\r
+r 882 0 7 0 834 0\r
+r 2931 0 2 0 112 0\r
+r 2931 0 3 0 127 0\r
+r 883 0 40 0 884 0\r
+r 883 0 1 0 37 0\r
+r 883 0 2906 0 882 0\r
+r 883 0 38 0 9 0\r
+r 2932 0 2 0 184 0\r
+r 2932 0 3 0 158 0\r
+r 884 0 2913 0 883 0\r
+r 884 0 1 0 33 0\r
+r 884 0 27 0 882 0\r
+r 884 0 27 0 845 0\r
+r 2933 0 2 0 184 0\r
+r 2933 0 3 0 159 0\r
+r 885 0 2 0 103 0\r
+r 885 0 3 0 3058 0\r
+r 885 0 28 0 845 0\r
+r 885 0 5 0 2216 0\r
+r 885 0 7 0 837 0\r
+r 2934 0 2 0 2929 0\r
+r 2934 0 2 0 184 0\r
+r 2934 0 3 0 185 0\r
+r 886 0 9 0 891 0\r
+r 886 0 97 0 889 0\r
+r 886 0 1 0 69 0\r
+r 886 0 93 0 890 0\r
+r 886 0 5 0 887 0\r
+r 886 0 6 0 888 0\r
+r 886 0 2919 0 893 0\r
+r 886 0 7 0 89 0\r
+r 886 0 7 0 77 0\r
+r 2935 0 2 0 184 0\r
+r 2935 0 3 0 192 0\r
+r 887 0 2904 0 886 0\r
+r 887 0 1 0 10 0 s ODE-1.0\r
+r 2936 0 2 0 184 0\r
+r 2936 0 3 0 195 0\r
+r 888 0 2905 0 886 0\r
+r 888 0 1 0 88 0 s http://www.simantics.org/Ontology/ODE/1.0\r
+r 2937 0 2 0 184 0\r
+r 2937 0 3 0 202 0\r
+r 889 0 1 0 99 0 s 1.0\r
+r 889 0 2926 0 886 0\r
+r 2938 0 2 0 184 0\r
+r 2938 0 3 0 204 0\r
+r 890 0 1 0 10 0 s org.simantics.db.Builtins\r
+r 890 0 2925 0 886 0\r
+r 2939 0 2 0 112 0\r
+r 2939 0 3 0 207 0\r
+r 891 0 2968 0 77 0\r
+r 891 0 1 0 381 0\r
+r 891 0 5 0 2903 0\r
+r 891 0 78 0 892 0\r
+r 891 0 7 0 886 0\r
+r 891 0 7 0 374 0\r
+r 2940 0 2 0 112 0\r
+r 2940 0 3 0 212 0\r
+r 892 0 1 0 10 0 s For developing your own data models and constructing your own user interfaces.\r
+r 892 0 2923 0 891 0\r
+r 2941 0 2 0 112 0\r
+r 2941 0 3 0 213 0\r
+r 893 0 65 0 886 0\r
+r 893 0 1 0 62 0\r
+r 893 0 5 0 2902 0\r
+r 893 0 6 0 894 0\r
+r 893 0 7 0 85 0\r
+r 2942 0 2 0 112 0\r
+r 2942 0 3 0 216 0\r
+r 894 0 2905 0 893 0\r
+r 894 0 1 0 88 0 s http://www.simantics.org/Ontology/ODE/1.0\r
+r 2943 0 2 0 111 0\r
+r 2943 0 3 0 219 0\r
+r 895 0 9 0 1008 0\r
+r 895 0 9 0 1007 0\r
+r 895 0 9 0 1006 0\r
+r 895 0 9 0 1005 0\r
+r 895 0 9 0 1004 0\r
+r 895 0 9 0 999 0\r
+r 895 0 9 0 997 0\r
+r 895 0 9 0 996 0\r
+r 895 0 9 0 995 0\r
+r 895 0 9 0 994 0\r
+r 895 0 9 0 993 0\r
+r 895 0 9 0 992 0\r
+r 895 0 9 0 991 0\r
+r 895 0 9 0 989 0\r
+r 895 0 9 0 980 0\r
+r 895 0 9 0 979 0\r
+r 895 0 9 0 978 0\r
+r 895 0 9 0 977 0\r
+r 895 0 9 0 976 0\r
+r 895 0 9 0 975 0\r
+r 895 0 9 0 974 0\r
+r 895 0 9 0 973 0\r
+r 895 0 9 0 972 0\r
+r 895 0 9 0 971 0\r
+r 895 0 9 0 970 0\r
+r 895 0 9 0 967 0\r
+r 895 0 9 0 966 0\r
+r 895 0 9 0 965 0\r
+r 895 0 9 0 958 0\r
+r 895 0 9 0 956 0\r
+r 895 0 9 0 955 0\r
+r 895 0 9 0 953 0\r
+r 895 0 9 0 952 0\r
+r 895 0 9 0 951 0\r
+r 895 0 9 0 941 0\r
+r 895 0 9 0 934 0\r
+r 895 0 9 0 933 0\r
+r 895 0 9 0 932 0\r
+r 895 0 9 0 931 0\r
+r 895 0 9 0 929 0\r
+r 895 0 9 0 927 0\r
+r 895 0 9 0 924 0\r
+r 895 0 9 0 921 0\r
+r 895 0 9 0 920 0\r
+r 895 0 9 0 919 0\r
+r 895 0 9 0 918 0\r
+r 895 0 9 0 917 0\r
+r 895 0 9 0 916 0\r
+r 895 0 9 0 913 0\r
+r 895 0 9 0 912 0\r
+r 895 0 9 0 911 0\r
+r 895 0 9 0 909 0\r
+r 895 0 9 0 907 0\r
+r 895 0 9 0 905 0\r
+r 895 0 9 0 904 0\r
+r 895 0 9 0 903 0\r
+r 895 0 97 0 898 0\r
+r 895 0 1 0 69 0\r
+r 895 0 93 0 900 0\r
+r 895 0 101 0 899 0\r
+r 895 0 5 0 896 0\r
+r 895 0 6 0 897 0\r
+r 895 0 2919 0 901 0\r
+r 895 0 7 0 89 0\r
+r 895 0 7 0 77 0\r
+r 2944 0 2 0 112 0\r
+r 2944 0 3 0 224 0\r
+r 896 0 2904 0 895 0\r
+r 896 0 1 0 10 0 s Diagram-2.0\r
+r 2945 0 2 0 227 0\r
+r 2945 0 3 0 229 0\r
+r 897 0 2905 0 895 0\r
+r 897 0 1 0 88 0 s http://www.simantics.org/Simantics/Diagram/2.0\r
+r 2946 0 2 0 184 0\r
+r 2946 0 3 0 248 0\r
+r 898 0 1 0 99 0 s 2.0\r
+r 898 0 2926 0 895 0\r
+r 2947 0 2 0 112 0\r
+r 2947 0 3 0 249 0\r
+r 899 0 1 0 10 0 s diagram\r
+r 899 0 2927 0 895 0\r
+r 2948 0 2 0 184 0\r
+r 2948 0 3 0 254 0\r
+r 900 0 1 0 10 0 s org.simantics.diagram.stubs.DiagramResource\r
+r 900 0 2925 0 895 0\r
+r 2949 0 2 0 184 0\r
+r 2949 0 3 0 271 0\r
+r 901 0 65 0 895 0\r
+r 901 0 1 0 62 0\r
+r 901 0 5 0 2485 0\r
+r 901 0 6 0 902 0\r
+r 901 0 7 0 85 0\r
+r 2950 0 2 0 111 0\r
+r 2950 0 3 0 273 0\r
+r 902 0 2905 0 901 0\r
+r 902 0 1 0 88 0 s http://www.simantics.org/Simantics/Diagram/2.0\r
+r 2951 0 2 0 184 0\r
+r 2951 0 3 0 280 0\r
+r 903 0 104 0 915 0\r
+r 903 0 129 0 904 0\r
+r 903 0 59 0 2033 0\r
+r 903 0 59 0 2014 0\r
+r 903 0 59 0 1996 0\r
+r 903 0 59 0 1981 0\r
+r 903 0 59 0 1959 0\r
+r 903 0 59 0 1933 0\r
+r 903 0 59 0 1914 0\r
+r 903 0 59 0 1895 0\r
+r 903 0 59 0 1879 0\r
+r 903 0 59 0 1865 0\r
+r 903 0 59 0 1851 0\r
+r 903 0 59 0 1829 0\r
+r 903 0 59 0 1806 0\r
+r 903 0 59 0 1783 0\r
+r 903 0 59 0 1771 0\r
+r 903 0 59 0 1755 0\r
+r 903 0 59 0 1742 0\r
+r 903 0 59 0 1726 0\r
+r 903 0 59 0 1706 0\r
+r 903 0 59 0 1684 0\r
+r 903 0 59 0 1664 0\r
+r 903 0 59 0 1648 0\r
+r 903 0 59 0 1633 0\r
+r 903 0 59 0 1611 0\r
+r 903 0 59 0 1588 0\r
+r 903 0 59 0 1565 0\r
+r 903 0 59 0 1545 0\r
+r 903 0 59 0 1525 0\r
+r 903 0 59 0 1505 0\r
+r 903 0 59 0 1485 0\r
+r 903 0 59 0 1465 0\r
+r 903 0 59 0 1433 0\r
+r 903 0 59 0 1406 0\r
+r 903 0 59 0 1393 0\r
+r 903 0 59 0 1360 0\r
+r 903 0 59 0 1051 0\r
+r 903 0 4 0 907 0\r
+r 903 0 4 0 485 0\r
+r 903 0 5 0 2447 0\r
+r 903 0 7 0 895 0\r
+r 2952 0 2 0 111 0\r
+r 2952 0 3 0 282 0\r
+r 904 0 2906 0 926 0\r
+r 904 0 4 0 903 0\r
+r 904 0 5 0 2450 0\r
+r 904 0 7 0 895 0\r
+r 2953 0 2 0 184 0\r
+r 2953 0 3 0 283 0\r
+r 905 0 104 0 906 0\r
+r 905 0 145 0 905 0\r
+r 905 0 59 0 907 0\r
+r 905 0 4 0 467 0\r
+r 905 0 5 0 2476 0\r
+r 905 0 7 0 895 0\r
+r 2954 0 2 0 112 0\r
+r 2954 0 3 0 285 0\r
+r 906 0 1 0 106 0\r
+r 906 0 28 0 907 0\r
+r 906 0 365 0 905 0\r
+r 906 0 38 0 474 0\r
+r 2955 0 2 0 111 0\r
+r 2955 0 3 0 288 0\r
+r 907 0 472 0 908 0\r
+r 907 0 129 0 979 0\r
+r 907 0 129 0 967 0\r
+r 907 0 129 0 958 0\r
+r 907 0 129 0 941 0\r
+r 907 0 129 0 919 0\r
+r 907 0 129 0 916 0\r
+r 907 0 129 0 913 0\r
+r 907 0 129 0 912 0\r
+r 907 0 129 0 909 0\r
+r 907 0 129 0 903 0\r
+r 907 0 145 0 907 0\r
+r 907 0 1 0 905 0\r
+r 907 0 2907 0 915 0\r
+r 907 0 2907 0 906 0\r
+r 907 0 2908 0 920 0\r
+r 907 0 2908 0 917 0\r
+r 907 0 2908 0 911 0\r
+r 907 0 4 0 466 0\r
+r 907 0 5 0 2477 0\r
+r 907 0 7 0 895 0\r
+r 2956 0 2 0 184 0\r
+r 2956 0 3 0 289 0\r
+r 908 0 1 0 489 0\r
+r 908 0 5 0 2455 0\r
+r 908 0 487 0 917 0\r
+r 908 0 479 0 919 0\r
+r 908 0 479 0 907 0\r
+r 2957 0 2 0 111 0\r
+r 2957 0 3 0 305 0\r
+r 909 0 104 0 910 0\r
+r 909 0 129 0 1359 0\r
+r 909 0 129 0 1050 0\r
+r 909 0 129 0 941 0\r
+r 909 0 145 0 909 0\r
+r 909 0 4 0 907 0\r
+r 909 0 5 0 2443 0\r
+r 909 0 7 0 895 0\r
+r 2958 0 2 0 111 0\r
+r 2958 0 3 0 307 0\r
+r 910 0 1 0 106 0\r
+r 910 0 365 0 909 0\r
+r 910 0 38 0 911 0\r
+r 910 0 39 0 107 0\r
+r 2959 0 2 0 111 0\r
+r 2959 0 3 0 310 0\r
+r 911 0 2 0 110 0\r
+r 911 0 3 0 3059 0\r
+r 911 0 28 0 504 0\r
+r 911 0 5 0 2442 0\r
+r 911 0 29 0 907 0\r
+r 911 0 7 0 895 0\r
+r 911 0 2911 0 910 0\r
+r 2960 0 2 0 111 0\r
+r 2960 0 3 0 318 0\r
+r 912 0 129 0 2032 33\r
+r 912 0 129 0 2013 0\r
+r 912 0 129 0 1995 32\r
+r 912 0 129 0 1980 31\r
+r 912 0 129 0 1958 30\r
+r 912 0 129 0 1932 29\r
+r 912 0 129 0 1913 28\r
+r 912 0 129 0 1894 27\r
+r 912 0 129 0 1878 26\r
+r 912 0 129 0 1864 25\r
+r 912 0 129 0 1850 24\r
+r 912 0 129 0 1828 23\r
+r 912 0 129 0 1805 22\r
+r 912 0 129 0 1782 21\r
+r 912 0 129 0 1770 20\r
+r 912 0 129 0 1754 19\r
+r 912 0 129 0 1741 18\r
+r 912 0 129 0 1725 0\r
+r 912 0 129 0 1705 17\r
+r 912 0 129 0 1683 16\r
+r 912 0 129 0 1663 15\r
+r 912 0 129 0 1647 14\r
+r 912 0 129 0 1632 13\r
+r 912 0 129 0 1610 12\r
+r 912 0 129 0 1587 11\r
+r 912 0 129 0 1564 10\r
+r 912 0 129 0 1544 9\r
+r 912 0 129 0 1524 8\r
+r 912 0 129 0 1504 7\r
+r 912 0 129 0 1484 6\r
+r 912 0 129 0 1464 5\r
+r 912 0 129 0 1432 4\r
+r 912 0 129 0 1405 3\r
+r 912 0 129 0 1392 2\r
+r 912 0 129 0 1359 0\r
+r 912 0 129 0 1050 0\r
+r 912 0 145 0 912 0\r
+r 912 0 4 0 907 0\r
+r 912 0 5 0 2484 0\r
+r 912 0 7 0 895 0\r
+r 2961 0 2 0 111 0\r
+r 2961 0 3 0 330 0\r
+r 913 0 104 0 914 0\r
+r 913 0 129 0 956 0\r
+r 913 0 129 0 953 0\r
+r 913 0 59 0 2034 0\r
+r 913 0 59 0 2015 0\r
+r 913 0 59 0 1997 0\r
+r 913 0 59 0 1982 0\r
+r 913 0 59 0 1960 0\r
+r 913 0 59 0 1934 0\r
+r 913 0 59 0 1915 0\r
+r 913 0 59 0 1896 0\r
+r 913 0 59 0 1880 0\r
+r 913 0 59 0 1866 0\r
+r 913 0 59 0 1852 0\r
+r 913 0 59 0 1830 0\r
+r 913 0 59 0 1807 0\r
+r 913 0 59 0 1784 0\r
+r 913 0 59 0 1772 0\r
+r 913 0 59 0 1756 0\r
+r 913 0 59 0 1743 0\r
+r 913 0 59 0 1727 0\r
+r 913 0 59 0 1707 0\r
+r 913 0 59 0 1685 0\r
+r 913 0 59 0 1665 0\r
+r 913 0 59 0 1649 0\r
+r 913 0 59 0 1634 0\r
+r 913 0 59 0 1612 0\r
+r 913 0 59 0 1589 0\r
+r 913 0 59 0 1566 0\r
+r 913 0 59 0 1546 0\r
+r 913 0 59 0 1526 0\r
+r 913 0 59 0 1506 0\r
+r 913 0 59 0 1486 0\r
+r 913 0 59 0 1466 0\r
+r 913 0 59 0 1434 0\r
+r 913 0 59 0 1407 0\r
+r 913 0 59 0 1394 0\r
+r 913 0 59 0 1361 0\r
+r 913 0 59 0 1052 0\r
+r 913 0 4 0 907 0\r
+r 913 0 5 0 2464 0\r
+r 913 0 7 0 895 0\r
+r 2962 0 2 0 111 0\r
+r 2962 0 3 0 332 0\r
+r 914 0 1 0 106 0\r
+r 914 0 365 0 913 0\r
+r 914 0 38 0 661 0\r
+r 914 0 39 0 107 0\r
+r 2963 0 2 0 111 0\r
+r 2963 0 3 0 334 0\r
+r 915 0 1 0 106 0\r
+r 915 0 28 0 907 0\r
+r 915 0 365 0 903 0\r
+r 915 0 38 0 302 0\r
+r 2964 0 2 0 111 0\r
+r 2964 0 3 0 343 0\r
+r 916 0 4 0 907 0\r
+r 916 0 4 0 549 0\r
+r 916 0 5 0 2440 0\r
+r 916 0 7 0 895 0\r
+r 2965 0 2 0 111 0\r
+r 2965 0 3 0 344 0\r
+r 917 0 488 0 908 0\r
+r 917 0 2 0 548 0\r
+r 917 0 2 0 469 0\r
+r 917 0 3 0 3060 0\r
+r 917 0 5 0 2491 0\r
+r 917 0 29 0 907 0\r
+r 917 0 7 0 895 0\r
+r 2966 0 2 0 111 0\r
+r 2966 0 3 0 347 0\r
+r 918 0 2 0 94 0\r
+r 918 0 3 0 3061 0\r
+r 918 0 28 0 540 0\r
+r 918 0 5 0 2471 0\r
+r 918 0 29 0 919 0\r
+r 918 0 7 0 895 0\r
+r 2967 0 2 0 111 0\r
+r 2967 0 3 0 349 0\r
+r 919 0 104 0 987 0\r
+r 919 0 104 0 986 0\r
+r 919 0 104 0 985 0\r
+r 919 0 472 0 908 0\r
+r 919 0 1 0 52 0\r
+r 919 0 2908 0 977 0\r
+r 919 0 2908 0 970 0\r
+r 919 0 2908 0 918 0\r
+r 919 0 4 0 907 0\r
+r 919 0 4 0 503 0\r
+r 919 0 5 0 2483 0\r
+r 919 0 7 0 895 0\r
+r 2968 0 2 0 112 0\r
+r 2968 0 3 0 379 0\r
+r 920 0 2 0 469 0\r
+r 920 0 3 0 3062 0\r
+r 920 0 28 0 12 0\r
+r 920 0 5 0 2439 0\r
+r 920 0 29 0 907 0\r
+r 920 0 7 0 895 0\r
+r 2969 0 2 0 184 0\r
+r 2969 0 3 0 380 0\r
+r 921 0 104 0 923 0\r
+r 921 0 104 0 922 0\r
+r 921 0 2907 0 922 0\r
+r 921 0 4 0 57 0\r
+r 921 0 5 0 2470 0\r
+r 921 0 7 0 895 0\r
+r 2970 0 2 0 184 0\r
+r 2970 0 3 0 394 0\r
+r 922 0 1 0 106 0\r
+r 922 0 28 0 921 0\r
+r 922 0 365 0 921 0\r
+r 922 0 38 0 9 0\r
+r 2971 0 2 0 112 0\r
+r 2971 0 3 0 435 0\r
+r 923 0 1 0 106 0\r
+r 923 0 28 0 52 0\r
+r 923 0 365 0 921 0\r
+r 923 0 38 0 103 0\r
+r 2972 0 2 0 112 0\r
+r 2972 0 3 0 438 0\r
+r 924 0 2906 0 926 0\r
+r 924 0 27 0 925 0\r
+r 924 0 4 0 57 0\r
+r 924 0 5 0 2462 0\r
+r 924 0 7 0 895 0\r
+r 2973 0 2 0 112 0\r
+r 2973 0 3 0 440 0\r
+r 925 0 40 0 926 0\r
+r 925 0 1 0 37 0\r
+r 925 0 2906 0 924 0\r
+r 925 0 38 0 9 0\r
+r 2974 0 2 0 111 0\r
+r 2974 0 3 0 442 0\r
+r 926 0 2913 0 925 0\r
+r 926 0 1 0 33 0\r
+r 926 0 27 0 924 0\r
+r 926 0 27 0 904 0\r
+r 2975 0 2 0 184 0\r
+r 2975 0 3 0 469 0\r
+r 2975 0 60 0 3062 0\r
+r 2975 0 60 0 3060 0\r
+r 927 0 2 0 94 0\r
+r 927 0 3 0 3063 0\r
+r 927 0 28 0 12 0\r
+r 927 0 5 0 2473 0\r
+r 927 0 78 0 928 0\r
+r 927 0 7 0 895 0\r
+r 927 0 2911 0 961 0\r
+r 2976 0 2 0 111 0\r
+r 2976 0 3 0 511 0\r
+r 928 0 1 0 10 0 s An angular direction in degrees\r
+r 928 0 2923 0 927 0\r
+r 2977 0 2 0 111 0\r
+r 2977 0 3 0 513 0\r
+r 929 0 2 0 94 0\r
+r 929 0 3 0 3064 0\r
+r 929 0 28 0 10 0\r
+r 929 0 5 0 2467 0\r
+r 929 0 78 0 930 0\r
+r 929 0 7 0 895 0\r
+r 929 0 2911 0 962 0\r
+r 2978 0 2 0 111 0\r
+r 2978 0 3 0 515 0\r
+r 930 0 1 0 10 0 s Number formatter as input to DoubleFormatter\r
+r 930 0 2923 0 929 0\r
+r 2979 0 2 0 111 0\r
+r 2979 0 3 0 517 0\r
+r 931 0 2921 0 946 0\r
+r 931 0 1 0 42 0\r
+r 931 0 2 0 110 0\r
+r 931 0 3 0 3065 0\r
+r 931 0 28 0 932 0\r
+r 931 0 5 0 2445 0\r
+r 931 0 7 0 895 0\r
+r 931 0 2911 0 943 0\r
+r 2980 0 2 0 184 0\r
+r 2980 0 3 0 522 0\r
+r 932 0 9 0 937 0\r
+r 932 0 9 0 936 0\r
+r 932 0 26 0 932 0\r
+r 932 0 2907 0 931 0\r
+r 932 0 59 0 937 0\r
+r 932 0 59 0 936 0\r
+r 932 0 4 0 24 0\r
+r 932 0 5 0 2498 0\r
+r 932 0 78 0 935 0\r
+r 932 0 7 0 895 0\r
+r 2981 0 2 0 184 0\r
+r 2981 0 3 0 524 0\r
+r 933 0 2921 0 947 0\r
+r 933 0 1 0 42 0\r
+r 933 0 2 0 110 0\r
+r 933 0 3 0 3066 0\r
+r 933 0 28 0 934 0\r
+r 933 0 5 0 2468 0\r
+r 933 0 7 0 895 0\r
+r 933 0 2911 0 944 0\r
+r 2982 0 2 0 111 0\r
+r 2982 0 3 0 526 0\r
+r 934 0 9 0 940 0\r
+r 934 0 9 0 939 0\r
+r 934 0 26 0 934 0\r
+r 934 0 2907 0 933 0\r
+r 934 0 59 0 940 0\r
+r 934 0 59 0 939 0\r
+r 934 0 4 0 24 0\r
+r 934 0 5 0 2456 0\r
+r 934 0 78 0 938 0\r
+r 934 0 7 0 895 0\r
+r 2983 0 2 0 112 0\r
+r 2983 0 3 0 538 0\r
+r 935 0 1 0 10 0 s Connection flag type (input or output)\r
+r 935 0 2923 0 932 0\r
+r 2984 0 2 0 112 0\r
+r 2984 0 3 0 543 0\r
+r 936 0 1 0 932 0\r
+r 936 0 2922 0 946 0\r
+r 936 0 5 0 2499 0\r
+r 936 0 1047 0 519 0\r
+r 936 0 7 0 932 0\r
+r 2985 0 2 0 184 0\r
+r 2985 0 3 0 548 0\r
+r 2985 0 60 0 3060 0\r
+r 937 0 1 0 932 0\r
+r 937 0 5 0 2448 0\r
+r 937 0 1047 0 520 0\r
+r 937 0 7 0 932 0\r
+r 2986 0 2 0 184 0\r
+r 2986 0 3 0 552 0\r
+r 938 0 1 0 10 0 s Identifies whether the flag is used for representing an internal or an external reference with respect to the flag's owner diagram.\r
+r 938 0 2923 0 934 0\r
+r 2987 0 2 0 184 0\r
+r 2987 0 3 0 554 0\r
+r 939 0 1 0 934 0\r
+r 939 0 2922 0 947 0\r
+r 939 0 5 0 2486 0\r
+r 939 0 7 0 934 0\r
+r 2988 0 2 0 184 0\r
+r 2988 0 3 0 556 0\r
+r 940 0 1 0 934 0\r
+r 940 0 5 0 2489 0\r
+r 940 0 7 0 934 0\r
+r 2989 0 2 0 184 0\r
+r 2989 0 3 0 558 0\r
+r 941 0 472 0 950 0\r
+r 941 0 104 0 945 0\r
+r 941 0 104 0 944 0\r
+r 941 0 104 0 943 0\r
+r 941 0 1057 0 1073 0\r
+r 941 0 2907 0 952 0\r
+r 941 0 2908 0 952 0\r
+r 941 0 4 0 909 0\r
+r 941 0 4 0 907 0\r
+r 941 0 5 0 2493 0\r
+r 941 0 70 0 949 0\r
+r 941 0 70 0 947 0\r
+r 941 0 70 0 946 0\r
+r 941 0 78 0 942 0\r
+r 941 0 7 0 895 0\r
+r 2990 0 2 0 184 0\r
+r 2990 0 3 0 560 0\r
+r 942 0 1 0 10 0 s Flags are used on diagrams for cutting connections and continuing them elsewhere.\r
+r 942 0 2923 0 941 0\r
+r 2991 0 2 0 184 0\r
+r 2991 0 3 0 564 0\r
+r 943 0 1 0 106 0\r
+r 943 0 365 0 941 0\r
+r 943 0 38 0 931 0\r
+r 943 0 39 0 107 0\r
+r 2992 0 2 0 184 0\r
+r 2992 0 3 0 566 0\r
+r 944 0 1 0 106 0\r
+r 944 0 365 0 941 0\r
+r 944 0 38 0 933 0\r
+r 944 0 39 0 107 0\r
+r 2993 0 2 0 184 0\r
+r 2993 0 3 0 570 0\r
+r 945 0 1 0 106 0\r
+r 945 0 365 0 941 0\r
+r 945 0 38 0 192 0\r
+r 945 0 39 0 225 0\r
+r 2994 0 2 0 184 0\r
+r 2994 0 3 0 572 0\r
+r 946 0 2920 0 941 0\r
+r 946 0 72 0 936 0\r
+r 946 0 1 0 151 0\r
+r 946 0 71 0 931 0\r
+r 2995 0 2 0 184 0\r
+r 2995 0 3 0 574 0\r
+r 947 0 2920 0 941 0\r
+r 947 0 72 0 939 0\r
+r 947 0 1 0 151 0\r
+r 947 0 71 0 933 0\r
+r 2996 0 2 0 184 0\r
+r 2996 0 3 0 576 0\r
+r 948 0 1 0 10 0 s \r
+r 948 0 2922 0 949 0\r
+r 2997 0 2 0 111 0\r
+r 2997 0 3 0 578 0\r
+r 949 0 2920 0 941 0\r
+r 949 0 72 0 948 0\r
+r 949 0 1 0 151 0\r
+r 949 0 71 0 192 0\r
+r 2998 0 2 0 111 0\r
+r 2998 0 3 0 580 0\r
+r 950 0 1 0 504 0\r
+r 950 0 479 0 941 0\r
+r 950 0 487 0 951 0\r
+r 2999 0 2 0 111 0\r
+r 2999 0 3 0 581 0\r
+r 951 0 488 0 950 0\r
+r 951 0 2 0 507 0\r
+r 951 0 3 0 951 0\r
+r 951 0 5 0 2449 0\r
+r 951 0 7 0 895 0\r
+r 3000 0 2 0 111 0\r
+r 3000 0 3 0 587 0\r
+r 952 0 2 0 111 0\r
+r 952 0 2 0 110 0\r
+r 952 0 3 0 952 0\r
+r 952 0 28 0 941 0\r
+r 952 0 5 0 2494 0\r
+r 952 0 29 0 941 0\r
+r 952 0 7 0 895 0\r
+r 3001 0 2 0 184 0\r
+r 3001 0 3 0 589 0\r
+r 953 0 2908 0 955 0\r
+r 953 0 4 0 913 0\r
+r 953 0 5 0 2446 0\r
+r 953 0 78 0 954 0\r
+r 953 0 7 0 895 0\r
+r 3002 0 2 0 184 0\r
+r 3002 0 3 0 590 0\r
+r 954 0 1 0 10 0 s Links are used on diagrams for navigating to other diagrams.\r
+r 954 0 2923 0 953 0\r
+r 3003 0 2 0 184 0\r
+r 3003 0 3 0 591 0\r
+r 955 0 2 0 110 0\r
+r 955 0 3 0 3067 0\r
+r 955 0 5 0 2438 0\r
+r 955 0 29 0 953 0\r
+r 955 0 7 0 895 0\r
+r 3004 0 2 0 184 0\r
+r 3004 0 3 0 592 0\r
+r 956 0 4 0 913 0\r
+r 956 0 5 0 2475 0\r
+r 956 0 78 0 957 0\r
+r 956 0 7 0 895 0\r
+r 3005 0 2 0 184 0\r
+r 3005 0 3 0 601 0\r
+r 957 0 1 0 10 0 s This link navigates upward the structural path.\r
+r 957 0 2923 0 956 0\r
+r 3006 0 2 0 111 0\r
+r 3006 0 3 0 603 0\r
+r 958 0 104 0 964 0\r
+r 958 0 104 0 963 0\r
+r 958 0 104 0 962 0\r
+r 958 0 104 0 961 0\r
+r 958 0 104 0 960 0\r
+r 958 0 4 0 907 0\r
+r 958 0 5 0 2479 0\r
+r 958 0 78 0 959 0\r
+r 958 0 7 0 895 0\r
+r 3007 0 2 0 184 0\r
+r 3007 0 3 0 605 0\r
+r 959 0 1 0 10 0 s Monitors display data from various sources e.g. model configuration or simulation state.\r
+r 959 0 2923 0 958 0\r
+r 3008 0 2 0 184 0\r
+r 3008 0 3 0 606 0\r
+r 960 0 1 0 106 0\r
+r 960 0 365 0 958 0\r
+r 960 0 38 0 192 0\r
+r 960 0 39 0 225 0\r
+r 3009 0 2 0 184 0\r
+r 3009 0 3 0 625 0\r
+r 961 0 1 0 106 0\r
+r 961 0 365 0 958 0\r
+r 961 0 38 0 927 0\r
+r 961 0 39 0 225 0\r
+r 3010 0 2 0 184 0\r
+r 3010 0 3 0 628 0\r
+r 962 0 1 0 106 0\r
+r 962 0 365 0 958 0\r
+r 962 0 38 0 929 0\r
+r 962 0 39 0 225 0\r
+r 3011 0 2 0 184 0\r
+r 3011 0 3 0 629 0\r
+r 963 0 1 0 106 0\r
+r 963 0 365 0 958 0\r
+r 963 0 38 0 635 0\r
+r 963 0 39 0 225 0\r
+r 3012 0 2 0 184 0\r
+r 3012 0 3 0 630 0\r
+r 964 0 1 0 106 0\r
+r 964 0 365 0 958 0\r
+r 964 0 38 0 636 0\r
+r 964 0 39 0 225 0\r
+r 3013 0 2 0 111 0\r
+r 3013 0 3 0 635 0\r
+r 965 0 2 0 110 0\r
+r 965 0 3 0 3068 0\r
+r 965 0 5 0 2441 0\r
+r 965 0 7 0 895 0\r
+r 3014 0 2 0 111 0\r
+r 3014 0 3 0 636 0\r
+r 966 0 4 0 226 0\r
+r 966 0 5 0 2478 0\r
+r 966 0 7 0 895 0\r
+r 3015 0 2 0 184 0\r
+r 3015 0 3 0 639 0\r
+r 967 0 104 0 969 0\r
+r 967 0 4 0 907 0\r
+r 967 0 5 0 2482 0\r
+r 967 0 78 0 968 0\r
+r 967 0 7 0 895 0\r
+r 3016 0 2 0 184 0\r
+r 3016 0 3 0 649 0\r
+r 968 0 1 0 10 0 s Trends display data from various sources e.g. model configuration or simulation state.\r
+r 968 0 2923 0 967 0\r
+r 3017 0 2 0 184 0\r
+r 3017 0 3 0 653 0\r
+r 969 0 1 0 106 0\r
+r 969 0 365 0 967 0\r
+r 969 0 38 0 192 0\r
+r 969 0 39 0 225 0\r
+r 3018 0 2 0 184 0\r
+r 3018 0 3 0 654 0\r
+r 970 0 2 0 507 0\r
+r 970 0 3 0 971 0\r
+r 970 0 60 0 975 0\r
+r 970 0 60 0 973 0\r
+r 970 0 28 0 972 0\r
+r 970 0 5 0 2480 0\r
+r 970 0 29 0 919 0\r
+r 970 0 7 0 895 0\r
+r 3019 0 2 0 111 0\r
+r 3019 0 3 0 661 0\r
+r 971 0 2 0 507 0\r
+r 971 0 3 0 970 0\r
+r 971 0 60 0 976 0\r
+r 971 0 60 0 974 0\r
+r 971 0 5 0 2463 0\r
+r 971 0 7 0 895 0\r
+r 3020 0 2 0 111 0\r
+r 3020 0 3 0 691 0\r
+r 3020 0 60 0 3024 0\r
+r 3020 0 60 0 3023 0\r
+r 3020 0 60 0 3022 0\r
+r 972 0 104 0 984 0\r
+r 972 0 104 0 983 0\r
+r 972 0 1 0 52 0\r
+r 972 0 2906 0 982 0\r
+r 972 0 2906 0 981 0\r
+r 972 0 2907 0 970 0\r
+r 972 0 4 0 503 0\r
+r 972 0 5 0 2452 0\r
+r 972 0 7 0 895 0\r
+r 3021 0 2 0 112 0\r
+r 3021 0 3 0 703 0\r
+r 973 0 2 0 970 0\r
+r 973 0 3 0 974 0\r
+r 973 0 5 0 2469 0\r
+r 973 0 7 0 895 0\r
+r 973 0 2911 0 985 0\r
+r 3022 0 2 0 3020 0\r
+r 3022 0 3 0 707 0\r
+r 974 0 2 0 971 0\r
+r 974 0 3 0 973 0\r
+r 974 0 5 0 2497 0\r
+r 974 0 7 0 895 0\r
+r 3023 0 2 0 3020 0\r
+r 3023 0 3 0 709 0\r
+r 975 0 2 0 970 0\r
+r 975 0 3 0 976 0\r
+r 975 0 5 0 2488 0\r
+r 975 0 7 0 895 0\r
+r 975 0 2911 0 986 0\r
+r 3024 0 2 0 3020 0\r
+r 3024 0 3 0 711 0\r
+r 976 0 2 0 971 0\r
+r 976 0 3 0 975 0\r
+r 976 0 5 0 2458 0\r
+r 976 0 7 0 895 0\r
+r 3025 0 2 0 184 0\r
+r 3025 0 3 0 719 0\r
+r 977 0 2 0 110 0\r
+r 977 0 3 0 978 0\r
+r 977 0 28 0 979 0\r
+r 977 0 5 0 2487 0\r
+r 977 0 29 0 919 0\r
+r 977 0 7 0 895 0\r
+r 977 0 2911 0 987 0\r
+r 3026 0 2 0 184 0\r
+r 3026 0 3 0 736 0\r
+r 978 0 2 0 111 0\r
+r 978 0 3 0 977 0\r
+r 978 0 5 0 2436 0\r
+r 978 0 7 0 895 0\r
+r 3027 0 2 0 8 0\r
+r 3027 0 3 0 740 0\r
+r 979 0 104 0 990 0\r
+r 979 0 104 0 988 0\r
+r 979 0 2906 0 982 0\r
+r 979 0 2906 0 981 0\r
+r 979 0 2907 0 977 0\r
+r 979 0 4 0 907 0\r
+r 979 0 5 0 2472 0\r
+r 979 0 7 0 895 0\r
+r 3028 0 2 0 184 0\r
+r 3028 0 3 0 742 0\r
+r 980 0 2 0 111 0\r
+r 980 0 2 0 110 0\r
+r 980 0 3 0 980 0\r
+r 980 0 28 0 982 0\r
+r 980 0 5 0 2496 0\r
+r 980 0 29 0 981 0\r
+r 980 0 7 0 895 0\r
+r 980 0 2911 0 983 0\r
+r 3029 0 2 0 112 0\r
+r 3029 0 3 0 743 0\r
+r 981 0 1 0 33 0\r
+r 981 0 27 0 979 0\r
+r 981 0 27 0 972 0\r
+r 981 0 2908 0 980 0\r
+r 3030 0 2 0 112 0\r
+r 3030 0 3 0 744 0\r
+r 982 0 1 0 33 0\r
+r 982 0 2907 0 980 0\r
+r 982 0 27 0 979 0\r
+r 982 0 27 0 972 0\r
+r 3031 0 2 0 111 0\r
+r 3031 0 3 0 762 0\r
+r 983 0 1 0 106 0\r
+r 983 0 365 0 972 0\r
+r 983 0 38 0 980 0\r
+r 983 0 39 0 225 0\r
+r 3032 0 2 0 111 0\r
+r 3032 0 3 0 764 0\r
+r 984 0 1 0 106 0\r
+r 984 0 365 0 972 0\r
+r 984 0 38 0 507 0\r
+r 984 0 39 0 107 0\r
+r 3033 0 2 0 111 0\r
+r 3033 0 3 0 767 0\r
+r 985 0 1 0 106 0\r
+r 985 0 365 0 919 0\r
+r 985 0 38 0 973 0\r
+r 3034 0 2 0 111 0\r
+r 3034 0 3 0 771 0\r
+r 986 0 1 0 106 0\r
+r 986 0 365 0 919 0\r
+r 986 0 38 0 975 0\r
+r 3035 0 2 0 111 0\r
+r 3035 0 3 0 773 0\r
+r 987 0 1 0 106 0\r
+r 987 0 365 0 919 0\r
+r 987 0 38 0 977 0\r
+r 3036 0 2 0 111 0\r
+r 3036 0 3 0 778 0\r
+r 988 0 1 0 106 0\r
+r 988 0 365 0 979 0\r
+r 988 0 38 0 989 0\r
+r 3037 0 2 0 111 0\r
+r 3037 0 3 0 781 0\r
+r 989 0 1 0 144 0\r
+r 989 0 2 0 111 0\r
+r 989 0 2 0 110 0\r
+r 989 0 3 0 989 0\r
+r 989 0 5 0 2454 0\r
+r 989 0 7 0 895 0\r
+r 989 0 2911 0 988 0\r
+r 3038 0 2 0 184 0\r
+r 3038 0 3 0 786 0\r
+r 990 0 1 0 106 0\r
+r 990 0 365 0 979 0\r
+r 990 0 38 0 991 0\r
+r 3039 0 2 0 184 0\r
+r 3039 0 3 0 788 0\r
+r 991 0 1 0 144 0\r
+r 991 0 2 0 111 0\r
+r 991 0 2 0 110 0\r
+r 991 0 3 0 991 0\r
+r 991 0 5 0 2460 0\r
+r 991 0 7 0 895 0\r
+r 991 0 2911 0 990 0\r
+r 3040 0 2 0 184 0\r
+r 3040 0 3 0 790 0\r
+r 992 0 2 0 94 0\r
+r 992 0 3 0 3069 0\r
+r 992 0 28 0 993 0\r
+r 992 0 5 0 2459 0\r
+r 992 0 7 0 895 0\r
+r 3041 0 2 0 111 0\r
+r 3041 0 3 0 795 0\r
+r 993 0 104 0 1003 0\r
+r 993 0 104 0 1002 0\r
+r 993 0 104 0 1001 0\r
+r 993 0 2907 0 992 0\r
+r 993 0 4 0 25 0\r
+r 993 0 5 0 2474 0\r
+r 993 0 7 0 895 0\r
+r 3042 0 2 0 111 0\r
+r 3042 0 3 0 800 0\r
+r 994 0 2 0 94 0\r
+r 994 0 3 0 3070 0\r
+r 994 0 28 0 144 0\r
+r 994 0 5 0 2451 0\r
+r 994 0 7 0 895 0\r
+r 994 0 2911 0 1002 0\r
+r 3043 0 2 0 184 0\r
+r 3043 0 3 0 805 0\r
+r 995 0 2 0 94 0\r
+r 995 0 3 0 3071 0\r
+r 995 0 28 0 144 0\r
+r 995 0 5 0 2465 0\r
+r 995 0 7 0 895 0\r
+r 995 0 2911 0 1003 0\r
+r 3044 0 2 0 184 0\r
+r 3044 0 3 0 807 0\r
+r 996 0 2 0 94 0\r
+r 996 0 3 0 3072 0\r
+r 996 0 28 0 14 0\r
+r 996 0 5 0 2444 0\r
+r 996 0 7 0 895 0\r
+r 996 0 2911 0 1001 0\r
+r 3045 0 2 0 111 0\r
+r 3045 0 3 0 809 0\r
+r 997 0 145 0 997 0\r
+r 997 0 1 0 144 0\r
+r 997 0 2 0 111 0\r
+r 997 0 2 0 110 0\r
+r 997 0 3 0 997 0\r
+r 997 0 5 0 2490 0\r
+r 997 0 78 0 998 0\r
+r 997 0 7 0 895 0\r
+r 3046 0 2 0 111 0\r
+r 3046 0 3 0 815 0\r
+r 998 0 1 0 10 0 s A relation meant to be inherited to create specific tags describing the visibility of any diagram element on a particular layer.\r
+r 998 0 2923 0 997 0\r
+r 3047 0 2 0 112 0\r
+r 3047 0 3 0 846 0\r
+r 999 0 145 0 999 0\r
+r 999 0 1 0 144 0\r
+r 999 0 2 0 111 0\r
+r 999 0 2 0 110 0\r
+r 999 0 3 0 999 0\r
+r 999 0 5 0 2466 0\r
+r 999 0 78 0 1000 0\r
+r 999 0 7 0 895 0\r
+r 3048 0 2 0 184 0\r
+r 3048 0 3 0 847 0\r
+r 1000 0 1 0 10 0 s A relation meant to be inherited to create specific tags describing the focusability of any diagram element on a particular layer.\r
+r 1000 0 2923 0 999 0\r
+r 3049 0 2 0 184 0\r
+r 3049 0 3 0 848 0\r
+r 1001 0 1 0 106 0\r
+r 1001 0 365 0 993 0\r
+r 1001 0 38 0 996 0\r
+r 1001 0 39 0 107 0\r
+r 3050 0 2 0 184 0\r
+r 3050 0 3 0 849 0\r
+r 1002 0 1 0 106 0\r
+r 1002 0 365 0 993 0\r
+r 1002 0 38 0 994 0\r
+r 1002 0 39 0 107 0\r
+r 3051 0 2 0 184 0\r
+r 3051 0 3 0 850 0\r
+r 1003 0 1 0 106 0\r
+r 1003 0 365 0 993 0\r
+r 1003 0 38 0 995 0\r
+r 1003 0 39 0 107 0\r
+r 3052 0 2 0 184 0\r
+r 3052 0 3 0 851 0\r
+r 3052 0 60 0 3054 0\r
+r 3052 0 60 0 3053 0\r
+r 1004 0 2 0 94 0\r
+r 1004 0 3 0 3073 0\r
+r 1004 0 28 0 1005 0\r
+r 1004 0 5 0 2453 0\r
+r 1004 0 7 0 895 0\r
+r 3053 0 2 0 3052 0\r
+r 3053 0 3 0 852 0\r
+r 1005 0 104 0 1010 0\r
+r 1005 0 104 0 1009 0\r
+r 1005 0 2907 0 1004 0\r
+r 1005 0 4 0 24 0\r
+r 1005 0 5 0 2481 0\r
+r 1005 0 7 0 895 0\r
+r 3054 0 2 0 3052 0\r
+r 3054 0 3 0 854 0\r
+r 1006 0 2 0 94 0\r
+r 1006 0 3 0 3074 0\r
+r 1006 0 28 0 535 0\r
+r 1006 0 5 0 2461 0\r
+r 1006 0 7 0 895 0\r
+r 1006 0 2911 0 1009 0\r
+r 3055 0 2 0 111 0\r
+r 3055 0 3 0 862 0\r
+r 1007 0 2 0 110 0\r
+r 1007 0 3 0 3075 0\r
+r 1007 0 28 0 1008 0\r
+r 1007 0 5 0 2495 0\r
+r 1007 0 7 0 895 0\r
+r 1007 0 2911 0 1010 0\r
+r 3056 0 2 0 184 0\r
+r 3056 0 3 0 871 0\r
+r 1008 0 9 0 1012 0\r
+r 1008 0 9 0 1011 0\r
+r 1008 0 26 0 1008 0\r
+r 1008 0 2907 0 1007 0\r
+r 1008 0 59 0 1012 0\r
+r 1008 0 59 0 1011 0\r
+r 1008 0 4 0 24 0\r
+r 1008 0 5 0 2457 0\r
+r 1008 0 7 0 895 0\r
+r 3057 0 2 0 184 0\r
+r 3057 0 3 0 872 0\r
+r 1009 0 1 0 106 0\r
+r 1009 0 365 0 1005 0\r
+r 1009 0 38 0 1006 0\r
+r 1009 0 39 0 107 0\r
+r 3058 0 2 0 112 0\r
+r 3058 0 3 0 885 0\r
+r 1010 0 1 0 106 0\r
+r 1010 0 365 0 1005 0\r
+r 1010 0 38 0 1007 0\r
+r 1010 0 39 0 107 0\r
+r 3059 0 2 0 111 0\r
+r 3059 0 3 0 911 0\r
+r 1011 0 1 0 1008 0\r
+r 1011 0 5 0 2492 0\r
+r 1011 0 7 0 1008 0\r
+r 3060 0 2 0 2985 0\r
+r 3060 0 2 0 2975 0\r
+r 3060 0 3 0 917 0\r
+r 1012 0 1 0 1008 0\r
+r 1012 0 5 0 2437 0\r
+r 1012 0 7 0 1008 0\r
+r 3061 0 2 0 184 0\r
+r 3061 0 3 0 918 0\r
+r 1013 0 9 0 1088 0\r
+r 1013 0 9 0 1086 0\r
+r 1013 0 9 0 1084 0\r
+r 1013 0 9 0 1081 0\r
+r 1013 0 9 0 1078 0\r
+r 1013 0 9 0 1059 0\r
+r 1013 0 9 0 1058 0\r
+r 1013 0 9 0 1057 0\r
+r 1013 0 9 0 1056 0\r
+r 1013 0 9 0 1055 0\r
+r 1013 0 9 0 1054 0\r
+r 1013 0 9 0 1050 0\r
+r 1013 0 9 0 1049 0\r
+r 1013 0 9 0 1030 0\r
+r 1013 0 9 0 1029 0\r
+r 1013 0 9 0 1025 0\r
+r 1013 0 9 0 1022 0\r
+r 1013 0 9 0 1021 0\r
+r 1013 0 9 0 1020 0\r
+r 1013 0 97 0 1016 0\r
+r 1013 0 1 0 69 0\r
+r 1013 0 93 0 1017 0\r
+r 1013 0 5 0 1014 0\r
+r 1013 0 6 0 1015 0\r
+r 1013 0 2919 0 1018 0\r
+r 1013 0 7 0 89 0\r
+r 1013 0 7 0 77 0\r
+r 3062 0 2 0 2975 0\r
+r 3062 0 3 0 920 0\r
+r 1014 0 2904 0 1013 0\r
+r 1014 0 1 0 10 0 s Modeling-1.0\r
+r 3063 0 2 0 184 0\r
+r 3063 0 3 0 927 0\r
+r 1015 0 2905 0 1013 0\r
+r 1015 0 1 0 88 0 s http://www.simantics.org/Modeling/1.0\r
+r 3064 0 2 0 184 0\r
+r 3064 0 3 0 929 0\r
+r 1016 0 1 0 99 0 s 1.0\r
+r 1016 0 2926 0 1013 0\r
+r 3065 0 2 0 111 0\r
+r 3065 0 3 0 931 0\r
+r 1017 0 1 0 10 0 s org.simantics.modeling.ModelingResources\r
+r 1017 0 2925 0 1013 0\r
+r 3066 0 2 0 111 0\r
+r 3066 0 3 0 933 0\r
+r 1018 0 65 0 1013 0\r
+r 1018 0 1 0 62 0\r
+r 1018 0 5 0 2874 0\r
+r 1018 0 6 0 1019 0\r
+r 1018 0 7 0 85 0\r
+r 3067 0 2 0 111 0\r
+r 3067 0 3 0 955 0\r
+r 1019 0 2905 0 1018 0\r
+r 1019 0 1 0 88 0 s http://www.simantics.org/Modeling/1.0\r
+r 3068 0 2 0 111 0\r
+r 3068 0 3 0 965 0\r
+r 1020 0 1 0 381 0\r
+r 1020 0 388 0 1022 0\r
+r 1020 0 388 0 1021 0\r
+r 1020 0 388 0 455 0\r
+r 1020 0 5 0 2866 0\r
+r 1020 0 389 0 1354 0\r
+r 1020 0 390 0 1354 0\r
+r 1020 0 7 0 1013 0\r
+r 1020 0 7 0 374 0\r
+r 3069 0 2 0 184 0\r
+r 3069 0 3 0 992 0\r
+r 1021 0 1 0 381 0\r
+r 1021 0 5 0 2896 0\r
+r 1021 0 389 0 1020 0\r
+r 1021 0 7 0 1013 0\r
+r 3070 0 2 0 184 0\r
+r 3070 0 3 0 994 0\r
+r 1022 0 192 0 1023 0\r
+r 1022 0 1 0 381 0\r
+r 1022 0 5 0 2891 0\r
+r 1022 0 389 0 1020 0\r
+r 1022 0 78 0 1024 0\r
+r 1022 0 7 0 1013 0\r
+r 3071 0 2 0 184 0\r
+r 3071 0 3 0 995 0\r
+r 1023 0 1 0 10 0 s Structural Model Manager\r
+r 1023 0 2935 0 1022 0\r
+r 3072 0 2 0 184 0\r
+r 3072 0 3 0 996 0\r
+r 1024 0 1 0 10 0 s Generic model manager for structural models.\r
+r 1024 0 2923 0 1022 0\r
+r 3073 0 2 0 184 0\r
+r 3073 0 3 0 1004 0\r
+r 1025 0 9 0 1028 0\r
+r 1025 0 9 0 1027 0\r
+r 1025 0 9 0 1026 0\r
+r 1025 0 1 0 57 0\r
+r 1025 0 5 0 2897 0\r
+r 1025 0 7 0 1013 0\r
+r 3074 0 2 0 184 0\r
+r 3074 0 3 0 1006 0\r
+r 1026 0 2961 0 1063 0\r
+r 1026 0 1 0 118 0\r
+r 1026 0 5 0 2892 0\r
+r 1026 0 7 0 1025 0\r
+r 3075 0 2 0 111 0\r
+r 3075 0 3 0 1007 0\r
+r 1027 0 2961 0 1065 0\r
+r 1027 0 1 0 118 0\r
+r 1027 0 5 0 2865 0\r
+r 1027 0 7 0 1025 0\r
+r 3076 0 2 0 111 0\r
+r 3076 0 3 0 1051 0\r
+r 1028 0 2961 0 1076 0\r
+r 1028 0 2961 0 1074 0\r
+r 1028 0 1 0 118 0\r
+r 1028 0 5 0 2860 0\r
+r 1028 0 7 0 1025 0\r
+r 3077 0 2 0 8 0\r
+r 3077 0 3 0 1056 0\r
+r 1029 0 1 0 144 0\r
+r 1029 0 2 0 111 0\r
+r 1029 0 2 0 110 0\r
+r 1029 0 3 0 1029 0\r
+r 1029 0 5 0 2875 0\r
+r 1029 0 7 0 1013 0\r
+r 3078 0 2 0 8 0\r
+r 3078 0 3 0 1057 0\r
+r 1030 0 9 0 1048 0\r
+r 1030 0 9 0 1047 0\r
+r 1030 0 9 0 1046 0\r
+r 1030 0 9 0 1045 0\r
+r 1030 0 9 0 1044 0\r
+r 1030 0 9 0 1043 0\r
+r 1030 0 9 0 1042 0\r
+r 1030 0 9 0 1041 0\r
+r 1030 0 9 0 1040 0\r
+r 1030 0 9 0 1039 0\r
+r 1030 0 9 0 1038 0\r
+r 1030 0 9 0 1037 0\r
+r 1030 0 9 0 1036 0\r
+r 1030 0 9 0 1035 0\r
+r 1030 0 9 0 1034 0\r
+r 1030 0 9 0 1033 0\r
+r 1030 0 9 0 1032 0\r
+r 1030 0 9 0 1031 0\r
+r 1030 0 1 0 57 0\r
+r 1030 0 5 0 2857 0\r
+r 1030 0 7 0 1013 0\r
+r 3079 0 2 0 111 0\r
+r 3079 0 3 0 1060 0\r
+r 1031 0 2 0 8 0\r
+r 1031 0 3 0 1032 0\r
+r 1031 0 5 0 2863 0\r
+r 1031 0 7 0 1030 0\r
+r 3080 0 2 0 111 0\r
+r 3080 0 3 0 1062 0\r
+r 1032 0 2 0 8 0\r
+r 1032 0 3 0 1031 0\r
+r 1032 0 5 0 2858 0\r
+r 1032 0 7 0 1030 0\r
+r 3081 0 2 0 111 0\r
+r 3081 0 3 0 1067 0\r
+r 1033 0 2 0 111 0\r
+r 1033 0 2 0 8 0\r
+r 1033 0 3 0 1034 0\r
+r 1033 0 5 0 2900 0\r
+r 1033 0 7 0 1030 0\r
+r 3082 0 2 0 111 0\r
+r 3082 0 3 0 1070 0\r
+r 1034 0 2 0 110 0\r
+r 1034 0 2 0 8 0\r
+r 1034 0 3 0 1033 0\r
+r 1034 0 5 0 2894 0\r
+r 1034 0 7 0 1030 0\r
+r 3083 0 2 0 111 0\r
+r 3083 0 3 0 1073 0\r
+r 1035 0 2 0 8 0\r
+r 1035 0 3 0 1036 0\r
+r 1035 0 5 0 2886 0\r
+r 1035 0 7 0 1030 0\r
+r 3084 0 2 0 184 0\r
+r 3084 0 3 0 1081 0\r
+r 1036 0 2 0 8 0\r
+r 1036 0 3 0 1035 0\r
+r 1036 0 5 0 2901 0\r
+r 1036 0 7 0 1030 0\r
+r 3085 0 2 0 184 0\r
+r 3085 0 3 0 1086 0\r
+r 1037 0 2 0 8 0\r
+r 1037 0 3 0 1038 0\r
+r 1037 0 5 0 2853 0\r
+r 1037 0 7 0 1030 0\r
+r 3086 0 2 0 184 0\r
+r 3086 0 3 0 1088 0\r
+r 1038 0 2 0 8 0\r
+r 1038 0 3 0 1037 0\r
+r 1038 0 5 0 2854 0\r
+r 1038 0 7 0 1030 0\r
+r 3087 0 2 0 7 0\r
+r 3087 0 3 0 1111 0\r
+r 1039 0 2 0 8 0\r
+r 1039 0 3 0 1040 0\r
+r 1039 0 5 0 2876 0\r
+r 1039 0 7 0 1030 0\r
+r 3088 0 2 0 3100 0\r
+r 3088 0 3 0 1113 0\r
+r 3088 0 60 0 3089 0\r
+r 1040 0 2 0 8 0\r
+r 1040 0 3 0 1039 0\r
+r 1040 0 5 0 2861 0\r
+r 1040 0 7 0 1030 0\r
+r 3089 0 2 0 3088 0\r
+r 3089 0 3 0 1115 0\r
+r 1041 0 2 0 8 0\r
+r 1041 0 3 0 1042 0\r
+r 1041 0 5 0 2889 0\r
+r 1041 0 7 0 1030 0\r
+r 3090 0 2 0 7 0\r
+r 3090 0 3 0 1118 0\r
+r 3090 0 60 0 3097 0\r
+r 3090 0 60 0 3093 0\r
+r 3090 0 60 0 3092 0\r
+r 3090 0 60 0 3091 0\r
+r 1042 0 2 0 8 0\r
+r 1042 0 3 0 1041 0\r
+r 1042 0 5 0 2870 0\r
+r 1042 0 7 0 1030 0\r
+r 3091 0 2 0 3090 0\r
+r 3091 0 3 0 1129 0\r
+r 1043 0 2 0 8 0\r
+r 1043 0 3 0 1044 0\r
+r 1043 0 5 0 2880 0\r
+r 1043 0 7 0 1030 0\r
+r 3092 0 2 0 3090 0\r
+r 3092 0 3 0 1131 0\r
+r 1044 0 2 0 8 0\r
+r 1044 0 3 0 1043 0\r
+r 1044 0 5 0 2899 0\r
+r 1044 0 7 0 1030 0\r
+r 3093 0 2 0 3090 0\r
+r 3093 0 3 0 1133 0\r
+r 1045 0 2 0 8 0\r
+r 1045 0 3 0 1046 0\r
+r 1045 0 5 0 2877 0\r
+r 1045 0 7 0 1030 0\r
+r 3094 0 2 0 184 0\r
+r 3094 0 3 0 1147 0\r
+r 1046 0 2 0 8 0\r
+r 1046 0 3 0 1045 0\r
+r 1046 0 5 0 2887 0\r
+r 1046 0 7 0 1030 0\r
+r 3095 0 2 0 184 0\r
+r 3095 0 3 0 1153 0\r
+r 1047 0 2 0 8 0\r
+r 1047 0 3 0 1048 0\r
+r 1047 0 5 0 2879 0\r
+r 1047 0 7 0 1030 0\r
+r 3096 0 2 0 7 0\r
+r 3096 0 3 0 1157 0\r
+r 1048 0 2 0 8 0\r
+r 1048 0 3 0 1047 0\r
+r 1048 0 5 0 2856 0\r
+r 1048 0 7 0 1030 0\r
+r 3097 0 2 0 3090 0\r
+r 3097 0 3 0 1158 0\r
+r 1049 0 4 0 317 0\r
+r 1049 0 5 0 2873 0\r
+r 1049 0 7 0 1013 0\r
+r 3098 0 2 0 184 0\r
+r 3098 0 3 0 1161 0\r
+r 1050 0 474 0 1051 0\r
+r 1050 0 4 0 912 0\r
+r 1050 0 4 0 909 0\r
+r 1050 0 5 0 2869 0\r
+r 1050 0 7 0 1013 0\r
+r 3099 0 2 0 184 0\r
+r 3099 0 3 0 1162 0\r
+r 1051 0 1 0 903 0\r
+r 1051 0 2 0 110 0\r
+r 1051 0 3 0 3076 0\r
+r 1051 0 1051 0 1052 0\r
+r 1051 0 3076 0 1052 0\r
+r 1051 0 476 0 1050 0\r
+r 3100 0 2 0 111 0\r
+r 3100 0 3 0 1166 0\r
+r 3100 0 60 0 3088 0\r
+r 3100 0 60 0 1144 0\r
+r 1052 0 1 0 913 0\r
+r 1052 0 1051 0 1051 0\r
+r 1052 0 3076 0 1051 0\r
+r 1052 0 661 0 1053 0\r
+r 3101 0 2 0 184 0\r
+r 3101 0 3 0 1167 0\r
+r 1053 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" overflow="visible" version="1.1"><g transform="translate(-0.0,-0.0)"><rect x="-0.5" y="-0.5" width="1.0" height="1.0" fill="rgb(255,102,0)" stroke="black" stroke-width="0.1"/></g></svg>\r
+r 1053 0 3019 0 1052 0\r
+r 3102 0 2 0 184 0\r
+r 3102 0 3 0 1168 0\r
+r 3102 0 60 0 3108 0\r
+r 3102 0 60 0 3107 0\r
+r 3102 0 60 0 3106 0\r
+r 3102 0 60 0 3105 0\r
+r 3102 0 60 0 3104 0\r
+r 3102 0 60 0 3103 0\r
+r 1054 0 4 0 226 0\r
+r 1054 0 5 0 2893 0\r
+r 1054 0 7 0 1013 0\r
+r 3103 0 2 0 3102 0\r
+r 3103 0 3 0 1169 0\r
+r 1055 0 9 0 1077 0\r
+r 1055 0 9 0 1075 0\r
+r 1055 0 9 0 1072 0\r
+r 1055 0 9 0 1071 0\r
+r 1055 0 9 0 1069 0\r
+r 1055 0 9 0 1068 0\r
+r 1055 0 9 0 1066 0\r
+r 1055 0 9 0 1064 0\r
+r 1055 0 9 0 1061 0\r
+r 1055 0 1 0 57 0\r
+r 1055 0 5 0 2895 0\r
+r 1055 0 7 0 1013 0\r
+r 3104 0 2 0 3102 0\r
+r 3104 0 3 0 1170 0\r
+r 1056 0 2 0 8 0\r
+r 1056 0 2931 0 1058 0\r
+r 1056 0 3 0 3077 0\r
+r 1056 0 5 0 2859 0\r
+r 1056 0 7 0 1013 0\r
+r 3105 0 2 0 3102 0\r
+r 3105 0 3 0 1171 0\r
+r 1057 0 2 0 8 0\r
+r 1057 0 2931 0 1059 0\r
+r 1057 0 3 0 3078 0\r
+r 1057 0 5 0 2868 0\r
+r 1057 0 7 0 1013 0\r
+r 3106 0 2 0 3102 0\r
+r 3106 0 3 0 1172 0\r
+r 1058 0 1 0 326 0\r
+r 1058 0 5 0 2890 0\r
+r 1058 0 7 0 1013 0\r
+r 1058 0 127 0 1056 0\r
+r 3107 0 2 0 3102 0\r
+r 3107 0 3 0 1173 0\r
+r 1059 0 1 0 326 0\r
+r 1059 0 5 0 2855 0\r
+r 1059 0 7 0 1013 0\r
+r 1059 0 127 0 1057 0\r
+r 3108 0 2 0 3102 0\r
+r 3108 0 3 0 1174 0\r
+r 1060 0 1 0 325 0\r
+r 1060 0 2 0 110 0\r
+r 1060 0 3 0 3079 0\r
+r 1060 0 1060 0 1061 0\r
+r 1060 0 3077 0 482 0\r
+r 1060 0 3079 0 1061 0\r
+r 3109 0 2 0 184 0\r
+r 3109 0 3 0 1175 0\r
+r 1061 0 1 0 323 0\r
+r 1061 0 1060 0 1060 0\r
+r 1061 0 5 0 2871 0\r
+r 1061 0 3079 0 1060 0\r
+r 1061 0 7 0 1055 0\r
+r 3110 0 2 0 184 0\r
+r 3110 0 3 0 1176 0\r
+r 1062 0 3080 0 1065 0\r
+r 1062 0 1 0 325 0\r
+r 1062 0 2 0 110 0\r
+r 1062 0 3 0 3080 0\r
+r 1062 0 3077 0 466 0\r
+r 1062 0 1062 0 1063 0\r
+r 3111 0 2 0 184 0\r
+r 3111 0 3 0 1177 0\r
+r 1063 0 3080 0 1062 0\r
+r 1063 0 1 0 328 0\r
+r 1063 0 330 0 1026 0\r
+r 1063 0 332 0 1064 0\r
+r 1063 0 1062 0 1065 0\r
+r 3112 0 2 0 184 0\r
+r 3112 0 3 0 1178 0\r
+r 1064 0 1 0 323 0\r
+r 1064 0 2962 0 1063 0\r
+r 1064 0 5 0 2885 0\r
+r 1064 0 7 0 1055 0\r
+r 3113 0 2 0 184 0\r
+r 3113 0 3 0 1183 0\r
+r 1065 0 3080 0 1063 0\r
+r 1065 0 1 0 328 0\r
+r 1065 0 330 0 1027 0\r
+r 1065 0 332 0 1066 0\r
+r 1065 0 1062 0 1062 0\r
+r 3114 0 2 0 184 0\r
+r 3114 0 3 0 1184 0\r
+r 1066 0 1 0 323 0\r
+r 1066 0 2962 0 1065 0\r
+r 1066 0 5 0 2862 0\r
+r 1066 0 7 0 1055 0\r
+r 3115 0 2 0 184 0\r
+r 3115 0 3 0 1185 0\r
+r 1067 0 3081 0 1069 0\r
+r 1067 0 1 0 325 0\r
+r 1067 0 2 0 110 0\r
+r 1067 0 3 0 3081 0\r
+r 1067 0 1067 0 1068 0\r
+r 1067 0 3077 0 467 0\r
+r 3116 0 2 0 184 0\r
+r 3116 0 3 0 1186 0\r
+r 1068 0 3081 0 1067 0\r
+r 1068 0 1 0 323 0\r
+r 1068 0 1067 0 1069 0\r
+r 1068 0 5 0 2888 0\r
+r 1068 0 7 0 1055 0\r
+r 3117 0 2 0 184 0\r
+r 3117 0 3 0 1187 0\r
+r 1069 0 3081 0 1068 0\r
+r 1069 0 1 0 323 0\r
+r 1069 0 1067 0 1067 0\r
+r 1069 0 5 0 2872 0\r
+r 1069 0 7 0 1055 0\r
+r 3118 0 2 0 184 0\r
+r 3118 0 3 0 1274 0\r
+r 1070 0 1 0 325 0\r
+r 1070 0 3082 0 1072 0\r
+r 1070 0 2 0 110 0\r
+r 1070 0 3 0 3082 0\r
+r 1070 0 3077 0 376 0\r
+r 1070 0 1070 0 1071 0\r
+r 3119 0 2 0 184 0\r
+r 3119 0 3 0 1276 0\r
+r 1071 0 1 0 323 0\r
+r 1071 0 3082 0 1070 0\r
+r 1071 0 5 0 2867 0\r
+r 1071 0 1070 0 1072 0\r
+r 1071 0 7 0 1055 0\r
+r 3120 0 2 0 184 0\r
+r 3120 0 3 0 1280 0\r
+r 1072 0 1 0 323 0\r
+r 1072 0 3082 0 1071 0\r
+r 1072 0 5 0 2898 0\r
+r 1072 0 1070 0 1070 0\r
+r 1072 0 7 0 1055 0\r
+r 3121 0 2 0 184 0\r
+r 3121 0 3 0 1281 0\r
+r 1073 0 1 0 325 0\r
+r 1073 0 1073 0 1074 0\r
+r 1073 0 2 0 110 0\r
+r 1073 0 3083 0 1076 0\r
+r 1073 0 3 0 3083 0\r
+r 1073 0 3078 0 941 0\r
+r 3122 0 2 0 184 0\r
+r 3122 0 3 0 1282 0\r
+r 1074 0 1073 0 1076 0\r
+r 1074 0 1 0 328 0\r
+r 1074 0 330 0 1028 0\r
+r 1074 0 3083 0 1073 0\r
+r 1074 0 332 0 1075 0\r
+r 3123 0 2 0 184 0\r
+r 3123 0 3 0 1283 0\r
+r 1075 0 1 0 323 0\r
+r 1075 0 2962 0 1074 0\r
+r 1075 0 5 0 2864 0\r
+r 1075 0 7 0 1055 0\r
+r 3124 0 2 0 184 0\r
+r 3124 0 3 0 1302 0\r
+r 1076 0 1073 0 1073 0\r
+r 1076 0 1 0 328 0\r
+r 1076 0 330 0 1028 0\r
+r 1076 0 3083 0 1074 0\r
+r 1076 0 332 0 1077 0\r
+r 3125 0 2 0 184 0\r
+r 3125 0 3 0 1304 0\r
+r 1077 0 1 0 323 0\r
+r 1077 0 2962 0 1076 0\r
+r 1077 0 5 0 2882 0\r
+r 1077 0 7 0 1055 0\r
+r 3126 0 2 0 184 0\r
+r 3126 0 3 0 1308 0\r
+r 1078 0 104 0 1080 0\r
+r 1078 0 104 0 1079 0\r
+r 1078 0 2907 0 1079 0\r
+r 1078 0 4 0 57 0\r
+r 1078 0 5 0 2878 0\r
+r 1078 0 70 0 1083 0\r
+r 1078 0 7 0 1013 0\r
+r 3127 0 2 0 184 0\r
+r 3127 0 3 0 1310 0\r
+r 1079 0 1 0 106 0\r
+r 1079 0 28 0 1078 0\r
+r 1079 0 365 0 1078 0\r
+r 1079 0 38 0 9 0\r
+r 3128 0 2 0 184 0\r
+r 3128 0 3 0 1312 0\r
+r 1080 0 1 0 106 0\r
+r 1080 0 365 0 1078 0\r
+r 1080 0 38 0 1081 0\r
+r 1080 0 39 0 107 0\r
+r 3129 0 2 0 184 0\r
+r 3129 0 3 0 1315 0\r
+r 1081 0 2921 0 1083 0\r
+r 1081 0 1 0 42 0\r
+r 1081 0 2 0 94 0\r
+r 1081 0 3 0 3084 0\r
+r 1081 0 28 0 14 0\r
+r 1081 0 5 0 2883 0\r
+r 1081 0 2911 0 1080 0\r
+r 1081 0 7 0 1013 0\r
+r 3130 0 2 0 184 0\r
+r 3130 0 3 0 1317 0\r
+r 1082 0 1 0 14 0 b true\r
+r 1082 0 2922 0 1083 0\r
+r 3131 0 2 0 184 0\r
+r 3131 0 3 0 1335 0\r
+r 1083 0 2920 0 1078 0\r
+r 1083 0 72 0 1082 0\r
+r 1083 0 1 0 151 0\r
+r 1083 0 71 0 1081 0\r
+r 3132 0 2 0 184 0\r
+r 3132 0 3 0 1341 0\r
+r 1084 0 104 0 1087 0\r
+r 1084 0 104 0 1085 0\r
+r 1084 0 4 0 25 0\r
+r 1084 0 5 0 2881 0\r
+r 1084 0 7 0 1013 0\r
+r 3133 0 2 0 184 0\r
+r 3133 0 3 0 1344 0\r
+r 1085 0 1 0 106 0\r
+r 1085 0 365 0 1084 0\r
+r 1085 0 38 0 1086 0\r
+r 1085 0 39 0 107 0\r
+r 3134 0 2 0 184 0\r
+r 3134 0 3 0 1346 0\r
+r 1086 0 2 0 94 0\r
+r 1086 0 3 0 3085 0\r
+r 1086 0 28 0 10 0\r
+r 1086 0 5 0 2852 0\r
+r 1086 0 2911 0 1306 0\r
+r 1086 0 2911 0 1085 0\r
+r 1086 0 7 0 1013 0\r
+r 3135 0 2 0 111 0\r
+r 3135 0 3 0 1360 0\r
+r 1087 0 1 0 106 0\r
+r 1087 0 365 0 1084 0\r
+r 1087 0 38 0 1088 0\r
+r 1087 0 39 0 225 0\r
+r 3136 0 2 0 507 0\r
+r 3136 0 3 0 1363 0\r
+r 1088 0 2 0 94 0\r
+r 1088 0 3 0 3086 0\r
+r 1088 0 28 0 190 0\r
+r 1088 0 5 0 2884 0\r
+r 1088 0 2911 0 1087 0\r
+r 1088 0 7 0 1013 0\r
+r 3137 0 2 0 507 0\r
+r 3137 0 3 0 1364 0\r
+r 1089 0 9 0 1342 0\r
+r 1089 0 9 0 1339 0\r
+r 1089 0 9 0 1338 0\r
+r 1089 0 9 0 1336 0\r
+r 1089 0 9 0 1331 0\r
+r 1089 0 9 0 1326 0\r
+r 1089 0 9 0 1322 0\r
+r 1089 0 9 0 1318 0\r
+r 1089 0 9 0 1313 0\r
+r 1089 0 9 0 1298 0\r
+r 1089 0 9 0 1296 0\r
+r 1089 0 9 0 1295 0\r
+r 1089 0 9 0 1293 0\r
+r 1089 0 9 0 1292 0\r
+r 1089 0 9 0 1284 0\r
+r 1089 0 9 0 1272 0\r
+r 1089 0 9 0 1269 0\r
+r 1089 0 9 0 1267 0\r
+r 1089 0 9 0 1265 0\r
+r 1089 0 9 0 1263 0\r
+r 1089 0 9 0 1261 0\r
+r 1089 0 9 0 1257 0\r
+r 1089 0 9 0 1253 0\r
+r 1089 0 9 0 1250 0\r
+r 1089 0 9 0 1247 0\r
+r 1089 0 9 0 1245 0\r
+r 1089 0 9 0 1238 0\r
+r 1089 0 9 0 1231 0\r
+r 1089 0 9 0 1226 0\r
+r 1089 0 9 0 1221 0\r
+r 1089 0 9 0 1216 0\r
+r 1089 0 9 0 1214 0\r
+r 1089 0 9 0 1212 0\r
+r 1089 0 9 0 1210 0\r
+r 1089 0 9 0 1208 0\r
+r 1089 0 9 0 1200 0\r
+r 1089 0 9 0 1198 0\r
+r 1089 0 9 0 1196 0\r
+r 1089 0 9 0 1194 0\r
+r 1089 0 9 0 1192 0\r
+r 1089 0 9 0 1190 0\r
+r 1089 0 9 0 1189 0\r
+r 1089 0 9 0 1188 0\r
+r 1089 0 9 0 1179 0\r
+r 1089 0 9 0 1163 0\r
+r 1089 0 9 0 1160 0\r
+r 1089 0 9 0 1159 0\r
+r 1089 0 9 0 1150 0\r
+r 1089 0 9 0 1145 0\r
+r 1089 0 9 0 1142 0\r
+r 1089 0 9 0 1139 0\r
+r 1089 0 9 0 1138 0\r
+r 1089 0 9 0 1134 0\r
+r 1089 0 9 0 1127 0\r
+r 1089 0 9 0 1126 0\r
+r 1089 0 9 0 1125 0\r
+r 1089 0 9 0 1124 0\r
+r 1089 0 9 0 1123 0\r
+r 1089 0 9 0 1122 0\r
+r 1089 0 9 0 1121 0\r
+r 1089 0 9 0 1120 0\r
+r 1089 0 9 0 1119 0\r
+r 1089 0 9 0 1116 0\r
+r 1089 0 9 0 1109 0\r
+r 1089 0 9 0 1108 0\r
+r 1089 0 9 0 1107 0\r
+r 1089 0 9 0 1106 0\r
+r 1089 0 1 0 48 0\r
+r 1089 0 5 0 1090 0\r
+r 1089 0 7 0 1091 0\r
+r 3138 0 2 0 507 0\r
+r 3138 0 3 0 1365 0\r
+r 1090 0 2904 0 1089 0\r
+r 1090 0 1 0 10 0 s Types\r
+r 3139 0 2 0 507 0\r
+r 3139 0 3 0 1368 0\r
+r 1091 0 97 0 1096 0\r
+r 1091 0 1 0 69 0\r
+r 1091 0 9 0 1103 0\r
+r 1091 0 9 0 1100 0\r
+r 1091 0 9 0 1092 0\r
+r 1091 0 9 0 1089 0\r
+r 1091 0 93 0 1097 0\r
+r 1091 0 5 0 1094 0\r
+r 1091 0 6 0 1095 0\r
+r 1091 0 2919 0 1098 0\r
+r 1091 0 7 0 91 0\r
+r 1091 0 7 0 77 0\r
+r 3140 0 2 0 507 0\r
+r 3140 0 3 0 1369 0\r
+r 1092 0 9 0 1346 0\r
+r 1092 0 9 0 1344 0\r
+r 1092 0 9 0 1341 0\r
+r 1092 0 9 0 1335 0\r
+r 1092 0 9 0 1317 0\r
+r 1092 0 9 0 1315 0\r
+r 1092 0 9 0 1312 0\r
+r 1092 0 9 0 1310 0\r
+r 1092 0 9 0 1308 0\r
+r 1092 0 9 0 1304 0\r
+r 1092 0 9 0 1302 0\r
+r 1092 0 9 0 1283 0\r
+r 1092 0 9 0 1282 0\r
+r 1092 0 9 0 1281 0\r
+r 1092 0 9 0 1280 0\r
+r 1092 0 9 0 1276 0\r
+r 1092 0 9 0 1274 0\r
+r 1092 0 9 0 1187 0\r
+r 1092 0 9 0 1186 0\r
+r 1092 0 9 0 1185 0\r
+r 1092 0 9 0 1184 0\r
+r 1092 0 9 0 1183 0\r
+r 1092 0 9 0 1178 0\r
+r 1092 0 9 0 1177 0\r
+r 1092 0 9 0 1176 0\r
+r 1092 0 9 0 1175 0\r
+r 1092 0 9 0 1174 0\r
+r 1092 0 9 0 1173 0\r
+r 1092 0 9 0 1172 0\r
+r 1092 0 9 0 1171 0\r
+r 1092 0 9 0 1170 0\r
+r 1092 0 9 0 1169 0\r
+r 1092 0 9 0 1168 0\r
+r 1092 0 9 0 1167 0\r
+r 1092 0 9 0 1166 0\r
+r 1092 0 9 0 1162 0\r
+r 1092 0 9 0 1161 0\r
+r 1092 0 9 0 1158 0\r
+r 1092 0 9 0 1157 0\r
+r 1092 0 9 0 1153 0\r
+r 1092 0 9 0 1147 0\r
+r 1092 0 9 0 1144 0\r
+r 1092 0 9 0 1141 0\r
+r 1092 0 9 0 1133 0\r
+r 1092 0 9 0 1131 0\r
+r 1092 0 9 0 1129 0\r
+r 1092 0 9 0 1118 0\r
+r 1092 0 9 0 1115 0\r
+r 1092 0 9 0 1113 0\r
+r 1092 0 9 0 1111 0\r
+r 1092 0 1 0 55 0\r
+r 1092 0 5 0 1093 0\r
+r 1092 0 7 0 1091 0\r
+r 3141 0 2 0 507 0\r
+r 3141 0 3 0 1370 0\r
+r 1093 0 2904 0 1092 0\r
+r 1093 0 1 0 10 0 s Relations\r
+r 3142 0 2 0 507 0\r
+r 3142 0 3 0 1371 0\r
+r 1094 0 2904 0 1091 0\r
+r 1094 0 1 0 10 0 s Webmon-1.0\r
+r 3143 0 2 0 507 0\r
+r 3143 0 3 0 1372 0\r
+r 1095 0 2905 0 1091 0\r
+r 1095 0 1 0 88 0 s http://www.vtt.fi/Simantics/Webmon/1.0\r
+r 3144 0 2 0 507 0\r
+r 3144 0 3 0 1375 0\r
+r 1096 0 1 0 99 0 s 1.0\r
+r 1096 0 2926 0 1091 0\r
+r 3145 0 2 0 507 0\r
+r 3145 0 3 0 1376 0\r
+r 1097 0 1 0 10 0 s org.simantics.webmon.stubs.WebmonResource\r
+r 1097 0 2925 0 1091 0\r
+r 3146 0 2 0 184 0\r
+r 3146 0 3 0 1377 0\r
+r 3146 0 60 0 3155 0\r
+r 3146 0 60 0 3154 0\r
+r 3146 0 60 0 3153 0\r
+r 3146 0 60 0 3152 0\r
+r 3146 0 60 0 3151 0\r
+r 3146 0 60 0 3150 0\r
+r 3146 0 60 0 3149 0\r
+r 3146 0 60 0 3148 0\r
+r 3146 0 60 0 3147 0\r
+r 1098 0 65 0 1091 0\r
+r 1098 0 1 0 62 0\r
+r 1098 0 5 0 2606 0\r
+r 1098 0 6 0 1099 0\r
+r 1098 0 7 0 85 0\r
+r 3147 0 2 0 3146 0\r
+r 3147 0 3 0 1378 0\r
+r 1099 0 2905 0 1098 0\r
+r 1099 0 1 0 88 0 s http://www.vtt.fi/Simantics/Webmon/1.0\r
+r 3148 0 2 0 3146 0\r
+r 3148 0 3 0 1379 0\r
+r 1100 0 1 0 381 0\r
+r 1100 0 388 0 1103 0\r
+r 1100 0 5 0 1101 0\r
+r 1100 0 78 0 1102 0\r
+r 1100 0 7 0 1091 0\r
+r 1100 0 7 0 374 0\r
+r 3149 0 2 0 3146 0\r
+r 3149 0 3 0 1380 0\r
+r 1101 0 2904 0 1100 0\r
+r 1101 0 1 0 10 0 s Webmon Project\r
+r 3150 0 2 0 3146 0\r
+r 3150 0 3 0 1381 0\r
+r 1102 0 1 0 10 0 s Webmon data visualization project.\r
+r 1102 0 2923 0 1100 0\r
+r 3151 0 2 0 3146 0\r
+r 3151 0 3 0 1382 0\r
+r 1103 0 1 0 381 0\r
+r 1103 0 5 0 1104 0\r
+r 1103 0 389 0 1100 0\r
+r 1103 0 78 0 1105 0\r
+r 1103 0 7 0 1091 0\r
+r 3152 0 2 0 3146 0\r
+r 3152 0 3 0 1383 0\r
+r 1104 0 2904 0 1103 0\r
+r 1104 0 1 0 10 0 s Webmon Feature\r
+r 3153 0 2 0 3146 0\r
+r 3153 0 3 0 1384 0\r
+r 1105 0 1 0 10 0 s Webmon data visualization feature.\r
+r 1105 0 2923 0 1103 0\r
+r 3154 0 2 0 3146 0\r
+r 3154 0 3 0 1385 0\r
+r 1106 0 4 0 57 0\r
+r 1106 0 5 0 2570 0\r
+r 1106 0 7 0 1089 0\r
+r 3155 0 2 0 3146 0\r
+r 3155 0 3 0 1386 0\r
+r 1107 0 4 0 57 0\r
+r 1107 0 5 0 2608 0\r
+r 1107 0 7 0 1089 0\r
+r 3156 0 2 0 111 0\r
+r 3156 0 3 0 1393 0\r
+r 1108 0 4 0 57 0\r
+r 1108 0 5 0 2585 0\r
+r 1108 0 7 0 1089 0\r
+r 3157 0 2 0 507 0\r
+r 3157 0 3 0 1399 0\r
+r 1109 0 136 0 1115 0\r
+r 1109 0 136 0 1113 0\r
+r 1109 0 136 0 1111 0\r
+r 1109 0 104 0 1114 0\r
+r 1109 0 104 0 1112 0\r
+r 1109 0 104 0 1110 0\r
+r 1109 0 129 0 1123 0\r
+r 1109 0 129 0 1122 0\r
+r 1109 0 129 0 1121 0\r
+r 1109 0 129 0 1120 0\r
+r 1109 0 137 0 1115 0\r
+r 1109 0 137 0 1113 0\r
+r 1109 0 137 0 1111 0\r
+r 1109 0 145 0 1109 0\r
+r 1109 0 2908 0 1113 0\r
+r 1109 0 2908 0 1111 0\r
+r 1109 0 4 0 25 0\r
+r 1109 0 5 0 2505 0\r
+r 1109 0 7 0 1089 0\r
+r 3158 0 2 0 111 0\r
+r 3158 0 3 0 1406 0\r
+r 1110 0 1 0 106 0\r
+r 1110 0 365 0 1109 0\r
+r 1110 0 38 0 1111 0\r
+r 3159 0 2 0 507 0\r
+r 3159 0 3 0 1412 0\r
+r 1111 0 2 0 9 0\r
+r 1111 0 3 0 3087 0\r
+r 1111 0 139 0 1109 0\r
+r 1111 0 28 0 1125 0\r
+r 1111 0 5 0 2573 0\r
+r 1111 0 29 0 1109 0\r
+r 1111 0 141 0 1109 0\r
+r 1111 0 7 0 1092 0\r
+r 1111 0 2911 0 1110 0\r
+r 3160 0 2 0 507 0\r
+r 3160 0 3 0 1416 0\r
+r 1112 0 1 0 106 0\r
+r 1112 0 365 0 1109 0\r
+r 1112 0 38 0 1113 0\r
+r 3161 0 2 0 507 0\r
+r 3161 0 3 0 1420 0\r
+r 1113 0 2 0 1166 0\r
+r 1113 0 3 0 3088 0\r
+r 1113 0 139 0 1109 0\r
+r 1113 0 60 0 1115 0\r
+r 1113 0 28 0 1139 0\r
+r 1113 0 5 0 2589 0\r
+r 1113 0 29 0 1109 0\r
+r 1113 0 141 0 1109 0\r
+r 1113 0 7 0 1092 0\r
+r 1113 0 2911 0 1112 0\r
+r 3162 0 2 0 507 0\r
+r 3162 0 3 0 1424 0\r
+r 1114 0 1 0 106 0\r
+r 1114 0 365 0 1109 0\r
+r 1114 0 38 0 1115 0\r
+r 1114 0 39 0 225 0\r
+r 3163 0 2 0 111 0\r
+r 3163 0 3 0 1433 0\r
+r 1115 0 2 0 1113 0\r
+r 1115 0 3 0 3089 0\r
+r 1115 0 139 0 1109 0\r
+r 1115 0 5 0 2503 0\r
+r 1115 0 141 0 1109 0\r
+r 1115 0 7 0 1092 0\r
+r 1115 0 2911 0 1114 0\r
+r 3164 0 2 0 507 0\r
+r 3164 0 3 0 1439 0\r
+r 1116 0 104 0 1117 0\r
+r 1116 0 129 0 1265 0\r
+r 1116 0 129 0 1134 0\r
+r 1116 0 129 0 1127 0\r
+r 1116 0 137 0 1118 0\r
+r 1116 0 145 0 1116 0\r
+r 1116 0 2907 0 1157 0\r
+r 1116 0 2908 0 1118 0\r
+r 1116 0 4 0 25 0\r
+r 1116 0 5 0 2501 0\r
+r 1116 0 7 0 1089 0\r
+r 3165 0 2 0 507 0\r
+r 3165 0 3 0 1443 0\r
+r 1117 0 1 0 106 0\r
+r 1117 0 365 0 1116 0\r
+r 1117 0 38 0 1118 0\r
+r 3166 0 2 0 507 0\r
+r 3166 0 3 0 1447 0\r
+r 1118 0 2 0 9 0\r
+r 1118 0 3 0 3090 0\r
+r 1118 0 60 0 1158 0\r
+r 1118 0 60 0 1133 0\r
+r 1118 0 60 0 1131 0\r
+r 1118 0 60 0 1129 0\r
+r 1118 0 28 0 1119 0\r
+r 1118 0 5 0 2586 0\r
+r 1118 0 29 0 1116 0\r
+r 1118 0 141 0 1116 0\r
+r 1118 0 7 0 1092 0\r
+r 1118 0 2911 0 1117 0\r
+r 3167 0 2 0 507 0\r
+r 3167 0 3 0 1451 0\r
+r 1119 0 129 0 1284 0\r
+r 1119 0 129 0 1163 0\r
+r 1119 0 129 0 1160 0\r
+r 1119 0 129 0 1159 0\r
+r 1119 0 145 0 1119 0\r
+r 1119 0 2907 0 1118 0\r
+r 1119 0 4 0 25 0\r
+r 1119 0 5 0 2500 0\r
+r 1119 0 7 0 1089 0\r
+r 3168 0 2 0 507 0\r
+r 3168 0 3 0 1455 0\r
+r 1120 0 129 0 1194 0\r
+r 1120 0 129 0 1190 0\r
+r 1120 0 145 0 1120 0\r
+r 1120 0 4 0 1109 0\r
+r 1120 0 5 0 2543 0\r
+r 1120 0 7 0 1089 0\r
+r 3169 0 2 0 507 0\r
+r 3169 0 3 0 1459 0\r
+r 1121 0 129 0 1198 0\r
+r 1121 0 129 0 1196 0\r
+r 1121 0 129 0 1192 0\r
+r 1121 0 145 0 1121 0\r
+r 1121 0 4 0 1109 0\r
+r 1121 0 5 0 2556 0\r
+r 1121 0 7 0 1089 0\r
+r 3170 0 2 0 111 0\r
+r 3170 0 3 0 1465 0\r
+r 1122 0 129 0 1192 0\r
+r 1122 0 129 0 1190 0\r
+r 1122 0 145 0 1122 0\r
+r 1122 0 4 0 1109 0\r
+r 1122 0 5 0 2509 0\r
+r 1122 0 7 0 1089 0\r
+r 3171 0 2 0 507 0\r
+r 3171 0 3 0 1471 0\r
+r 1123 0 129 0 1198 0\r
+r 1123 0 129 0 1196 0\r
+r 1123 0 129 0 1194 0\r
+r 1123 0 145 0 1123 0\r
+r 1123 0 4 0 1109 0\r
+r 1123 0 5 0 2513 0\r
+r 1123 0 7 0 1089 0\r
+r 3172 0 2 0 507 0\r
+r 3172 0 3 0 1475 0\r
+r 1124 0 129 0 1208 0\r
+r 1124 0 129 0 1200 0\r
+r 1124 0 145 0 1124 0\r
+r 1124 0 4 0 1125 0\r
+r 1124 0 5 0 2551 0\r
+r 1124 0 7 0 1089 0\r
+r 3173 0 2 0 507 0\r
+r 3173 0 3 0 1479 0\r
+r 1125 0 104 0 1311 0\r
+r 1125 0 104 0 1309 0\r
+r 1125 0 104 0 1307 0\r
+r 1125 0 104 0 1306 0\r
+r 1125 0 104 0 1305 0\r
+r 1125 0 129 0 1126 0\r
+r 1125 0 129 0 1124 0\r
+r 1125 0 2907 0 1111 0\r
+r 1125 0 2908 0 1157 0\r
+r 1125 0 2908 0 1141 0\r
+r 1125 0 4 0 25 0\r
+r 1125 0 5 0 2512 0\r
+r 1125 0 7 0 1089 0\r
+r 3174 0 2 0 111 0\r
+r 3174 0 3 0 1485 0\r
+r 1126 0 129 0 1214 0\r
+r 1126 0 129 0 1212 0\r
+r 1126 0 129 0 1210 0\r
+r 1126 0 145 0 1126 0\r
+r 1126 0 4 0 1125 0\r
+r 1126 0 5 0 2553 0\r
+r 1126 0 7 0 1089 0\r
+r 3175 0 2 0 507 0\r
+r 3175 0 3 0 1491 0\r
+r 1127 0 104 0 1132 0\r
+r 1127 0 104 0 1130 0\r
+r 1127 0 104 0 1128 0\r
+r 1127 0 129 0 1263 0\r
+r 1127 0 4 0 1116 0\r
+r 1127 0 5 0 2548 0\r
+r 1127 0 7 0 1089 0\r
+r 3176 0 2 0 507 0\r
+r 3176 0 3 0 1495 0\r
+r 1128 0 1 0 106 0\r
+r 1128 0 365 0 1127 0\r
+r 1128 0 38 0 1129 0\r
+r 1128 0 39 0 225 0\r
+r 3177 0 2 0 507 0\r
+r 3177 0 3 0 1499 0\r
+r 1129 0 2 0 1118 0\r
+r 1129 0 3 0 3091 0\r
+r 1129 0 5 0 2526 0\r
+r 1129 0 7 0 1092 0\r
+r 1129 0 2911 0 1135 0\r
+r 1129 0 2911 0 1128 0\r
+r 3178 0 2 0 111 0\r
+r 3178 0 3 0 1505 0\r
+r 1130 0 1 0 106 0\r
+r 1130 0 365 0 1127 0\r
+r 1130 0 38 0 1131 0\r
+r 1130 0 39 0 225 0\r
+r 3179 0 2 0 507 0\r
+r 3179 0 3 0 1511 0\r
+r 1131 0 2 0 1118 0\r
+r 1131 0 3 0 3092 0\r
+r 1131 0 5 0 2532 0\r
+r 1131 0 141 0 1200 0\r
+r 1131 0 7 0 1092 0\r
+r 1131 0 2911 0 1136 0\r
+r 1131 0 2911 0 1130 0\r
+r 3180 0 2 0 507 0\r
+r 3180 0 3 0 1515 0\r
+r 1132 0 1 0 106 0\r
+r 1132 0 365 0 1127 0\r
+r 1132 0 38 0 1133 0\r
+r 1132 0 39 0 350 0\r
+r 3181 0 2 0 507 0\r
+r 3181 0 3 0 1519 0\r
+r 1133 0 2 0 1118 0\r
+r 1133 0 3 0 3093 0\r
+r 1133 0 5 0 2538 0\r
+r 1133 0 7 0 1092 0\r
+r 1133 0 2911 0 1137 0\r
+r 1133 0 2911 0 1132 0\r
+r 3182 0 2 0 111 0\r
+r 3182 0 3 0 1525 0\r
+r 1134 0 104 0 1137 0\r
+r 1134 0 104 0 1136 0\r
+r 1134 0 104 0 1135 0\r
+r 1134 0 129 0 1269 0\r
+r 1134 0 129 0 1267 0\r
+r 1134 0 129 0 1261 0\r
+r 1134 0 4 0 1116 0\r
+r 1134 0 5 0 2552 0\r
+r 1134 0 7 0 1089 0\r
+r 3183 0 2 0 507 0\r
+r 3183 0 3 0 1531 0\r
+r 1135 0 1 0 106 0\r
+r 1135 0 365 0 1134 0\r
+r 1135 0 38 0 1129 0\r
+r 1135 0 39 0 225 0\r
+r 3184 0 2 0 507 0\r
+r 3184 0 3 0 1535 0\r
+r 1136 0 1 0 106 0\r
+r 1136 0 365 0 1134 0\r
+r 1136 0 38 0 1131 0\r
+r 1136 0 39 0 225 0\r
+r 3185 0 2 0 507 0\r
+r 3185 0 3 0 1539 0\r
+r 1137 0 1 0 106 0\r
+r 1137 0 365 0 1134 0\r
+r 1137 0 38 0 1133 0\r
+r 1137 0 39 0 225 0\r
+r 3186 0 2 0 111 0\r
+r 3186 0 3 0 1545 0\r
+r 1138 0 129 0 1142 0\r
+r 1138 0 129 0 1139 0\r
+r 1138 0 2907 0 1166 0\r
+r 1138 0 4 0 25 0\r
+r 1138 0 5 0 2580 0\r
+r 1138 0 7 0 1089 0\r
+r 3187 0 2 0 507 0\r
+r 3187 0 3 0 1551 0\r
+r 1139 0 104 0 1140 0\r
+r 1139 0 129 0 1150 0\r
+r 1139 0 129 0 1145 0\r
+r 1139 0 2907 0 1113 0\r
+r 1139 0 2908 0 1141 0\r
+r 1139 0 4 0 1138 0\r
+r 1139 0 5 0 2565 0\r
+r 1139 0 7 0 1089 0\r
+r 3188 0 2 0 507 0\r
+r 3188 0 3 0 1555 0\r
+r 1140 0 1 0 106 0\r
+r 1140 0 365 0 1139 0\r
+r 1140 0 38 0 1141 0\r
+r 3189 0 2 0 507 0\r
+r 3189 0 3 0 1559 0\r
+r 1141 0 2 0 1166 0\r
+r 1141 0 2 0 9 0\r
+r 1141 0 3 0 1144 0\r
+r 1141 0 28 0 1142 0\r
+r 1141 0 5 0 2507 0\r
+r 1141 0 29 0 1139 0\r
+r 1141 0 29 0 1125 0\r
+r 1141 0 7 0 1092 0\r
+r 1141 0 2911 0 1140 0\r
+r 3190 0 2 0 111 0\r
+r 3190 0 3 0 1565 0\r
+r 1142 0 104 0 1143 0\r
+r 1142 0 129 0 1257 0\r
+r 1142 0 129 0 1253 0\r
+r 1142 0 129 0 1250 0\r
+r 1142 0 129 0 1247 0\r
+r 1142 0 129 0 1245 0\r
+r 1142 0 2907 0 1141 0\r
+r 1142 0 4 0 1138 0\r
+r 1142 0 5 0 2593 0\r
+r 1142 0 7 0 1089 0\r
+r 3191 0 2 0 507 0\r
+r 3191 0 3 0 1571 0\r
+r 1143 0 1 0 106 0\r
+r 1143 0 365 0 1142 0\r
+r 1143 0 38 0 1144 0\r
+r 1143 0 39 0 225 0\r
+r 3192 0 2 0 507 0\r
+r 3192 0 3 0 1575 0\r
+r 1144 0 2 0 3100 0\r
+r 1144 0 2 0 7 0\r
+r 1144 0 3 0 1141 0\r
+r 1144 0 5 0 2515 0\r
+r 1144 0 7 0 1092 0\r
+r 1144 0 2911 0 1143 0\r
+r 3193 0 2 0 507 0\r
+r 3193 0 3 0 1579 0\r
+r 1145 0 104 0 1146 0\r
+r 1145 0 129 0 1238 0\r
+r 1145 0 129 0 1231 0\r
+r 1145 0 129 0 1221 0\r
+r 1145 0 249 0 1148 0\r
+r 1145 0 59 0 1148 0\r
+r 1145 0 4 0 1139 0\r
+r 1145 0 5 0 2550 0\r
+r 1145 0 7 0 1089 0\r
+r 3194 0 2 0 111 0\r
+r 3194 0 3 0 1588 0\r
+r 1146 0 1 0 106 0\r
+r 1146 0 365 0 1145 0\r
+r 1146 0 38 0 1147 0\r
+r 1146 0 39 0 107 0\r
+r 3195 0 2 0 507 0\r
+r 3195 0 3 0 1594 0\r
+r 1147 0 2 0 94 0\r
+r 1147 0 3 0 3094 0\r
+r 1147 0 28 0 12 0\r
+r 1147 0 5 0 2516 0\r
+r 1147 0 7 0 1092 0\r
+r 1147 0 2911 0 1151 0\r
+r 1147 0 2911 0 1146 0\r
+r 3196 0 2 0 507 0\r
+r 3196 0 3 0 1598 0\r
+r 1148 0 1 0 1145 0\r
+r 1148 0 2947 0 1145 0\r
+r 1148 0 1147 0 1149 0\r
+r 3197 0 2 0 507 0\r
+r 3197 0 3 0 1602 0\r
+r 1149 0 1 0 16 0 l 0\r
+r 1149 0 3094 0 1148 0\r
+r 3198 0 2 0 111 0\r
+r 3198 0 3 0 1611 0\r
+r 1150 0 104 0 1152 0\r
+r 1150 0 104 0 1151 0\r
+r 1150 0 129 0 1226 0\r
+r 1150 0 129 0 1216 0\r
+r 1150 0 249 0 1154 0\r
+r 1150 0 59 0 1154 0\r
+r 1150 0 4 0 1139 0\r
+r 1150 0 5 0 2523 0\r
+r 1150 0 7 0 1089 0\r
+r 3199 0 2 0 507 0\r
+r 3199 0 3 0 1617 0\r
+r 1151 0 1 0 106 0\r
+r 1151 0 365 0 1150 0\r
+r 1151 0 38 0 1147 0\r
+r 1151 0 39 0 107 0\r
+r 3200 0 2 0 507 0\r
+r 3200 0 3 0 1621 0\r
+r 1152 0 1 0 106 0\r
+r 1152 0 365 0 1150 0\r
+r 1152 0 38 0 1153 0\r
+r 1152 0 39 0 107 0\r
+r 3201 0 2 0 507 0\r
+r 3201 0 3 0 1625 0\r
+r 1153 0 2 0 94 0\r
+r 1153 0 3 0 3095 0\r
+r 1153 0 28 0 12 0\r
+r 1153 0 5 0 2534 0\r
+r 1153 0 7 0 1092 0\r
+r 1153 0 2911 0 1152 0\r
+r 3202 0 2 0 111 0\r
+r 3202 0 3 0 1633 0\r
+r 1154 0 1153 0 1156 0\r
+r 1154 0 1 0 1150 0\r
+r 1154 0 2947 0 1150 0\r
+r 1154 0 1147 0 1155 0\r
+r 3203 0 2 0 507 0\r
+r 3203 0 3 0 1639 0\r
+r 1155 0 1 0 16 0 l 0\r
+r 1155 0 3094 0 1154 0\r
+r 3204 0 2 0 507 0\r
+r 3204 0 3 0 1643 0\r
+r 1156 0 1 0 16 0 l 10000\r
+r 1156 0 3095 0 1154 0\r
+r 3205 0 2 0 111 0\r
+r 3205 0 3 0 1648 0\r
+r 1157 0 2 0 9 0\r
+r 1157 0 3 0 3096 0\r
+r 1157 0 28 0 1116 0\r
+r 1157 0 5 0 2587 0\r
+r 1157 0 29 0 1125 0\r
+r 1157 0 7 0 1092 0\r
+r 3206 0 2 0 507 0\r
+r 3206 0 3 0 1654 0\r
+r 1158 0 2 0 1118 0\r
+r 1158 0 3 0 3097 0\r
+r 1158 0 5 0 2602 0\r
+r 1158 0 7 0 1092 0\r
+r 1158 0 2911 0 1271 0\r
+r 3207 0 2 0 507 0\r
+r 3207 0 3 0 1658 0\r
+r 1159 0 4 0 1119 0\r
+r 1159 0 5 0 2582 0\r
+r 1159 0 7 0 1089 0\r
+r 3208 0 2 0 111 0\r
+r 3208 0 3 0 1664 0\r
+r 1160 0 4 0 1119 0\r
+r 1160 0 5 0 2604 0\r
+r 1160 0 7 0 1089 0\r
+r 3209 0 2 0 507 0\r
+r 3209 0 3 0 1670 0\r
+r 1161 0 2 0 94 0\r
+r 1161 0 3 0 3098 0\r
+r 1161 0 28 0 10 0\r
+r 1161 0 5 0 2574 0\r
+r 1161 0 7 0 1092 0\r
+r 1161 0 2911 0 1164 0\r
+r 3210 0 2 0 507 0\r
+r 3210 0 3 0 1674 0\r
+r 1162 0 2 0 94 0\r
+r 1162 0 3 0 3099 0\r
+r 1162 0 28 0 10 0\r
+r 1162 0 5 0 2535 0\r
+r 1162 0 7 0 1092 0\r
+r 1162 0 2911 0 1165 0\r
+r 3211 0 2 0 507 0\r
+r 3211 0 3 0 1678 0\r
+r 1163 0 104 0 1165 0\r
+r 1163 0 104 0 1164 0\r
+r 1163 0 4 0 1119 0\r
+r 1163 0 5 0 2506 0\r
+r 1163 0 7 0 1089 0\r
+r 3212 0 2 0 111 0\r
+r 3212 0 3 0 1684 0\r
+r 1164 0 1 0 106 0\r
+r 1164 0 365 0 1163 0\r
+r 1164 0 38 0 1161 0\r
+r 1164 0 39 0 107 0\r
+r 3213 0 2 0 507 0\r
+r 3213 0 3 0 1690 0\r
+r 1165 0 1 0 106 0\r
+r 1165 0 365 0 1163 0\r
+r 1165 0 38 0 1162 0\r
+r 1165 0 39 0 107 0\r
+r 3214 0 2 0 507 0\r
+r 3214 0 3 0 1694 0\r
+r 1166 0 2 0 110 0\r
+r 1166 0 3 0 3100 0\r
+r 1166 0 60 0 1141 0\r
+r 1166 0 60 0 1113 0\r
+r 1166 0 28 0 1138 0\r
+r 1166 0 5 0 2527 0\r
+r 1166 0 7 0 1092 0\r
+r 3215 0 2 0 507 0\r
+r 3215 0 3 0 1698 0\r
+r 1167 0 2 0 94 0\r
+r 1167 0 3 0 3101 0\r
+r 1167 0 28 0 10 0\r
+r 1167 0 5 0 2511 0\r
+r 1167 0 7 0 1092 0\r
+r 3216 0 2 0 111 0\r
+r 3216 0 3 0 1706 0\r
+r 1168 0 2 0 94 0\r
+r 1168 0 3 0 3102 0\r
+r 1168 0 60 0 1174 0\r
+r 1168 0 60 0 1173 0\r
+r 1168 0 60 0 1172 0\r
+r 1168 0 60 0 1171 0\r
+r 1168 0 60 0 1170 0\r
+r 1168 0 60 0 1169 0\r
+r 1168 0 28 0 12 0\r
+r 1168 0 5 0 2563 0\r
+r 1168 0 7 0 1092 0\r
+r 3217 0 2 0 507 0\r
+r 3217 0 3 0 1712 0\r
+r 1169 0 2 0 1168 0\r
+r 1169 0 3 0 3103 0\r
+r 1169 0 5 0 2577 0\r
+r 1169 0 7 0 1092 0\r
+r 1169 0 2911 0 1258 0\r
+r 1169 0 2911 0 1254 0\r
+r 1169 0 2911 0 1248 0\r
+r 1169 0 2911 0 1239 0\r
+r 1169 0 2911 0 1232 0\r
+r 1169 0 2911 0 1222 0\r
+r 3218 0 2 0 507 0\r
+r 3218 0 3 0 1716 0\r
+r 1170 0 2 0 1168 0\r
+r 1170 0 3 0 3104 0\r
+r 1170 0 5 0 2557 0\r
+r 1170 0 7 0 1092 0\r
+r 1170 0 2911 0 1259 0\r
+r 1170 0 2911 0 1255 0\r
+r 1170 0 2911 0 1251 0\r
+r 1170 0 2911 0 1249 0\r
+r 1170 0 2911 0 1246 0\r
+r 1170 0 2911 0 1240 0\r
+r 1170 0 2911 0 1233 0\r
+r 1170 0 2911 0 1227 0\r
+r 1170 0 2911 0 1223 0\r
+r 1170 0 2911 0 1217 0\r
+r 1170 0 2911 0 1207 0\r
+r 3219 0 2 0 111 0\r
+r 3219 0 3 0 1726 0\r
+r 1171 0 2 0 1168 0\r
+r 1171 0 3 0 3105 0\r
+r 1171 0 5 0 2545 0\r
+r 1171 0 7 0 1092 0\r
+r 1171 0 2911 0 1260 0\r
+r 1171 0 2911 0 1256 0\r
+r 1171 0 2911 0 1252 0\r
+r 1171 0 2911 0 1241 0\r
+r 1171 0 2911 0 1234 0\r
+r 1171 0 2911 0 1228 0\r
+r 3220 0 2 0 507 0\r
+r 3220 0 3 0 1732 0\r
+r 1172 0 2 0 1168 0\r
+r 1172 0 3 0 3106 0\r
+r 1172 0 5 0 2549 0\r
+r 1172 0 7 0 1092 0\r
+r 1172 0 2911 0 1242 0\r
+r 1172 0 2911 0 1235 0\r
+r 1172 0 2911 0 1224 0\r
+r 3221 0 2 0 111 0\r
+r 3221 0 3 0 1742 0\r
+r 1173 0 2 0 1168 0\r
+r 1173 0 3 0 3107 0\r
+r 1173 0 5 0 2536 0\r
+r 1173 0 7 0 1092 0\r
+r 1173 0 2911 0 1243 0\r
+r 1173 0 2911 0 1236 0\r
+r 1173 0 2911 0 1229 0\r
+r 1173 0 2911 0 1225 0\r
+r 1173 0 2911 0 1218 0\r
+r 3222 0 2 0 507 0\r
+r 3222 0 3 0 1748 0\r
+r 1174 0 2 0 1168 0\r
+r 1174 0 3 0 3108 0\r
+r 1174 0 5 0 2525 0\r
+r 1174 0 7 0 1092 0\r
+r 1174 0 2911 0 1244 0\r
+r 1174 0 2911 0 1237 0\r
+r 1174 0 2911 0 1230 0\r
+r 3223 0 2 0 111 0\r
+r 3223 0 3 0 1755 0\r
+r 1175 0 2 0 94 0\r
+r 1175 0 3 0 3109 0\r
+r 1175 0 28 0 14 0\r
+r 1175 0 5 0 2529 0\r
+r 1175 0 7 0 1092 0\r
+r 1175 0 2911 0 1219 0\r
+r 3224 0 2 0 507 0\r
+r 3224 0 3 0 1761 0\r
+r 1176 0 2 0 94 0\r
+r 1176 0 3 0 3110 0\r
+r 1176 0 28 0 12 0\r
+r 1176 0 5 0 2584 0\r
+r 1176 0 7 0 1092 0\r
+r 1176 0 2911 0 1180 0\r
+r 3225 0 2 0 111 0\r
+r 3225 0 3 0 1771 0\r
+r 1177 0 2 0 94 0\r
+r 1177 0 3 0 3111 0\r
+r 1177 0 28 0 12 0\r
+r 1177 0 5 0 2597 0\r
+r 1177 0 7 0 1092 0\r
+r 1177 0 2911 0 1181 0\r
+r 3226 0 2 0 507 0\r
+r 3226 0 3 0 1777 0\r
+r 1178 0 2 0 94 0\r
+r 1178 0 3 0 3112 0\r
+r 1178 0 28 0 12 0\r
+r 1178 0 5 0 2605 0\r
+r 1178 0 7 0 1092 0\r
+r 1178 0 2911 0 1182 0\r
+r 3227 0 2 0 111 0\r
+r 3227 0 3 0 1783 0\r
+r 1179 0 104 0 1182 0\r
+r 1179 0 104 0 1181 0\r
+r 1179 0 104 0 1180 0\r
+r 1179 0 2907 0 1183 0\r
+r 1179 0 4 0 25 0\r
+r 1179 0 5 0 2572 0\r
+r 1179 0 7 0 1089 0\r
+r 3228 0 2 0 507 0\r
+r 3228 0 3 0 1789 0\r
+r 1180 0 1 0 106 0\r
+r 1180 0 365 0 1179 0\r
+r 1180 0 38 0 1176 0\r
+r 1180 0 39 0 107 0\r
+r 3229 0 2 0 507 0\r
+r 3229 0 3 0 1793 0\r
+r 1181 0 1 0 106 0\r
+r 1181 0 365 0 1179 0\r
+r 1181 0 38 0 1177 0\r
+r 1181 0 39 0 107 0\r
+r 3230 0 2 0 507 0\r
+r 3230 0 3 0 1797 0\r
+r 1182 0 1 0 106 0\r
+r 1182 0 365 0 1179 0\r
+r 1182 0 38 0 1178 0\r
+r 1182 0 39 0 107 0\r
+r 3231 0 2 0 111 0\r
+r 3231 0 3 0 1806 0\r
+r 1183 0 2 0 94 0\r
+r 1183 0 3 0 3113 0\r
+r 1183 0 28 0 1179 0\r
+r 1183 0 28 0 11 0\r
+r 1183 0 5 0 2544 0\r
+r 1183 0 7 0 1092 0\r
+r 1183 0 2911 0 1311 0\r
+r 1183 0 2911 0 1202 0\r
+r 3232 0 2 0 507 0\r
+r 3232 0 3 0 1812 0\r
+r 1184 0 2 0 94 0\r
+r 1184 0 3 0 3114 0\r
+r 1184 0 28 0 14 0\r
+r 1184 0 5 0 2581 0\r
+r 1184 0 7 0 1092 0\r
+r 1184 0 2911 0 1203 0\r
+r 3233 0 2 0 507 0\r
+r 3233 0 3 0 1816 0\r
+r 1185 0 2 0 94 0\r
+r 1185 0 3 0 3115 0\r
+r 1185 0 28 0 14 0\r
+r 1185 0 5 0 2569 0\r
+r 1185 0 7 0 1092 0\r
+r 1185 0 2911 0 1220 0\r
+r 1185 0 2911 0 1204 0\r
+r 3234 0 2 0 507 0\r
+r 3234 0 3 0 1820 0\r
+r 1186 0 2 0 94 0\r
+r 1186 0 3 0 3116 0\r
+r 1186 0 28 0 14 0\r
+r 1186 0 5 0 2547 0\r
+r 1186 0 7 0 1092 0\r
+r 1186 0 2911 0 1205 0\r
+r 3235 0 2 0 111 0\r
+r 3235 0 3 0 1829 0\r
+r 1187 0 2 0 94 0\r
+r 1187 0 3 0 3117 0\r
+r 1187 0 28 0 11 0\r
+r 1187 0 5 0 2541 0\r
+r 1187 0 7 0 1092 0\r
+r 1187 0 2911 0 1206 0\r
+r 3236 0 2 0 507 0\r
+r 3236 0 3 0 1835 0\r
+r 1188 0 129 0 1272 0\r
+r 1188 0 4 0 25 0\r
+r 1188 0 5 0 2596 0\r
+r 1188 0 7 0 1089 0\r
+r 3237 0 2 0 507 0\r
+r 3237 0 3 0 1839 0\r
+r 1189 0 4 0 25 0\r
+r 1189 0 5 0 2504 0\r
+r 1189 0 7 0 1089 0\r
+r 3238 0 2 0 507 0\r
+r 3238 0 3 0 1843 0\r
+r 1190 0 4 0 1122 0\r
+r 1190 0 4 0 1120 0\r
+r 1190 0 5 0 1191 0\r
+r 1190 0 7 0 1089 0\r
+r 3239 0 2 0 111 0\r
+r 3239 0 3 0 1851 0\r
+r 1191 0 2904 0 1190 0\r
+r 1191 0 1 0 10 0 s Trend2D View\r
+r 3240 0 2 0 507 0\r
+r 3240 0 3 0 1857 0\r
+r 1192 0 4 0 1122 0\r
+r 1192 0 4 0 1121 0\r
+r 1192 0 5 0 1193 0\r
+r 1192 0 7 0 1089 0\r
+r 3241 0 2 0 507 0\r
+r 3241 0 3 0 1861 0\r
+r 1193 0 2904 0 1192 0\r
+r 1193 0 1 0 10 0 s Curve2D View\r
+r 3242 0 2 0 111 0\r
+r 3242 0 3 0 1865 0\r
+r 1194 0 4 0 1123 0\r
+r 1194 0 4 0 1120 0\r
+r 1194 0 5 0 1195 0\r
+r 1194 0 7 0 1089 0\r
+r 3243 0 2 0 507 0\r
+r 3243 0 3 0 1871 0\r
+r 1195 0 2904 0 1194 0\r
+r 1195 0 1 0 10 0 s Trend3D View\r
+r 3244 0 2 0 111 0\r
+r 3244 0 3 0 1879 0\r
+r 1196 0 4 0 1123 0\r
+r 1196 0 4 0 1121 0\r
+r 1196 0 5 0 1197 0\r
+r 1196 0 7 0 1089 0\r
+r 3245 0 2 0 507 0\r
+r 3245 0 3 0 1885 0\r
+r 1197 0 2904 0 1196 0\r
+r 1197 0 1 0 10 0 s Surface3D View\r
+r 3246 0 2 0 507 0\r
+r 3246 0 3 0 1889 0\r
+r 1198 0 4 0 1123 0\r
+r 1198 0 4 0 1121 0\r
+r 1198 0 5 0 1199 0\r
+r 1198 0 7 0 1089 0\r
+r 3247 0 2 0 111 0\r
+r 3247 0 3 0 1895 0\r
+r 1199 0 2904 0 1198 0\r
+r 1199 0 1 0 10 0 s Surface4D View\r
+r 3248 0 2 0 507 0\r
+r 3248 0 3 0 1901 0\r
+r 1200 0 104 0 1207 0\r
+r 1200 0 104 0 1206 0\r
+r 1200 0 104 0 1205 0\r
+r 1200 0 104 0 1204 0\r
+r 1200 0 104 0 1203 0\r
+r 1200 0 104 0 1202 0\r
+r 1200 0 137 0 1131 0\r
+r 1200 0 4 0 1124 0\r
+r 1200 0 5 0 1201 0\r
+r 1200 0 7 0 1089 0\r
+r 3249 0 2 0 507 0\r
+r 3249 0 3 0 1905 0\r
+r 1201 0 2904 0 1200 0\r
+r 1201 0 1 0 10 0 s Trend2D Plot\r
+r 3250 0 2 0 507 0\r
+r 3250 0 3 0 1909 0\r
+r 1202 0 1 0 106 0\r
+r 1202 0 365 0 1200 0\r
+r 1202 0 38 0 1183 0\r
+r 1202 0 39 0 107 0\r
+r 3251 0 2 0 111 0\r
+r 3251 0 3 0 1914 0\r
+r 1203 0 1 0 106 0\r
+r 1203 0 365 0 1200 0\r
+r 1203 0 38 0 1184 0\r
+r 1203 0 39 0 107 0\r
+r 3252 0 2 0 507 0\r
+r 3252 0 3 0 1920 0\r
+r 1204 0 1 0 106 0\r
+r 1204 0 365 0 1200 0\r
+r 1204 0 38 0 1185 0\r
+r 1204 0 39 0 107 0\r
+r 3253 0 2 0 507 0\r
+r 3253 0 3 0 1924 0\r
+r 1205 0 1 0 106 0\r
+r 1205 0 365 0 1200 0\r
+r 1205 0 38 0 1186 0\r
+r 1205 0 39 0 107 0\r
+r 3254 0 2 0 111 0\r
+r 3254 0 3 0 1933 0\r
+r 1206 0 1 0 106 0\r
+r 1206 0 365 0 1200 0\r
+r 1206 0 38 0 1187 0\r
+r 1206 0 39 0 107 0\r
+r 3255 0 2 0 507 0\r
+r 3255 0 3 0 1939 0\r
+r 1207 0 1 0 106 0\r
+r 1207 0 365 0 1200 0\r
+r 1207 0 38 0 1170 0\r
+r 1207 0 39 0 107 0\r
+r 3256 0 2 0 507 0\r
+r 3256 0 3 0 1943 0\r
+r 1208 0 4 0 1124 0\r
+r 1208 0 5 0 1209 0\r
+r 1208 0 7 0 1089 0\r
+r 3257 0 2 0 507 0\r
+r 3257 0 3 0 1947 0\r
+r 1209 0 2904 0 1208 0\r
+r 1209 0 1 0 10 0 s Curve2D Plot\r
+r 3258 0 2 0 111 0\r
+r 3258 0 3 0 1959 0\r
+r 1210 0 4 0 1126 0\r
+r 1210 0 5 0 1211 0\r
+r 1210 0 7 0 1089 0\r
+r 3259 0 2 0 507 0\r
+r 3259 0 3 0 1965 0\r
+r 1211 0 2904 0 1210 0\r
+r 1211 0 1 0 10 0 s Trend3D Plot\r
+r 3260 0 2 0 507 0\r
+r 3260 0 3 0 1969 0\r
+r 1212 0 4 0 1126 0\r
+r 1212 0 5 0 1213 0\r
+r 1212 0 7 0 1089 0\r
+r 3261 0 2 0 507 0\r
+r 3261 0 3 0 1973 0\r
+r 1213 0 2904 0 1212 0\r
+r 1213 0 1 0 10 0 s Surface3D Plot\r
+r 3262 0 2 0 111 0\r
+r 3262 0 3 0 1981 0\r
+r 1214 0 4 0 1126 0\r
+r 1214 0 5 0 1215 0\r
+r 1214 0 7 0 1089 0\r
+r 3263 0 2 0 507 0\r
+r 3263 0 3 0 1987 0\r
+r 1215 0 2904 0 1214 0\r
+r 1215 0 1 0 10 0 s Surface4D Plot\r
+r 3264 0 2 0 507 0\r
+r 3264 0 3 0 1991 0\r
+r 1216 0 104 0 1220 0\r
+r 1216 0 104 0 1219 0\r
+r 1216 0 104 0 1218 0\r
+r 1216 0 104 0 1217 0\r
+r 1216 0 4 0 1150 0\r
+r 1216 0 5 0 2591 0\r
+r 1216 0 7 0 1089 0\r
+r 3265 0 2 0 111 0\r
+r 3265 0 3 0 1996 0\r
+r 1217 0 1 0 106 0\r
+r 1217 0 365 0 1216 0\r
+r 1217 0 38 0 1170 0\r
+r 1217 0 39 0 107 0\r
+r 3266 0 2 0 507 0\r
+r 3266 0 3 0 2002 0\r
+r 1218 0 1 0 106 0\r
+r 1218 0 365 0 1216 0\r
+r 1218 0 38 0 1173 0\r
+r 1218 0 39 0 107 0\r
+r 3267 0 2 0 507 0\r
+r 3267 0 3 0 2006 0\r
+r 1219 0 1 0 106 0\r
+r 1219 0 365 0 1216 0\r
+r 1219 0 38 0 1175 0\r
+r 1219 0 39 0 107 0\r
+r 3268 0 2 0 111 0\r
+r 3268 0 3 0 2014 0\r
+r 1220 0 1 0 106 0\r
+r 1220 0 365 0 1216 0\r
+r 1220 0 38 0 1185 0\r
+r 1220 0 39 0 107 0\r
+r 3269 0 2 0 507 0\r
+r 3269 0 3 0 2020 0\r
+r 1221 0 104 0 1225 0\r
+r 1221 0 104 0 1224 0\r
+r 1221 0 104 0 1223 0\r
+r 1221 0 104 0 1222 0\r
+r 1221 0 4 0 1145 0\r
+r 1221 0 5 0 2539 0\r
+r 1221 0 7 0 1089 0\r
+r 3270 0 2 0 507 0\r
+r 3270 0 3 0 2024 0\r
+r 1222 0 1 0 106 0\r
+r 1222 0 365 0 1221 0\r
+r 1222 0 38 0 1169 0\r
+r 1222 0 39 0 107 0\r
+r 3271 0 2 0 507 0\r
+r 3271 0 3 0 2025 0\r
+r 1223 0 1 0 106 0\r
+r 1223 0 365 0 1221 0\r
+r 1223 0 38 0 1170 0\r
+r 1223 0 39 0 107 0\r
+r 3272 0 2 0 507 0\r
+r 3272 0 3 0 2026 0\r
+r 1224 0 1 0 106 0\r
+r 1224 0 365 0 1221 0\r
+r 1224 0 38 0 1172 0\r
+r 1224 0 39 0 107 0\r
+r 3273 0 2 0 507 0\r
+r 3273 0 3 0 2027 0\r
+r 1225 0 1 0 106 0\r
+r 1225 0 365 0 1221 0\r
+r 1225 0 38 0 1173 0\r
+r 1225 0 39 0 107 0\r
+r 3274 0 2 0 111 0\r
+r 3274 0 3 0 2033 0\r
+r 1226 0 104 0 1230 0\r
+r 1226 0 104 0 1229 0\r
+r 1226 0 104 0 1228 0\r
+r 1226 0 104 0 1227 0\r
+r 1226 0 4 0 1150 0\r
+r 1226 0 5 0 2531 0\r
+r 1226 0 7 0 1089 0\r
+r 3275 0 2 0 507 0\r
+r 3275 0 3 0 2039 0\r
+r 1227 0 1 0 106 0\r
+r 1227 0 365 0 1226 0\r
+r 1227 0 38 0 1170 0\r
+r 1227 0 39 0 107 0\r
+r 3276 0 2 0 507 0\r
+r 3276 0 3 0 2043 0\r
+r 1228 0 1 0 106 0\r
+r 1228 0 365 0 1226 0\r
+r 1228 0 38 0 1171 0\r
+r 1228 0 39 0 107 0\r
+r 3277 0 2 0 507 0\r
+r 3277 0 3 0 2047 0\r
+r 1229 0 1 0 106 0\r
+r 1229 0 365 0 1226 0\r
+r 1229 0 38 0 1173 0\r
+r 1229 0 39 0 107 0\r
+r 3278 0 2 0 184 0\r
+r 3278 0 3 0 2062 0\r
+r 1230 0 1 0 106 0\r
+r 1230 0 365 0 1226 0\r
+r 1230 0 38 0 1174 0\r
+r 1230 0 39 0 107 0\r
+r 3279 0 2 0 184 0\r
+r 3279 0 3 0 2064 0\r
+r 1231 0 104 0 1237 0\r
+r 1231 0 104 0 1236 0\r
+r 1231 0 104 0 1235 0\r
+r 1231 0 104 0 1234 0\r
+r 1231 0 104 0 1233 0\r
+r 1231 0 104 0 1232 0\r
+r 1231 0 4 0 1145 0\r
+r 1231 0 5 0 2560 0\r
+r 1231 0 7 0 1089 0\r
+r 3280 0 2 0 184 0\r
+r 3280 0 3 0 2071 0\r
+r 1232 0 1 0 106 0\r
+r 1232 0 365 0 1231 0\r
+r 1232 0 38 0 1169 0\r
+r 1232 0 39 0 107 0\r
+r 1233 0 1 0 106 0\r
+r 1233 0 365 0 1231 0\r
+r 1233 0 38 0 1170 0\r
+r 1233 0 39 0 107 0\r
+r 1234 0 1 0 106 0\r
+r 1234 0 365 0 1231 0\r
+r 1234 0 38 0 1171 0\r
+r 1234 0 39 0 107 0\r
+r 1235 0 1 0 106 0\r
+r 1235 0 365 0 1231 0\r
+r 1235 0 38 0 1172 0\r
+r 1235 0 39 0 107 0\r
+r 1236 0 1 0 106 0\r
+r 1236 0 365 0 1231 0\r
+r 1236 0 38 0 1173 0\r
+r 1236 0 39 0 107 0\r
+r 1237 0 1 0 106 0\r
+r 1237 0 365 0 1231 0\r
+r 1237 0 38 0 1174 0\r
+r 1237 0 39 0 107 0\r
+r 1238 0 104 0 1244 0\r
+r 1238 0 104 0 1243 0\r
+r 1238 0 104 0 1242 0\r
+r 1238 0 104 0 1241 0\r
+r 1238 0 104 0 1240 0\r
+r 1238 0 104 0 1239 0\r
+r 1238 0 4 0 1145 0\r
+r 1238 0 5 0 2607 0\r
+r 1238 0 7 0 1089 0\r
+r 1239 0 1 0 106 0\r
+r 1239 0 365 0 1238 0\r
+r 1239 0 38 0 1169 0\r
+r 1239 0 39 0 107 0\r
+r 1240 0 1 0 106 0\r
+r 1240 0 365 0 1238 0\r
+r 1240 0 38 0 1170 0\r
+r 1240 0 39 0 107 0\r
+r 1241 0 1 0 106 0\r
+r 1241 0 365 0 1238 0\r
+r 1241 0 38 0 1171 0\r
+r 1241 0 39 0 107 0\r
+r 1242 0 1 0 106 0\r
+r 1242 0 365 0 1238 0\r
+r 1242 0 38 0 1172 0\r
+r 1242 0 39 0 107 0\r
+r 1243 0 1 0 106 0\r
+r 1243 0 365 0 1238 0\r
+r 1243 0 38 0 1173 0\r
+r 1243 0 39 0 107 0\r
+r 1244 0 1 0 106 0\r
+r 1244 0 365 0 1238 0\r
+r 1244 0 38 0 1174 0\r
+r 1244 0 39 0 107 0\r
+r 1245 0 104 0 1246 0\r
+r 1245 0 4 0 1142 0\r
+r 1245 0 5 0 2514 0\r
+r 1245 0 7 0 1089 0\r
+r 1246 0 1 0 106 0\r
+r 1246 0 365 0 1245 0\r
+r 1246 0 38 0 1170 0\r
+r 1246 0 39 0 107 0\r
+r 1247 0 104 0 1249 0\r
+r 1247 0 104 0 1248 0\r
+r 1247 0 4 0 1142 0\r
+r 1247 0 5 0 2571 0\r
+r 1247 0 7 0 1089 0\r
+r 1248 0 1 0 106 0\r
+r 1248 0 365 0 1247 0\r
+r 1248 0 38 0 1169 0\r
+r 1248 0 39 0 107 0\r
+r 1249 0 1 0 106 0\r
+r 1249 0 365 0 1247 0\r
+r 1249 0 38 0 1170 0\r
+r 1249 0 39 0 107 0\r
+r 1250 0 104 0 1252 0\r
+r 1250 0 104 0 1251 0\r
+r 1250 0 4 0 1142 0\r
+r 1250 0 5 0 2559 0\r
+r 1250 0 7 0 1089 0\r
+r 1251 0 1 0 106 0\r
+r 1251 0 365 0 1250 0\r
+r 1251 0 38 0 1170 0\r
+r 1251 0 39 0 107 0\r
+r 1252 0 1 0 106 0\r
+r 1252 0 365 0 1250 0\r
+r 1252 0 38 0 1171 0\r
+r 1252 0 39 0 107 0\r
+r 1253 0 104 0 1256 0\r
+r 1253 0 104 0 1255 0\r
+r 1253 0 104 0 1254 0\r
+r 1253 0 4 0 1142 0\r
+r 1253 0 5 0 2590 0\r
+r 1253 0 7 0 1089 0\r
+r 1254 0 1 0 106 0\r
+r 1254 0 365 0 1253 0\r
+r 1254 0 38 0 1169 0\r
+r 1254 0 39 0 107 0\r
+r 1255 0 1 0 106 0\r
+r 1255 0 365 0 1253 0\r
+r 1255 0 38 0 1170 0\r
+r 1255 0 39 0 107 0\r
+r 1256 0 1 0 106 0\r
+r 1256 0 365 0 1253 0\r
+r 1256 0 38 0 1171 0\r
+r 1256 0 39 0 107 0\r
+r 1257 0 104 0 1260 0\r
+r 1257 0 104 0 1259 0\r
+r 1257 0 104 0 1258 0\r
+r 1257 0 4 0 1142 0\r
+r 1257 0 5 0 2530 0\r
+r 1257 0 7 0 1089 0\r
+r 1258 0 1 0 106 0\r
+r 1258 0 365 0 1257 0\r
+r 1258 0 38 0 1169 0\r
+r 1258 0 39 0 107 0\r
+r 1259 0 1 0 106 0\r
+r 1259 0 365 0 1257 0\r
+r 1259 0 38 0 1170 0\r
+r 1259 0 39 0 107 0\r
+r 1260 0 1 0 106 0\r
+r 1260 0 365 0 1257 0\r
+r 1260 0 38 0 1171 0\r
+r 1260 0 39 0 107 0\r
+r 1261 0 4 0 1134 0\r
+r 1261 0 5 0 1262 0\r
+r 1261 0 7 0 1089 0\r
+r 1262 0 2904 0 1261 0\r
+r 1262 0 1 0 10 0 s Trend2D Point\r
+r 1263 0 4 0 1127 0\r
+r 1263 0 5 0 1264 0\r
+r 1263 0 7 0 1089 0\r
+r 1264 0 2904 0 1263 0\r
+r 1264 0 1 0 10 0 s Curve2D Point\r
+r 1265 0 4 0 1116 0\r
+r 1265 0 5 0 1266 0\r
+r 1265 0 7 0 1089 0\r
+r 1266 0 2904 0 1265 0\r
+r 1266 0 1 0 10 0 s Trend3D Point\r
+r 1267 0 4 0 1134 0\r
+r 1267 0 5 0 1268 0\r
+r 1267 0 7 0 1089 0\r
+r 1268 0 2904 0 1267 0\r
+r 1268 0 1 0 10 0 s Surface3D Point\r
+r 1269 0 104 0 1271 0\r
+r 1269 0 4 0 1134 0\r
+r 1269 0 5 0 1270 0\r
+r 1269 0 7 0 1089 0\r
+r 1270 0 2904 0 1269 0\r
+r 1270 0 1 0 10 0 s Surface4D Point\r
+r 1271 0 1 0 106 0\r
+r 1271 0 365 0 1269 0\r
+r 1271 0 38 0 1158 0\r
+r 1271 0 39 0 225 0\r
+r 1272 0 104 0 1275 0\r
+r 1272 0 104 0 1273 0\r
+r 1272 0 249 0 1277 0\r
+r 1272 0 59 0 1277 0\r
+r 1272 0 4 0 1188 0\r
+r 1272 0 5 0 2578 0\r
+r 1272 0 7 0 1089 0\r
+r 1273 0 1 0 106 0\r
+r 1273 0 365 0 1272 0\r
+r 1273 0 38 0 1274 0\r
+r 1273 0 39 0 107 0\r
+r 1274 0 2 0 94 0\r
+r 1274 0 3 0 3118 0\r
+r 1274 0 28 0 14 0\r
+r 1274 0 5 0 2524 0\r
+r 1274 0 7 0 1092 0\r
+r 1274 0 2911 0 1273 0\r
+r 1275 0 1 0 106 0\r
+r 1275 0 365 0 1272 0\r
+r 1275 0 38 0 1276 0\r
+r 1275 0 39 0 107 0\r
+r 1276 0 2 0 94 0\r
+r 1276 0 3 0 3119 0\r
+r 1276 0 28 0 14 0\r
+r 1276 0 5 0 2510 0\r
+r 1276 0 7 0 1092 0\r
+r 1276 0 2911 0 1275 0\r
+r 1277 0 1 0 1272 0\r
+r 1277 0 1274 0 1278 0\r
+r 1277 0 2947 0 1272 0\r
+r 1277 0 1276 0 1279 0\r
+r 1278 0 1 0 14 0 b True\r
+r 1278 0 3118 0 1277 0\r
+r 1279 0 1 0 14 0 b True\r
+r 1279 0 3119 0 1277 0\r
+r 1280 0 2 0 94 0\r
+r 1280 0 3 0 3120 0\r
+r 1280 0 28 0 16 0\r
+r 1280 0 5 0 2595 0\r
+r 1280 0 7 0 1092 0\r
+r 1280 0 2911 0 1285 0\r
+r 1281 0 2 0 94 0\r
+r 1281 0 3 0 3121 0\r
+r 1281 0 28 0 12 0\r
+r 1281 0 5 0 2533 0\r
+r 1281 0 7 0 1092 0\r
+r 1281 0 2911 0 1286 0\r
+r 1282 0 2 0 94 0\r
+r 1282 0 3 0 3122 0\r
+r 1282 0 28 0 12 0\r
+r 1282 0 5 0 2540 0\r
+r 1282 0 7 0 1092 0\r
+r 1282 0 2911 0 1287 0\r
+r 1283 0 2 0 94 0\r
+r 1283 0 3 0 3123 0\r
+r 1283 0 28 0 12 0\r
+r 1283 0 5 0 2519 0\r
+r 1283 0 7 0 1092 0\r
+r 1283 0 2911 0 1294 0\r
+r 1284 0 104 0 1287 0\r
+r 1284 0 104 0 1286 0\r
+r 1284 0 104 0 1285 0\r
+r 1284 0 129 0 1293 0\r
+r 1284 0 129 0 1292 0\r
+r 1284 0 249 0 1288 0\r
+r 1284 0 59 0 1288 0\r
+r 1284 0 4 0 1119 0\r
+r 1284 0 5 0 2566 0\r
+r 1284 0 7 0 1089 0\r
+r 1285 0 1 0 106 0\r
+r 1285 0 365 0 1284 0\r
+r 1285 0 38 0 1280 0\r
+r 1285 0 39 0 107 0\r
+r 1286 0 1 0 106 0\r
+r 1286 0 365 0 1284 0\r
+r 1286 0 38 0 1281 0\r
+r 1286 0 39 0 107 0\r
+r 1287 0 1 0 106 0\r
+r 1287 0 365 0 1284 0\r
+r 1287 0 38 0 1282 0\r
+r 1287 0 39 0 107 0\r
+r 1288 0 1280 0 1289 0\r
+r 1288 0 1281 0 1290 0\r
+r 1288 0 1 0 1284 0\r
+r 1288 0 1282 0 1291 0\r
+r 1288 0 2947 0 1284 0\r
+r 1289 0 3120 0 1288 0\r
+r 1289 0 1 0 12 0 d 1.0\r
+r 1290 0 3121 0 1288 0\r
+r 1290 0 1 0 12 0 d 1.0\r
+r 1291 0 1 0 12 0 d 1.0\r
+r 1291 0 3122 0 1288 0\r
+r 1292 0 4 0 1284 0\r
+r 1292 0 5 0 2517 0\r
+r 1292 0 7 0 1089 0\r
+r 1293 0 104 0 1294 0\r
+r 1293 0 4 0 1284 0\r
+r 1293 0 5 0 2528 0\r
+r 1293 0 7 0 1089 0\r
+r 1294 0 1 0 106 0\r
+r 1294 0 365 0 1293 0\r
+r 1294 0 38 0 1283 0\r
+r 1294 0 39 0 107 0\r
+r 1295 0 129 0 1298 0\r
+r 1295 0 129 0 1296 0\r
+r 1295 0 145 0 1295 0\r
+r 1295 0 2907 0 1297 0\r
+r 1295 0 4 0 25 0\r
+r 1295 0 5 0 2600 0\r
+r 1295 0 7 0 1089 0\r
+r 1296 0 104 0 1297 0\r
+r 1296 0 4 0 1295 0\r
+r 1296 0 5 0 2558 0\r
+r 1296 0 7 0 1089 0\r
+r 1297 0 1 0 106 0\r
+r 1297 0 28 0 1295 0\r
+r 1297 0 365 0 1296 0\r
+r 1297 0 38 0 9 0\r
+r 1298 0 104 0 1303 0\r
+r 1298 0 104 0 1301 0\r
+r 1298 0 104 0 1300 0\r
+r 1298 0 104 0 1299 0\r
+r 1298 0 4 0 1295 0\r
+r 1298 0 5 0 2554 0\r
+r 1298 0 7 0 1089 0\r
+r 1299 0 1 0 106 0\r
+r 1299 0 365 0 1298 0\r
+r 1299 0 38 0 5 0\r
+r 1299 0 39 0 107 0\r
+r 1300 0 1 0 106 0\r
+r 1300 0 365 0 1298 0\r
+r 1300 0 38 0 9 0\r
+r 1301 0 1 0 106 0\r
+r 1301 0 365 0 1298 0\r
+r 1301 0 38 0 1302 0\r
+r 1301 0 39 0 107 0\r
+r 1302 0 2 0 94 0\r
+r 1302 0 3 0 3124 0\r
+r 1302 0 28 0 1318 0\r
+r 1302 0 5 0 2564 0\r
+r 1302 0 7 0 1092 0\r
+r 1302 0 2911 0 1301 0\r
+r 1303 0 1 0 106 0\r
+r 1303 0 365 0 1298 0\r
+r 1303 0 38 0 1304 0\r
+r 1303 0 39 0 107 0\r
+r 1304 0 2 0 94 0\r
+r 1304 0 3 0 3125 0\r
+r 1304 0 28 0 1322 0\r
+r 1304 0 5 0 2599 0\r
+r 1304 0 7 0 1092 0\r
+r 1304 0 2911 0 1303 0\r
+r 1305 0 1 0 106 0\r
+r 1305 0 365 0 1125 0\r
+r 1305 0 38 0 5 0\r
+r 1305 0 39 0 225 0\r
+r 1306 0 1 0 106 0\r
+r 1306 0 365 0 1125 0\r
+r 1306 0 38 0 1086 0\r
+r 1306 0 39 0 107 0\r
+r 1307 0 1 0 106 0\r
+r 1307 0 365 0 1125 0\r
+r 1307 0 38 0 1308 0\r
+r 1307 0 39 0 107 0\r
+r 1308 0 2 0 94 0\r
+r 1308 0 3 0 3126 0\r
+r 1308 0 28 0 1331 0\r
+r 1308 0 5 0 2594 0\r
+r 1308 0 7 0 1092 0\r
+r 1308 0 2911 0 1307 0\r
+r 1309 0 1 0 106 0\r
+r 1309 0 365 0 1125 0\r
+r 1309 0 38 0 1310 0\r
+r 1309 0 39 0 107 0\r
+r 1310 0 2 0 94 0\r
+r 1310 0 3 0 3127 0\r
+r 1310 0 28 0 1326 0\r
+r 1310 0 5 0 2522 0\r
+r 1310 0 7 0 1092 0\r
+r 1310 0 2911 0 1309 0\r
+r 1311 0 1 0 106 0\r
+r 1311 0 365 0 1125 0\r
+r 1311 0 38 0 1183 0\r
+r 1311 0 39 0 225 0\r
+r 1312 0 2 0 94 0\r
+r 1312 0 3 0 3128 0\r
+r 1312 0 28 0 1313 0\r
+r 1312 0 5 0 2611 0\r
+r 1312 0 7 0 1092 0\r
+r 1313 0 104 0 1316 0\r
+r 1313 0 104 0 1314 0\r
+r 1313 0 2907 0 1312 0\r
+r 1313 0 4 0 25 0\r
+r 1313 0 5 0 2588 0\r
+r 1313 0 7 0 1089 0\r
+r 1314 0 1 0 106 0\r
+r 1314 0 365 0 1313 0\r
+r 1314 0 38 0 1315 0\r
+r 1314 0 39 0 107 0\r
+r 1315 0 2 0 94 0\r
+r 1315 0 3 0 3129 0\r
+r 1315 0 28 0 12 0\r
+r 1315 0 5 0 2502 0\r
+r 1315 0 7 0 1092 0\r
+r 1315 0 2911 0 1314 0\r
+r 1316 0 1 0 106 0\r
+r 1316 0 365 0 1313 0\r
+r 1316 0 38 0 1317 0\r
+r 1316 0 39 0 107 0\r
+r 1317 0 2 0 94 0\r
+r 1317 0 3 0 3130 0\r
+r 1317 0 28 0 12 0\r
+r 1317 0 5 0 2579 0\r
+r 1317 0 7 0 1092 0\r
+r 1317 0 2911 0 1316 0\r
+r 1318 0 9 0 1321 0\r
+r 1318 0 9 0 1320 0\r
+r 1318 0 26 0 1318 0\r
+r 1318 0 2907 0 1302 0\r
+r 1318 0 59 0 1321 0\r
+r 1318 0 59 0 1320 0\r
+r 1318 0 4 0 24 0\r
+r 1318 0 5 0 2546 0\r
+r 1318 0 78 0 1319 0\r
+r 1318 0 7 0 1089 0\r
+r 1319 0 1 0 10 0 s Setting how time is shown on UI\r
+r 1319 0 2923 0 1318 0\r
+r 1320 0 1 0 1318 0\r
+r 1320 0 5 0 2521 0\r
+r 1320 0 7 0 1318 0\r
+r 1321 0 1 0 1318 0\r
+r 1321 0 5 0 2576 0\r
+r 1321 0 7 0 1318 0\r
+r 1322 0 9 0 1325 0\r
+r 1322 0 9 0 1324 0\r
+r 1322 0 26 0 1322 0\r
+r 1322 0 2907 0 1304 0\r
+r 1322 0 59 0 1325 0\r
+r 1322 0 59 0 1324 0\r
+r 1322 0 4 0 24 0\r
+r 1322 0 5 0 2555 0\r
+r 1322 0 78 0 1323 0\r
+r 1322 0 7 0 1089 0\r
+r 1323 0 1 0 10 0 s Setting how Y-Axis is shown between plots\r
+r 1323 0 2923 0 1322 0\r
+r 1324 0 1 0 1322 0\r
+r 1324 0 5 0 2592 0\r
+r 1324 0 7 0 1322 0\r
+r 1325 0 1 0 1322 0\r
+r 1325 0 5 0 2601 0\r
+r 1325 0 7 0 1322 0\r
+r 1326 0 9 0 1330 0\r
+r 1326 0 9 0 1329 0\r
+r 1326 0 9 0 1328 0\r
+r 1326 0 26 0 1326 0\r
+r 1326 0 2907 0 1310 0\r
+r 1326 0 59 0 1330 0\r
+r 1326 0 59 0 1329 0\r
+r 1326 0 59 0 1328 0\r
+r 1326 0 4 0 24 0\r
+r 1326 0 5 0 2583 0\r
+r 1326 0 78 0 1327 0\r
+r 1326 0 7 0 1089 0\r
+r 1327 0 1 0 10 0 s The mode how a plot is scaled to the viewport\r
+r 1327 0 2923 0 1326 0\r
+r 1328 0 1 0 1326 0\r
+r 1328 0 5 0 2610 0\r
+r 1328 0 7 0 1326 0\r
+r 1329 0 1 0 1326 0\r
+r 1329 0 5 0 2508 0\r
+r 1329 0 7 0 1326 0\r
+r 1330 0 1 0 1331 0\r
+r 1330 0 1 0 1326 0\r
+r 1330 0 5 0 2567 0\r
+r 1330 0 7 0 1331 0\r
+r 1330 0 7 0 1326 0\r
+r 1331 0 9 0 1334 0\r
+r 1331 0 9 0 1333 0\r
+r 1331 0 9 0 1330 0\r
+r 1331 0 26 0 1331 0\r
+r 1331 0 2907 0 1308 0\r
+r 1331 0 59 0 1334 0\r
+r 1331 0 59 0 1333 0\r
+r 1331 0 59 0 1330 0\r
+r 1331 0 4 0 24 0\r
+r 1331 0 5 0 2575 0\r
+r 1331 0 78 0 1332 0\r
+r 1331 0 7 0 1089 0\r
+r 1332 0 1 0 10 0 s The mode how the line is drawn between the dots\r
+r 1332 0 2923 0 1331 0\r
+r 1333 0 1 0 1331 0\r
+r 1333 0 5 0 2609 0\r
+r 1333 0 7 0 1331 0\r
+r 1334 0 1 0 1331 0\r
+r 1334 0 5 0 2520 0\r
+r 1334 0 7 0 1331 0\r
+r 1335 0 2 0 94 0\r
+r 1335 0 3 0 3131 0\r
+r 1335 0 28 0 1336 0\r
+r 1335 0 5 0 2542 0\r
+r 1335 0 7 0 1092 0\r
+r 1336 0 129 0 1342 0\r
+r 1336 0 129 0 1339 0\r
+r 1336 0 129 0 1338 0\r
+r 1336 0 145 0 1336 0\r
+r 1336 0 2907 0 1335 0\r
+r 1336 0 4 0 24 0\r
+r 1336 0 5 0 2518 0\r
+r 1336 0 78 0 1337 0\r
+r 1336 0 7 0 1089 0\r
+r 1337 0 1 0 10 0 s The mode how grid lines are drawn\r
+r 1337 0 2923 0 1336 0\r
+r 1338 0 4 0 1336 0\r
+r 1338 0 5 0 2537 0\r
+r 1338 0 7 0 1089 0\r
+r 1339 0 104 0 1340 0\r
+r 1339 0 4 0 1336 0\r
+r 1339 0 5 0 2561 0\r
+r 1339 0 7 0 1089 0\r
+r 1340 0 1 0 106 0\r
+r 1340 0 365 0 1339 0\r
+r 1340 0 38 0 1341 0\r
+r 1340 0 39 0 107 0\r
+r 1341 0 2 0 94 0\r
+r 1341 0 3 0 3132 0\r
+r 1341 0 28 0 12 0\r
+r 1341 0 5 0 2603 0\r
+r 1341 0 7 0 1092 0\r
+r 1341 0 2911 0 1340 0\r
+r 1342 0 104 0 1345 0\r
+r 1342 0 104 0 1343 0\r
+r 1342 0 4 0 1336 0\r
+r 1342 0 5 0 2598 0\r
+r 1342 0 7 0 1089 0\r
+r 1343 0 1 0 106 0\r
+r 1343 0 365 0 1342 0\r
+r 1343 0 38 0 1344 0\r
+r 1343 0 39 0 107 0\r
+r 1344 0 2 0 94 0\r
+r 1344 0 3 0 3133 0\r
+r 1344 0 28 0 12 0\r
+r 1344 0 5 0 2562 0\r
+r 1344 0 7 0 1092 0\r
+r 1344 0 2911 0 1343 0\r
+r 1345 0 1 0 106 0\r
+r 1345 0 365 0 1342 0\r
+r 1345 0 38 0 1346 0\r
+r 1345 0 39 0 107 0\r
+r 1346 0 2 0 94 0\r
+r 1346 0 3 0 3134 0\r
+r 1346 0 28 0 12 0\r
+r 1346 0 5 0 2568 0\r
+r 1346 0 7 0 1092 0\r
+r 1346 0 2911 0 1345 0\r
+r 1347 0 9 0 2028 0\r
+r 1347 0 9 0 2027 0\r
+r 1347 0 9 0 2026 0\r
+r 1347 0 9 0 2025 0\r
+r 1347 0 9 0 2013 0\r
+r 1347 0 9 0 2007 0\r
+r 1347 0 9 0 1992 0\r
+r 1347 0 9 0 1974 0\r
+r 1347 0 9 0 1948 0\r
+r 1347 0 9 0 1925 0\r
+r 1347 0 9 0 1910 0\r
+r 1347 0 9 0 1890 0\r
+r 1347 0 9 0 1872 0\r
+r 1347 0 9 0 1862 0\r
+r 1347 0 9 0 1844 0\r
+r 1347 0 9 0 1821 0\r
+r 1347 0 9 0 1798 0\r
+r 1347 0 9 0 1778 0\r
+r 1347 0 9 0 1762 0\r
+r 1347 0 9 0 1749 0\r
+r 1347 0 9 0 1733 0\r
+r 1347 0 9 0 1725 0\r
+r 1347 0 9 0 1717 0\r
+r 1347 0 9 0 1699 0\r
+r 1347 0 9 0 1679 0\r
+r 1347 0 9 0 1659 0\r
+r 1347 0 9 0 1644 0\r
+r 1347 0 9 0 1626 0\r
+r 1347 0 9 0 1603 0\r
+r 1347 0 9 0 1580 0\r
+r 1347 0 9 0 1560 0\r
+r 1347 0 9 0 1540 0\r
+r 1347 0 9 0 1520 0\r
+r 1347 0 9 0 1500 0\r
+r 1347 0 9 0 1480 0\r
+r 1347 0 9 0 1460 0\r
+r 1347 0 9 0 1425 0\r
+r 1347 0 9 0 1400 0\r
+r 1347 0 9 0 1387 0\r
+r 1347 0 9 0 1386 0\r
+r 1347 0 9 0 1385 0\r
+r 1347 0 9 0 1384 0\r
+r 1347 0 9 0 1383 0\r
+r 1347 0 9 0 1382 0\r
+r 1347 0 9 0 1381 0\r
+r 1347 0 9 0 1380 0\r
+r 1347 0 9 0 1379 0\r
+r 1347 0 9 0 1378 0\r
+r 1347 0 9 0 1376 0\r
+r 1347 0 9 0 1375 0\r
+r 1347 0 9 0 1373 0\r
+r 1347 0 9 0 1372 0\r
+r 1347 0 9 0 1371 0\r
+r 1347 0 9 0 1370 0\r
+r 1347 0 9 0 1369 0\r
+r 1347 0 9 0 1368 0\r
+r 1347 0 9 0 1366 0\r
+r 1347 0 9 0 1365 0\r
+r 1347 0 9 0 1364 0\r
+r 1347 0 9 0 1363 0\r
+r 1347 0 9 0 1359 0\r
+r 1347 0 9 0 1358 0\r
+r 1347 0 9 0 1354 0\r
+r 1347 0 9 0 1353 0\r
+r 1347 0 97 0 1350 0\r
+r 1347 0 1 0 69 0\r
+r 1347 0 5 0 1348 0\r
+r 1347 0 6 0 1349 0\r
+r 1347 0 2919 0 1351 0\r
+r 1347 0 7 0 89 0\r
+r 1347 0 7 0 77 0\r
+r 1348 0 2904 0 1347 0\r
+r 1348 0 1 0 10 0 s Devs-1.0\r
+r 1349 0 2905 0 1347 0\r
+r 1349 0 1 0 88 0 s http://www.simantics.org/Devs\r
+r 1350 0 1 0 99 0 s 1.0\r
+r 1350 0 2926 0 1347 0\r
+r 1351 0 65 0 1347 0\r
+r 1351 0 1 0 62 0\r
+r 1351 0 5 0 2711 0\r
+r 1351 0 6 0 1352 0\r
+r 1351 0 7 0 85 0\r
+r 1352 0 2905 0 1351 0\r
+r 1352 0 1 0 88 0 s http://www.simantics.org/Devs\r
+r 1353 0 1 0 408 0\r
+r 1353 0 394 0 1355 0\r
+r 1353 0 388 0 1354 0\r
+r 1353 0 5 0 2753 0\r
+r 1353 0 7 0 1347 0\r
+r 1353 0 7 0 374 0\r
+r 1354 0 192 0 1356 0\r
+r 1354 0 1 0 381 0\r
+r 1354 0 388 0 1020 0\r
+r 1354 0 388 0 402 0\r
+r 1354 0 5 0 2750 0\r
+r 1354 0 389 0 1353 0\r
+r 1354 0 390 0 1020 0\r
+r 1354 0 78 0 1357 0\r
+r 1354 0 7 0 1347 0\r
+r 1355 0 1 0 88 0 s http://www.simantics.org/Devs\r
+r 1355 0 2970 0 1353 0\r
+r 1356 0 1 0 10 0 s Devs Model Manager\r
+r 1356 0 2935 0 1354 0\r
+r 1357 0 1 0 10 0 s Devs Model Manager.\r
+r 1357 0 2923 0 1354 0\r
+r 1358 0 4 0 427 0\r
+r 1358 0 5 0 2698 0\r
+r 1358 0 7 0 1347 0\r
+r 1359 0 474 0 1360 0\r
+r 1359 0 59 0 2044 0\r
+r 1359 0 59 0 2040 0\r
+r 1359 0 59 0 2036 0\r
+r 1359 0 59 0 2021 0\r
+r 1359 0 59 0 2017 0\r
+r 1359 0 59 0 2003 0\r
+r 1359 0 59 0 1999 0\r
+r 1359 0 59 0 1988 0\r
+r 1359 0 59 0 1984 0\r
+r 1359 0 59 0 1970 0\r
+r 1359 0 59 0 1966 0\r
+r 1359 0 59 0 1962 0\r
+r 1359 0 59 0 1944 0\r
+r 1359 0 59 0 1940 0\r
+r 1359 0 59 0 1936 0\r
+r 1359 0 59 0 1921 0\r
+r 1359 0 59 0 1917 0\r
+r 1359 0 59 0 1906 0\r
+r 1359 0 59 0 1902 0\r
+r 1359 0 59 0 1898 0\r
+r 1359 0 59 0 1886 0\r
+r 1359 0 59 0 1882 0\r
+r 1359 0 59 0 1868 0\r
+r 1359 0 59 0 1858 0\r
+r 1359 0 59 0 1854 0\r
+r 1359 0 59 0 1840 0\r
+r 1359 0 59 0 1836 0\r
+r 1359 0 59 0 1832 0\r
+r 1359 0 59 0 1817 0\r
+r 1359 0 59 0 1813 0\r
+r 1359 0 59 0 1809 0\r
+r 1359 0 59 0 1794 0\r
+r 1359 0 59 0 1790 0\r
+r 1359 0 59 0 1786 0\r
+r 1359 0 59 0 1774 0\r
+r 1359 0 59 0 1758 0\r
+r 1359 0 59 0 1745 0\r
+r 1359 0 59 0 1729 0\r
+r 1359 0 59 0 1713 0\r
+r 1359 0 59 0 1709 0\r
+r 1359 0 59 0 1695 0\r
+r 1359 0 59 0 1691 0\r
+r 1359 0 59 0 1687 0\r
+r 1359 0 59 0 1675 0\r
+r 1359 0 59 0 1671 0\r
+r 1359 0 59 0 1667 0\r
+r 1359 0 59 0 1655 0\r
+r 1359 0 59 0 1651 0\r
+r 1359 0 59 0 1640 0\r
+r 1359 0 59 0 1636 0\r
+r 1359 0 59 0 1622 0\r
+r 1359 0 59 0 1618 0\r
+r 1359 0 59 0 1614 0\r
+r 1359 0 59 0 1599 0\r
+r 1359 0 59 0 1595 0\r
+r 1359 0 59 0 1591 0\r
+r 1359 0 59 0 1576 0\r
+r 1359 0 59 0 1572 0\r
+r 1359 0 59 0 1568 0\r
+r 1359 0 59 0 1556 0\r
+r 1359 0 59 0 1552 0\r
+r 1359 0 59 0 1548 0\r
+r 1359 0 59 0 1536 0\r
+r 1359 0 59 0 1532 0\r
+r 1359 0 59 0 1528 0\r
+r 1359 0 59 0 1516 0\r
+r 1359 0 59 0 1512 0\r
+r 1359 0 59 0 1508 0\r
+r 1359 0 59 0 1496 0\r
+r 1359 0 59 0 1492 0\r
+r 1359 0 59 0 1488 0\r
+r 1359 0 59 0 1476 0\r
+r 1359 0 59 0 1472 0\r
+r 1359 0 59 0 1468 0\r
+r 1359 0 59 0 1456 0\r
+r 1359 0 59 0 1452 0\r
+r 1359 0 59 0 1448 0\r
+r 1359 0 59 0 1444 0\r
+r 1359 0 59 0 1440 0\r
+r 1359 0 59 0 1436 0\r
+r 1359 0 59 0 1421 0\r
+r 1359 0 59 0 1417 0\r
+r 1359 0 59 0 1413 0\r
+r 1359 0 59 0 1409 0\r
+r 1359 0 59 0 1396 0\r
+r 1359 0 4 0 912 0\r
+r 1359 0 4 0 909 0\r
+r 1359 0 5 0 2705 0\r
+r 1359 0 7 0 1347 0\r
+r 1360 0 1360 0 1361 0\r
+r 1360 0 1 0 903 0\r
+r 1360 0 2 0 110 0\r
+r 1360 0 3 0 3135 0\r
+r 1360 0 476 0 1359 0\r
+r 1360 0 3135 0 1361 0\r
+r 1361 0 1360 0 1360 0\r
+r 1361 0 1 0 913 0\r
+r 1361 0 661 0 1362 0\r
+r 1361 0 3135 0 1360 0\r
+r 1362 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" overflow="visible" version="1.1"><ellipse cx="0.0" cy="0.0" rx="1.0" ry="1.0" fill="none" stroke-width="0.1" stroke="none"/></svg>\r
+r 1362 0 3019 0 1361 0\r
+r 1363 0 2 0 507 0\r
+r 1363 0 3 0 3136 0\r
+r 1363 0 5 0 2735 0\r
+r 1363 0 7 0 1347 0\r
+r 1364 0 1040 0 1420 0\r
+r 1364 0 488 0 1403 0\r
+r 1364 0 2 0 507 0\r
+r 1364 0 3 0 3137 0\r
+r 1364 0 5 0 2692 0\r
+r 1364 0 7 0 1347 0\r
+r 1365 0 1040 0 1598 0\r
+r 1365 0 488 0 1581 0\r
+r 1365 0 2 0 507 0\r
+r 1365 0 3 0 3138 0\r
+r 1365 0 5 0 2761 0\r
+r 1365 0 7 0 1347 0\r
+r 1366 0 1040 0 2020 0\r
+r 1366 0 1040 0 2002 0\r
+r 1366 0 1040 0 1987 0\r
+r 1366 0 1040 0 1920 0\r
+r 1366 0 1040 0 1885 0\r
+r 1366 0 1040 0 1857 0\r
+r 1366 0 1040 0 1777 0\r
+r 1366 0 1040 0 1761 0\r
+r 1366 0 1040 0 1748 0\r
+r 1366 0 1040 0 1732 0\r
+r 1366 0 1040 0 1712 0\r
+r 1366 0 1040 0 1690 0\r
+r 1366 0 1040 0 1654 0\r
+r 1366 0 1040 0 1639 0\r
+r 1366 0 1040 0 1594 0\r
+r 1366 0 488 0 2008 0\r
+r 1366 0 488 0 1993 0\r
+r 1366 0 488 0 1975 0\r
+r 1366 0 488 0 1911 0\r
+r 1366 0 488 0 1873 0\r
+r 1366 0 488 0 1845 0\r
+r 1366 0 488 0 1763 0\r
+r 1366 0 488 0 1750 0\r
+r 1366 0 488 0 1734 0\r
+r 1366 0 488 0 1718 0\r
+r 1366 0 488 0 1700 0\r
+r 1366 0 488 0 1680 0\r
+r 1366 0 488 0 1645 0\r
+r 1366 0 488 0 1627 0\r
+r 1366 0 488 0 1582 0\r
+r 1366 0 2 0 507 0\r
+r 1366 0 3 0 1367 0\r
+r 1366 0 5 0 2673 0\r
+r 1366 0 7 0 1347 0\r
+r 1367 0 2 0 507 0\r
+r 1367 0 3 0 1366 0\r
+r 1367 0 5 0 2767 0\r
+r 1368 0 1040 0 1965 0\r
+r 1368 0 1040 0 1939 0\r
+r 1368 0 1040 0 1901 0\r
+r 1368 0 1040 0 1835 0\r
+r 1368 0 1040 0 1812 0\r
+r 1368 0 1040 0 1789 0\r
+r 1368 0 1040 0 1670 0\r
+r 1368 0 1040 0 1617 0\r
+r 1368 0 1040 0 1571 0\r
+r 1368 0 1040 0 1551 0\r
+r 1368 0 1040 0 1531 0\r
+r 1368 0 1040 0 1511 0\r
+r 1368 0 1040 0 1491 0\r
+r 1368 0 1040 0 1471 0\r
+r 1368 0 1040 0 1439 0\r
+r 1368 0 1040 0 1412 0\r
+r 1368 0 488 0 1949 0\r
+r 1368 0 488 0 1926 0\r
+r 1368 0 488 0 1891 0\r
+r 1368 0 488 0 1822 0\r
+r 1368 0 488 0 1799 0\r
+r 1368 0 488 0 1779 0\r
+r 1368 0 488 0 1660 0\r
+r 1368 0 488 0 1604 0\r
+r 1368 0 488 0 1561 0\r
+r 1368 0 488 0 1541 0\r
+r 1368 0 488 0 1521 0\r
+r 1368 0 488 0 1501 0\r
+r 1368 0 488 0 1481 0\r
+r 1368 0 488 0 1461 0\r
+r 1368 0 488 0 1426 0\r
+r 1368 0 488 0 1401 0\r
+r 1368 0 2 0 507 0\r
+r 1368 0 3 0 3139 0\r
+r 1368 0 5 0 2743 0\r
+r 1368 0 7 0 1347 0\r
+r 1369 0 1040 0 1969 0\r
+r 1369 0 1040 0 1943 0\r
+r 1369 0 1040 0 1905 0\r
+r 1369 0 1040 0 1839 0\r
+r 1369 0 1040 0 1816 0\r
+r 1369 0 1040 0 1793 0\r
+r 1369 0 1040 0 1674 0\r
+r 1369 0 1040 0 1621 0\r
+r 1369 0 1040 0 1575 0\r
+r 1369 0 1040 0 1555 0\r
+r 1369 0 1040 0 1535 0\r
+r 1369 0 1040 0 1515 0\r
+r 1369 0 1040 0 1495 0\r
+r 1369 0 1040 0 1475 0\r
+r 1369 0 1040 0 1443 0\r
+r 1369 0 1040 0 1416 0\r
+r 1369 0 488 0 1950 0\r
+r 1369 0 488 0 1927 0\r
+r 1369 0 488 0 1892 0\r
+r 1369 0 488 0 1823 0\r
+r 1369 0 488 0 1800 0\r
+r 1369 0 488 0 1780 0\r
+r 1369 0 488 0 1661 0\r
+r 1369 0 488 0 1605 0\r
+r 1369 0 488 0 1562 0\r
+r 1369 0 488 0 1542 0\r
+r 1369 0 488 0 1522 0\r
+r 1369 0 488 0 1502 0\r
+r 1369 0 488 0 1482 0\r
+r 1369 0 488 0 1462 0\r
+r 1369 0 488 0 1427 0\r
+r 1369 0 488 0 1402 0\r
+r 1369 0 2 0 507 0\r
+r 1369 0 3 0 3140 0\r
+r 1369 0 5 0 2744 0\r
+r 1369 0 7 0 1347 0\r
+r 1370 0 1040 0 1447 0\r
+r 1370 0 488 0 1428 0\r
+r 1370 0 2 0 507 0\r
+r 1370 0 3 0 3141 0\r
+r 1370 0 5 0 2746 0\r
+r 1370 0 7 0 1347 0\r
+r 1371 0 1040 0 1451 0\r
+r 1371 0 488 0 1429 0\r
+r 1371 0 2 0 507 0\r
+r 1371 0 3 0 3142 0\r
+r 1371 0 5 0 2747 0\r
+r 1371 0 7 0 1347 0\r
+r 1372 0 1040 0 1455 0\r
+r 1372 0 488 0 1430 0\r
+r 1372 0 2 0 507 0\r
+r 1372 0 3 0 3143 0\r
+r 1372 0 5 0 2749 0\r
+r 1372 0 7 0 1347 0\r
+r 1373 0 1040 0 2024 0\r
+r 1373 0 1040 0 2006 0\r
+r 1373 0 1040 0 1991 0\r
+r 1373 0 1040 0 1973 0\r
+r 1373 0 1040 0 1947 0\r
+r 1373 0 1040 0 1924 0\r
+r 1373 0 1040 0 1909 0\r
+r 1373 0 1040 0 1889 0\r
+r 1373 0 1040 0 1871 0\r
+r 1373 0 1040 0 1861 0\r
+r 1373 0 1040 0 1843 0\r
+r 1373 0 1040 0 1820 0\r
+r 1373 0 1040 0 1797 0\r
+r 1373 0 1040 0 1716 0\r
+r 1373 0 1040 0 1678 0\r
+r 1373 0 1040 0 1658 0\r
+r 1373 0 1040 0 1643 0\r
+r 1373 0 1040 0 1625 0\r
+r 1373 0 1040 0 1602 0\r
+r 1373 0 1040 0 1579 0\r
+r 1373 0 1040 0 1559 0\r
+r 1373 0 1040 0 1539 0\r
+r 1373 0 1040 0 1519 0\r
+r 1373 0 1040 0 1499 0\r
+r 1373 0 1040 0 1479 0\r
+r 1373 0 1040 0 1459 0\r
+r 1373 0 1040 0 1424 0\r
+r 1373 0 1040 0 1399 0\r
+r 1373 0 488 0 2009 0\r
+r 1373 0 488 0 1994 0\r
+r 1373 0 488 0 1976 0\r
+r 1373 0 488 0 1951 0\r
+r 1373 0 488 0 1928 0\r
+r 1373 0 488 0 1912 0\r
+r 1373 0 488 0 1893 0\r
+r 1373 0 488 0 1874 0\r
+r 1373 0 488 0 1863 0\r
+r 1373 0 488 0 1846 0\r
+r 1373 0 488 0 1824 0\r
+r 1373 0 488 0 1801 0\r
+r 1373 0 488 0 1781 0\r
+r 1373 0 488 0 1701 0\r
+r 1373 0 488 0 1662 0\r
+r 1373 0 488 0 1646 0\r
+r 1373 0 488 0 1628 0\r
+r 1373 0 488 0 1606 0\r
+r 1373 0 488 0 1583 0\r
+r 1373 0 488 0 1563 0\r
+r 1373 0 488 0 1543 0\r
+r 1373 0 488 0 1523 0\r
+r 1373 0 488 0 1503 0\r
+r 1373 0 488 0 1483 0\r
+r 1373 0 488 0 1463 0\r
+r 1373 0 488 0 1431 0\r
+r 1373 0 488 0 1404 0\r
+r 1373 0 488 0 1388 0\r
+r 1373 0 2 0 507 0\r
+r 1373 0 3 0 1374 0\r
+r 1373 0 5 0 2682 0\r
+r 1373 0 7 0 1347 0\r
+r 1374 0 2 0 507 0\r
+r 1374 0 3 0 1373 0\r
+r 1374 0 5 0 2674 0\r
+r 1375 0 1040 0 1694 0\r
+r 1375 0 488 0 1681 0\r
+r 1375 0 2 0 507 0\r
+r 1375 0 3 0 3144 0\r
+r 1375 0 5 0 2708 0\r
+r 1375 0 7 0 1347 0\r
+r 1376 0 1040 0 1698 0\r
+r 1376 0 488 0 1682 0\r
+r 1376 0 2 0 507 0\r
+r 1376 0 3 0 3145 0\r
+r 1376 0 5 0 2709 0\r
+r 1376 0 7 0 1347 0\r
+r 1377 0 1 0 42 0\r
+r 1377 0 2 0 94 0\r
+r 1377 0 3 0 3146 0\r
+r 1377 0 60 0 1386 0\r
+r 1377 0 60 0 1385 0\r
+r 1377 0 60 0 1384 0\r
+r 1377 0 60 0 1383 0\r
+r 1377 0 60 0 1382 0\r
+r 1377 0 60 0 1381 0\r
+r 1377 0 60 0 1380 0\r
+r 1377 0 60 0 1379 0\r
+r 1377 0 60 0 1378 0\r
+r 1377 0 5 0 2676 0\r
+r 1378 0 2 0 1377 0\r
+r 1378 0 3 0 3147 0\r
+r 1378 0 28 0 11 0\r
+r 1378 0 5 0 2752 0\r
+r 1378 0 7 0 1347 0\r
+r 1379 0 488 0 1703 0\r
+r 1379 0 2921 0 1704 0\r
+r 1379 0 2 0 1377 0\r
+r 1379 0 3 0 3148 0\r
+r 1379 0 28 0 12 0\r
+r 1379 0 5 0 2696 0\r
+r 1379 0 7 0 1347 0\r
+r 1380 0 488 0 2011 0\r
+r 1380 0 488 0 1978 0\r
+r 1380 0 488 0 1768 0\r
+r 1380 0 488 0 1752 0\r
+r 1380 0 488 0 1739 0\r
+r 1380 0 488 0 1723 0\r
+r 1380 0 488 0 1608 0\r
+r 1380 0 488 0 1585 0\r
+r 1380 0 2921 0 2012 0\r
+r 1380 0 2921 0 1979 0\r
+r 1380 0 2921 0 1769 0\r
+r 1380 0 2921 0 1753 0\r
+r 1380 0 2921 0 1740 0\r
+r 1380 0 2921 0 1724 0\r
+r 1380 0 2921 0 1609 0\r
+r 1380 0 2921 0 1586 0\r
+r 1380 0 2 0 1377 0\r
+r 1380 0 3 0 3149 0\r
+r 1380 0 28 0 14 0\r
+r 1380 0 5 0 2670 0\r
+r 1380 0 7 0 1347 0\r
+r 1381 0 488 0 1630 0\r
+r 1381 0 2921 0 1631 0\r
+r 1381 0 2 0 1377 0\r
+r 1381 0 3 0 3150 0\r
+r 1381 0 28 0 12 0\r
+r 1381 0 5 0 2726 0\r
+r 1381 0 7 0 1347 0\r
+r 1382 0 488 0 1953 0\r
+r 1382 0 2921 0 1954 0\r
+r 1382 0 2 0 1377 0\r
+r 1382 0 3 0 3151 0\r
+r 1382 0 28 0 12 0\r
+r 1382 0 5 0 2723 0\r
+r 1382 0 7 0 1347 0\r
+r 1383 0 488 0 1956 0\r
+r 1383 0 2921 0 1957 0\r
+r 1383 0 2 0 1377 0\r
+r 1383 0 3 0 3152 0\r
+r 1383 0 28 0 12 0\r
+r 1383 0 5 0 2725 0\r
+r 1383 0 7 0 1347 0\r
+r 1384 0 488 0 1765 0\r
+r 1384 0 488 0 1736 0\r
+r 1384 0 488 0 1720 0\r
+r 1384 0 488 0 1390 0\r
+r 1384 0 2921 0 1766 0\r
+r 1384 0 2921 0 1737 0\r
+r 1384 0 2921 0 1721 0\r
+r 1384 0 2921 0 1391 0\r
+r 1384 0 2 0 1377 0\r
+r 1384 0 3 0 3153 0\r
+r 1384 0 28 0 12 0\r
+r 1384 0 5 0 2756 0\r
+r 1384 0 7 0 1347 0\r
+r 1385 0 488 0 1848 0\r
+r 1385 0 488 0 1826 0\r
+r 1385 0 488 0 1803 0\r
+r 1385 0 2921 0 1849 0\r
+r 1385 0 2921 0 1827 0\r
+r 1385 0 2921 0 1804 0\r
+r 1385 0 2 0 1377 0\r
+r 1385 0 3 0 3154 0\r
+r 1385 0 28 0 14 0\r
+r 1385 0 5 0 2707 0\r
+r 1385 0 7 0 1347 0\r
+r 1386 0 488 0 1930 0\r
+r 1386 0 488 0 1876 0\r
+r 1386 0 2921 0 1931 0\r
+r 1386 0 2921 0 1877 0\r
+r 1386 0 2 0 1377 0\r
+r 1386 0 3 0 3155 0\r
+r 1386 0 28 0 12 0\r
+r 1386 0 5 0 2678 0\r
+r 1386 0 7 0 1347 0\r
+r 1387 0 1032 0 1392 2\r
+r 1387 0 472 0 1390 0\r
+r 1387 0 472 0 1388 0\r
+r 1387 0 4 0 466 0\r
+r 1387 0 5 0 2740 0\r
+r 1387 0 70 0 1391 0\r
+r 1387 0 7 0 1347 0\r
+r 1388 0 1 0 504 0\r
+r 1388 0 479 0 1387 0\r
+r 1388 0 487 0 1373 0\r
+r 1389 0 1 0 12 0 d 1.0\r
+r 1389 0 2922 0 1391 0\r
+r 1390 0 1 0 489 0\r
+r 1390 0 479 0 1387 0\r
+r 1390 0 487 0 1384 0\r
+r 1391 0 2920 0 1387 0\r
+r 1391 0 72 0 1389 0\r
+r 1391 0 1 0 151 0\r
+r 1391 0 71 0 1384 0\r
+r 1392 2 472 0 1398 0\r
+r 1392 2 474 0 1393 0\r
+r 1392 2 4 0 912 0\r
+r 1392 2 5 0 2681 0\r
+r 1392 2 1031 0 1387 0\r
+r 1393 0 1 0 903 0\r
+r 1393 0 1393 0 1394 0\r
+r 1393 0 2 0 110 0\r
+r 1393 0 3 0 3156 0\r
+r 1393 0 3156 0 1396 0\r
+r 1393 0 476 0 1392 2\r
+r 1394 0 1393 0 1396 0\r
+r 1394 0 1 0 913 0\r
+r 1394 0 3156 0 1393 0\r
+r 1394 0 661 0 1395 0\r
+r 1395 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-6" y="-4" width="12" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="2.5">Random</text> <!-- <text x="0" y="-2.5" text-anchor="middle">in</text> <text x="0" y="35" text-anchor="middle">out</text> --> </svg>\r
+r 1395 0 3019 0 1394 0\r
+r 1396 0 1393 0 1393 0\r
+r 1396 0 1 0 1359 0\r
+r 1396 0 3156 0 1394 0\r
+r 1396 0 548 0 1397 0\r
+r 1396 0 911 0 1398 0\r
+r 1397 0 2985 0 1396 0\r
+r 1397 0 1 0 545 0 [d 1 0 0 1 6 0\r
+r 1398 0 1 0 504 0\r
+r 1398 0 3059 0 1396 0\r
+r 1398 0 479 0 1392 2\r
+r 1398 0 487 0 1399 0\r
+r 1399 0 488 0 1398 0\r
+r 1399 0 2 0 507 0\r
+r 1399 0 3 0 3157 0\r
+r 1399 0 1039 0 1373 0\r
+r 1400 0 1032 0 1405 3\r
+r 1400 0 472 0 1404 0\r
+r 1400 0 472 0 1403 0\r
+r 1400 0 472 0 1402 0\r
+r 1400 0 472 0 1401 0\r
+r 1400 0 4 0 466 0\r
+r 1400 0 5 0 2699 0\r
+r 1400 0 7 0 1347 0\r
+r 1401 0 1 0 504 0\r
+r 1401 0 479 0 1400 0\r
+r 1401 0 487 0 1368 0\r
+r 1402 0 1 0 504 0\r
+r 1402 0 479 0 1400 0\r
+r 1402 0 487 0 1369 0\r
+r 1403 0 1 0 504 0\r
+r 1403 0 479 0 1400 0\r
+r 1403 0 487 0 1364 0\r
+r 1404 0 1 0 504 0\r
+r 1404 0 479 0 1400 0\r
+r 1404 0 487 0 1373 0\r
+r 1405 3 472 0 1423 0\r
+r 1405 3 472 0 1419 0\r
+r 1405 3 472 0 1415 0\r
+r 1405 3 472 0 1411 0\r
+r 1405 3 474 0 1406 0\r
+r 1405 3 4 0 912 0\r
+r 1405 3 5 0 2693 0\r
+r 1405 3 1031 0 1400 0\r
+r 1406 0 1 0 903 0\r
+r 1406 0 2 0 110 0\r
+r 1406 0 3 0 3158 0\r
+r 1406 0 476 0 1405 3\r
+r 1406 0 3158 0 1421 0\r
+r 1406 0 1406 0 1407 0\r
+r 1407 0 1 0 913 0\r
+r 1407 0 661 0 1408 0\r
+r 1407 0 3158 0 1406 0\r
+r 1407 0 1406 0 1409 0\r
+r 1408 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">SEL</text> </svg>\r
+r 1408 0 3019 0 1407 0\r
+r 1409 0 1 0 1359 0\r
+r 1409 0 548 0 1410 0\r
+r 1409 0 3158 0 1407 0\r
+r 1409 0 1406 0 1413 0\r
+r 1409 0 911 0 1411 0\r
+r 1410 0 2985 0 1409 0\r
+r 1410 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1411 0 1 0 504 0\r
+r 1411 0 3059 0 1409 0\r
+r 1411 0 479 0 1405 3\r
+r 1411 0 487 0 1412 0\r
+r 1412 0 488 0 1411 0\r
+r 1412 0 2 0 507 0\r
+r 1412 0 3 0 3159 0\r
+r 1412 0 1039 0 1368 0\r
+r 1413 0 1 0 1359 0\r
+r 1413 0 548 0 1414 0\r
+r 1413 0 3158 0 1409 0\r
+r 1413 0 1406 0 1417 0\r
+r 1413 0 911 0 1415 0\r
+r 1414 0 2985 0 1413 0\r
+r 1414 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1415 0 1 0 504 0\r
+r 1415 0 3059 0 1413 0\r
+r 1415 0 479 0 1405 3\r
+r 1415 0 487 0 1416 0\r
+r 1416 0 488 0 1415 0\r
+r 1416 0 2 0 507 0\r
+r 1416 0 3 0 3160 0\r
+r 1416 0 1039 0 1369 0\r
+r 1417 0 1 0 1359 0\r
+r 1417 0 548 0 1418 0\r
+r 1417 0 3158 0 1413 0\r
+r 1417 0 1406 0 1421 0\r
+r 1417 0 911 0 1419 0\r
+r 1418 0 2985 0 1417 0\r
+r 1418 0 1 0 545 0 [d 1 0 0 1 0 -4\r
+r 1419 0 1 0 504 0\r
+r 1419 0 3059 0 1417 0\r
+r 1419 0 479 0 1405 3\r
+r 1419 0 487 0 1420 0\r
+r 1420 0 488 0 1419 0\r
+r 1420 0 2 0 507 0\r
+r 1420 0 3 0 3161 0\r
+r 1420 0 1039 0 1364 0\r
+r 1421 0 1 0 1359 0\r
+r 1421 0 548 0 1422 0\r
+r 1421 0 3158 0 1417 0\r
+r 1421 0 1406 0 1406 0\r
+r 1421 0 911 0 1423 0\r
+r 1422 0 2985 0 1421 0\r
+r 1422 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1423 0 1 0 504 0\r
+r 1423 0 3059 0 1421 0\r
+r 1423 0 479 0 1405 3\r
+r 1423 0 487 0 1424 0\r
+r 1424 0 488 0 1423 0\r
+r 1424 0 2 0 507 0\r
+r 1424 0 3 0 3162 0\r
+r 1424 0 1039 0 1373 0\r
+r 1425 0 1032 0 1432 4\r
+r 1425 0 472 0 1431 0\r
+r 1425 0 472 0 1430 0\r
+r 1425 0 472 0 1429 0\r
+r 1425 0 472 0 1428 0\r
+r 1425 0 472 0 1427 0\r
+r 1425 0 472 0 1426 0\r
+r 1425 0 4 0 466 0\r
+r 1425 0 5 0 2690 0\r
+r 1425 0 7 0 1347 0\r
+r 1426 0 1 0 504 0\r
+r 1426 0 479 0 1425 0\r
+r 1426 0 487 0 1368 0\r
+r 1427 0 1 0 504 0\r
+r 1427 0 479 0 1425 0\r
+r 1427 0 487 0 1369 0\r
+r 1428 0 1 0 504 0\r
+r 1428 0 479 0 1425 0\r
+r 1428 0 487 0 1370 0\r
+r 1429 0 1 0 504 0\r
+r 1429 0 479 0 1425 0\r
+r 1429 0 487 0 1371 0\r
+r 1430 0 1 0 504 0\r
+r 1430 0 479 0 1425 0\r
+r 1430 0 487 0 1372 0\r
+r 1431 0 1 0 504 0\r
+r 1431 0 479 0 1425 0\r
+r 1431 0 487 0 1373 0\r
+r 1432 4 472 0 1458 0\r
+r 1432 4 472 0 1454 0\r
+r 1432 4 472 0 1450 0\r
+r 1432 4 472 0 1446 0\r
+r 1432 4 472 0 1442 0\r
+r 1432 4 472 0 1438 0\r
+r 1432 4 474 0 1433 0\r
+r 1432 4 4 0 912 0\r
+r 1432 4 5 0 2718 0\r
+r 1432 4 1031 0 1425 0\r
+r 1433 0 1 0 903 0\r
+r 1433 0 1433 0 1434 0\r
+r 1433 0 2 0 110 0\r
+r 1433 0 3163 0 1456 0\r
+r 1433 0 3 0 3163 0\r
+r 1433 0 476 0 1432 4\r
+r 1434 0 1433 0 1436 0\r
+r 1434 0 1 0 913 0\r
+r 1434 0 3163 0 1433 0\r
+r 1434 0 661 0 1435 0\r
+r 1435 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">rnd</text> </svg>\r
+r 1435 0 3019 0 1434 0\r
+r 1436 0 1433 0 1440 0\r
+r 1436 0 1 0 1359 0\r
+r 1436 0 3163 0 1434 0\r
+r 1436 0 548 0 1437 0\r
+r 1436 0 911 0 1438 0\r
+r 1437 0 2985 0 1436 0\r
+r 1437 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1438 0 1 0 504 0\r
+r 1438 0 3059 0 1436 0\r
+r 1438 0 479 0 1432 4\r
+r 1438 0 487 0 1439 0\r
+r 1439 0 488 0 1438 0\r
+r 1439 0 2 0 507 0\r
+r 1439 0 3 0 3164 0\r
+r 1439 0 1039 0 1368 0\r
+r 1440 0 1433 0 1444 0\r
+r 1440 0 1 0 1359 0\r
+r 1440 0 3163 0 1436 0\r
+r 1440 0 548 0 1441 0\r
+r 1440 0 911 0 1442 0\r
+r 1441 0 2985 0 1440 0\r
+r 1441 0 1 0 545 0 [d 1 0 0 1 -4 -1\r
+r 1442 0 1 0 504 0\r
+r 1442 0 3059 0 1440 0\r
+r 1442 0 479 0 1432 4\r
+r 1442 0 487 0 1443 0\r
+r 1443 0 488 0 1442 0\r
+r 1443 0 2 0 507 0\r
+r 1443 0 3 0 3165 0\r
+r 1443 0 1039 0 1369 0\r
+r 1444 0 1433 0 1448 0\r
+r 1444 0 1 0 1359 0\r
+r 1444 0 3163 0 1440 0\r
+r 1444 0 548 0 1445 0\r
+r 1444 0 911 0 1446 0\r
+r 1445 0 2985 0 1444 0\r
+r 1445 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1446 0 1 0 504 0\r
+r 1446 0 3059 0 1444 0\r
+r 1446 0 479 0 1432 4\r
+r 1446 0 487 0 1447 0\r
+r 1447 0 488 0 1446 0\r
+r 1447 0 2 0 507 0\r
+r 1447 0 3 0 3166 0\r
+r 1447 0 1039 0 1370 0\r
+r 1448 0 1433 0 1452 0\r
+r 1448 0 1 0 1359 0\r
+r 1448 0 3163 0 1444 0\r
+r 1448 0 548 0 1449 0\r
+r 1448 0 911 0 1450 0\r
+r 1449 0 2985 0 1448 0\r
+r 1449 0 1 0 545 0 [d 1 0 0 1 -4 1\r
+r 1450 0 1 0 504 0\r
+r 1450 0 3059 0 1448 0\r
+r 1450 0 479 0 1432 4\r
+r 1450 0 487 0 1451 0\r
+r 1451 0 488 0 1450 0\r
+r 1451 0 2 0 507 0\r
+r 1451 0 3 0 3167 0\r
+r 1451 0 1039 0 1371 0\r
+r 1452 0 1433 0 1456 0\r
+r 1452 0 1 0 1359 0\r
+r 1452 0 3163 0 1448 0\r
+r 1452 0 548 0 1453 0\r
+r 1452 0 911 0 1454 0\r
+r 1453 0 2985 0 1452 0\r
+r 1453 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1454 0 1 0 504 0\r
+r 1454 0 3059 0 1452 0\r
+r 1454 0 479 0 1432 4\r
+r 1454 0 487 0 1455 0\r
+r 1455 0 488 0 1454 0\r
+r 1455 0 2 0 507 0\r
+r 1455 0 3 0 3168 0\r
+r 1455 0 1039 0 1372 0\r
+r 1456 0 1433 0 1433 0\r
+r 1456 0 1 0 1359 0\r
+r 1456 0 3163 0 1452 0\r
+r 1456 0 548 0 1457 0\r
+r 1456 0 911 0 1458 0\r
+r 1457 0 2985 0 1456 0\r
+r 1457 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1458 0 1 0 504 0\r
+r 1458 0 3059 0 1456 0\r
+r 1458 0 479 0 1432 4\r
+r 1458 0 487 0 1459 0\r
+r 1459 0 488 0 1458 0\r
+r 1459 0 2 0 507 0\r
+r 1459 0 3 0 3169 0\r
+r 1459 0 1039 0 1373 0\r
+r 1460 0 1032 0 1464 5\r
+r 1460 0 472 0 1463 0\r
+r 1460 0 472 0 1462 0\r
+r 1460 0 472 0 1461 0\r
+r 1460 0 4 0 466 0\r
+r 1460 0 5 0 2689 0\r
+r 1460 0 7 0 1347 0\r
+r 1461 0 1 0 504 0\r
+r 1461 0 479 0 1460 0\r
+r 1461 0 487 0 1368 0\r
+r 1462 0 1 0 504 0\r
+r 1462 0 479 0 1460 0\r
+r 1462 0 487 0 1369 0\r
+r 1463 0 1 0 504 0\r
+r 1463 0 479 0 1460 0\r
+r 1463 0 487 0 1373 0\r
+r 1464 5 472 0 1478 0\r
+r 1464 5 472 0 1474 0\r
+r 1464 5 472 0 1470 0\r
+r 1464 5 474 0 1465 0\r
+r 1464 5 4 0 912 0\r
+r 1464 5 5 0 2731 0\r
+r 1464 5 1031 0 1460 0\r
+r 1465 0 1 0 903 0\r
+r 1465 0 1465 0 1466 0\r
+r 1465 0 3170 0 1476 0\r
+r 1465 0 2 0 110 0\r
+r 1465 0 3 0 3170 0\r
+r 1465 0 476 0 1464 5\r
+r 1466 0 1465 0 1468 0\r
+r 1466 0 1 0 913 0\r
+r 1466 0 3170 0 1465 0\r
+r 1466 0 661 0 1467 0\r
+r 1467 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">MIN</text> </svg>\r
+r 1467 0 3019 0 1466 0\r
+r 1468 0 1465 0 1472 0\r
+r 1468 0 1 0 1359 0\r
+r 1468 0 3170 0 1466 0\r
+r 1468 0 548 0 1469 0\r
+r 1468 0 911 0 1470 0\r
+r 1469 0 2985 0 1468 0\r
+r 1469 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1470 0 1 0 504 0\r
+r 1470 0 3059 0 1468 0\r
+r 1470 0 479 0 1464 5\r
+r 1470 0 487 0 1471 0\r
+r 1471 0 488 0 1470 0\r
+r 1471 0 2 0 507 0\r
+r 1471 0 3 0 3171 0\r
+r 1471 0 1039 0 1368 0\r
+r 1472 0 1465 0 1476 0\r
+r 1472 0 1 0 1359 0\r
+r 1472 0 3170 0 1468 0\r
+r 1472 0 548 0 1473 0\r
+r 1472 0 911 0 1474 0\r
+r 1473 0 2985 0 1472 0\r
+r 1473 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1474 0 1 0 504 0\r
+r 1474 0 3059 0 1472 0\r
+r 1474 0 479 0 1464 5\r
+r 1474 0 487 0 1475 0\r
+r 1475 0 488 0 1474 0\r
+r 1475 0 2 0 507 0\r
+r 1475 0 3 0 3172 0\r
+r 1475 0 1039 0 1369 0\r
+r 1476 0 1465 0 1465 0\r
+r 1476 0 1 0 1359 0\r
+r 1476 0 3170 0 1472 0\r
+r 1476 0 548 0 1477 0\r
+r 1476 0 911 0 1478 0\r
+r 1477 0 2985 0 1476 0\r
+r 1477 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1478 0 1 0 504 0\r
+r 1478 0 3059 0 1476 0\r
+r 1478 0 479 0 1464 5\r
+r 1478 0 487 0 1479 0\r
+r 1479 0 488 0 1478 0\r
+r 1479 0 2 0 507 0\r
+r 1479 0 3 0 3173 0\r
+r 1479 0 1039 0 1373 0\r
+r 1480 0 1032 0 1484 6\r
+r 1480 0 472 0 1483 0\r
+r 1480 0 472 0 1482 0\r
+r 1480 0 472 0 1481 0\r
+r 1480 0 4 0 466 0\r
+r 1480 0 5 0 2677 0\r
+r 1480 0 7 0 1347 0\r
+r 1481 0 1 0 504 0\r
+r 1481 0 479 0 1480 0\r
+r 1481 0 487 0 1368 0\r
+r 1482 0 1 0 504 0\r
+r 1482 0 479 0 1480 0\r
+r 1482 0 487 0 1369 0\r
+r 1483 0 1 0 504 0\r
+r 1483 0 479 0 1480 0\r
+r 1483 0 487 0 1373 0\r
+r 1484 6 472 0 1498 0\r
+r 1484 6 472 0 1494 0\r
+r 1484 6 472 0 1490 0\r
+r 1484 6 474 0 1485 0\r
+r 1484 6 4 0 912 0\r
+r 1484 6 5 0 2679 0\r
+r 1484 6 1031 0 1480 0\r
+r 1485 0 1 0 903 0\r
+r 1485 0 2 0 110 0\r
+r 1485 0 3 0 3174 0\r
+r 1485 0 476 0 1484 6\r
+r 1485 0 1485 0 1486 0\r
+r 1485 0 3174 0 1496 0\r
+r 1486 0 1 0 913 0\r
+r 1486 0 1485 0 1488 0\r
+r 1486 0 661 0 1487 0\r
+r 1486 0 3174 0 1485 0\r
+r 1487 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">MAX</text> </svg>\r
+r 1487 0 3019 0 1486 0\r
+r 1488 0 1 0 1359 0\r
+r 1488 0 548 0 1489 0\r
+r 1488 0 1485 0 1492 0\r
+r 1488 0 3174 0 1486 0\r
+r 1488 0 911 0 1490 0\r
+r 1489 0 2985 0 1488 0\r
+r 1489 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1490 0 1 0 504 0\r
+r 1490 0 3059 0 1488 0\r
+r 1490 0 479 0 1484 6\r
+r 1490 0 487 0 1491 0\r
+r 1491 0 488 0 1490 0\r
+r 1491 0 2 0 507 0\r
+r 1491 0 3 0 3175 0\r
+r 1491 0 1039 0 1368 0\r
+r 1492 0 1 0 1359 0\r
+r 1492 0 548 0 1493 0\r
+r 1492 0 1485 0 1496 0\r
+r 1492 0 3174 0 1488 0\r
+r 1492 0 911 0 1494 0\r
+r 1493 0 2985 0 1492 0\r
+r 1493 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1494 0 1 0 504 0\r
+r 1494 0 3059 0 1492 0\r
+r 1494 0 479 0 1484 6\r
+r 1494 0 487 0 1495 0\r
+r 1495 0 488 0 1494 0\r
+r 1495 0 2 0 507 0\r
+r 1495 0 3 0 3176 0\r
+r 1495 0 1039 0 1369 0\r
+r 1496 0 1 0 1359 0\r
+r 1496 0 548 0 1497 0\r
+r 1496 0 1485 0 1485 0\r
+r 1496 0 3174 0 1492 0\r
+r 1496 0 911 0 1498 0\r
+r 1497 0 2985 0 1496 0\r
+r 1497 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1498 0 1 0 504 0\r
+r 1498 0 3059 0 1496 0\r
+r 1498 0 479 0 1484 6\r
+r 1498 0 487 0 1499 0\r
+r 1499 0 488 0 1498 0\r
+r 1499 0 2 0 507 0\r
+r 1499 0 3 0 3177 0\r
+r 1499 0 1039 0 1373 0\r
+r 1500 0 1032 0 1504 7\r
+r 1500 0 472 0 1503 0\r
+r 1500 0 472 0 1502 0\r
+r 1500 0 472 0 1501 0\r
+r 1500 0 4 0 466 0\r
+r 1500 0 5 0 2721 0\r
+r 1500 0 7 0 1347 0\r
+r 1501 0 1 0 504 0\r
+r 1501 0 479 0 1500 0\r
+r 1501 0 487 0 1368 0\r
+r 1502 0 1 0 504 0\r
+r 1502 0 479 0 1500 0\r
+r 1502 0 487 0 1369 0\r
+r 1503 0 1 0 504 0\r
+r 1503 0 479 0 1500 0\r
+r 1503 0 487 0 1373 0\r
+r 1504 7 472 0 1518 0\r
+r 1504 7 472 0 1514 0\r
+r 1504 7 472 0 1510 0\r
+r 1504 7 474 0 1505 0\r
+r 1504 7 4 0 912 0\r
+r 1504 7 5 0 2717 0\r
+r 1504 7 1031 0 1500 0\r
+r 1505 0 1 0 903 0\r
+r 1505 0 1505 0 1506 0\r
+r 1505 0 3178 0 1516 0\r
+r 1505 0 2 0 110 0\r
+r 1505 0 3 0 3178 0\r
+r 1505 0 476 0 1504 7\r
+r 1506 0 1505 0 1508 0\r
+r 1506 0 1 0 913 0\r
+r 1506 0 3178 0 1505 0\r
+r 1506 0 661 0 1507 0\r
+r 1507 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">+</text> </svg>\r
+r 1507 0 3019 0 1506 0\r
+r 1508 0 1505 0 1512 0\r
+r 1508 0 1 0 1359 0\r
+r 1508 0 3178 0 1506 0\r
+r 1508 0 548 0 1509 0\r
+r 1508 0 911 0 1510 0\r
+r 1509 0 2985 0 1508 0\r
+r 1509 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1510 0 1 0 504 0\r
+r 1510 0 3059 0 1508 0\r
+r 1510 0 479 0 1504 7\r
+r 1510 0 487 0 1511 0\r
+r 1511 0 488 0 1510 0\r
+r 1511 0 2 0 507 0\r
+r 1511 0 3 0 3179 0\r
+r 1511 0 1039 0 1368 0\r
+r 1512 0 1505 0 1516 0\r
+r 1512 0 1 0 1359 0\r
+r 1512 0 3178 0 1508 0\r
+r 1512 0 548 0 1513 0\r
+r 1512 0 911 0 1514 0\r
+r 1513 0 2985 0 1512 0\r
+r 1513 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1514 0 1 0 504 0\r
+r 1514 0 3059 0 1512 0\r
+r 1514 0 479 0 1504 7\r
+r 1514 0 487 0 1515 0\r
+r 1515 0 488 0 1514 0\r
+r 1515 0 2 0 507 0\r
+r 1515 0 3 0 3180 0\r
+r 1515 0 1039 0 1369 0\r
+r 1516 0 1505 0 1505 0\r
+r 1516 0 1 0 1359 0\r
+r 1516 0 3178 0 1512 0\r
+r 1516 0 548 0 1517 0\r
+r 1516 0 911 0 1518 0\r
+r 1517 0 2985 0 1516 0\r
+r 1517 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1518 0 1 0 504 0\r
+r 1518 0 3059 0 1516 0\r
+r 1518 0 479 0 1504 7\r
+r 1518 0 487 0 1519 0\r
+r 1519 0 488 0 1518 0\r
+r 1519 0 2 0 507 0\r
+r 1519 0 3 0 3181 0\r
+r 1519 0 1039 0 1373 0\r
+r 1520 0 1032 0 1524 8\r
+r 1520 0 472 0 1523 0\r
+r 1520 0 472 0 1522 0\r
+r 1520 0 472 0 1521 0\r
+r 1520 0 4 0 466 0\r
+r 1520 0 5 0 2759 0\r
+r 1520 0 7 0 1347 0\r
+r 1521 0 1 0 504 0\r
+r 1521 0 479 0 1520 0\r
+r 1521 0 487 0 1368 0\r
+r 1522 0 1 0 504 0\r
+r 1522 0 479 0 1520 0\r
+r 1522 0 487 0 1369 0\r
+r 1523 0 1 0 504 0\r
+r 1523 0 479 0 1520 0\r
+r 1523 0 487 0 1373 0\r
+r 1524 8 472 0 1538 0\r
+r 1524 8 472 0 1534 0\r
+r 1524 8 472 0 1530 0\r
+r 1524 8 474 0 1525 0\r
+r 1524 8 4 0 912 0\r
+r 1524 8 5 0 2716 0\r
+r 1524 8 1031 0 1520 0\r
+r 1525 0 1 0 903 0\r
+r 1525 0 2 0 110 0\r
+r 1525 0 3 0 3182 0\r
+r 1525 0 476 0 1524 8\r
+r 1525 0 1525 0 1526 0\r
+r 1525 0 3182 0 1536 0\r
+r 1526 0 1 0 913 0\r
+r 1526 0 1525 0 1528 0\r
+r 1526 0 661 0 1527 0\r
+r 1526 0 3182 0 1525 0\r
+r 1527 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">/</text> </svg>\r
+r 1527 0 3019 0 1526 0\r
+r 1528 0 1 0 1359 0\r
+r 1528 0 548 0 1529 0\r
+r 1528 0 1525 0 1532 0\r
+r 1528 0 3182 0 1526 0\r
+r 1528 0 911 0 1530 0\r
+r 1529 0 2985 0 1528 0\r
+r 1529 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1530 0 1 0 504 0\r
+r 1530 0 3059 0 1528 0\r
+r 1530 0 479 0 1524 8\r
+r 1530 0 487 0 1531 0\r
+r 1531 0 488 0 1530 0\r
+r 1531 0 2 0 507 0\r
+r 1531 0 3 0 3183 0\r
+r 1531 0 1039 0 1368 0\r
+r 1532 0 1 0 1359 0\r
+r 1532 0 548 0 1533 0\r
+r 1532 0 1525 0 1536 0\r
+r 1532 0 3182 0 1528 0\r
+r 1532 0 911 0 1534 0\r
+r 1533 0 2985 0 1532 0\r
+r 1533 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1534 0 1 0 504 0\r
+r 1534 0 3059 0 1532 0\r
+r 1534 0 479 0 1524 8\r
+r 1534 0 487 0 1535 0\r
+r 1535 0 488 0 1534 0\r
+r 1535 0 2 0 507 0\r
+r 1535 0 3 0 3184 0\r
+r 1535 0 1039 0 1369 0\r
+r 1536 0 1 0 1359 0\r
+r 1536 0 548 0 1537 0\r
+r 1536 0 1525 0 1525 0\r
+r 1536 0 3182 0 1532 0\r
+r 1536 0 911 0 1538 0\r
+r 1537 0 2985 0 1536 0\r
+r 1537 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1538 0 1 0 504 0\r
+r 1538 0 3059 0 1536 0\r
+r 1538 0 479 0 1524 8\r
+r 1538 0 487 0 1539 0\r
+r 1539 0 488 0 1538 0\r
+r 1539 0 2 0 507 0\r
+r 1539 0 3 0 3185 0\r
+r 1539 0 1039 0 1373 0\r
+r 1540 0 1032 0 1544 9\r
+r 1540 0 472 0 1543 0\r
+r 1540 0 472 0 1542 0\r
+r 1540 0 472 0 1541 0\r
+r 1540 0 4 0 466 0\r
+r 1540 0 5 0 2768 0\r
+r 1540 0 7 0 1347 0\r
+r 1541 0 1 0 504 0\r
+r 1541 0 479 0 1540 0\r
+r 1541 0 487 0 1368 0\r
+r 1542 0 1 0 504 0\r
+r 1542 0 479 0 1540 0\r
+r 1542 0 487 0 1369 0\r
+r 1543 0 1 0 504 0\r
+r 1543 0 479 0 1540 0\r
+r 1543 0 487 0 1373 0\r
+r 1544 9 472 0 1558 0\r
+r 1544 9 472 0 1554 0\r
+r 1544 9 472 0 1550 0\r
+r 1544 9 474 0 1545 0\r
+r 1544 9 4 0 912 0\r
+r 1544 9 5 0 2737 0\r
+r 1544 9 1031 0 1540 0\r
+r 1545 0 1 0 903 0\r
+r 1545 0 1545 0 1546 0\r
+r 1545 0 3186 0 1556 0\r
+r 1545 0 2 0 110 0\r
+r 1545 0 3 0 3186 0\r
+r 1545 0 476 0 1544 9\r
+r 1546 0 1545 0 1548 0\r
+r 1546 0 1 0 913 0\r
+r 1546 0 3186 0 1545 0\r
+r 1546 0 661 0 1547 0\r
+r 1547 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">-</text> </svg>\r
+r 1547 0 3019 0 1546 0\r
+r 1548 0 1545 0 1552 0\r
+r 1548 0 1 0 1359 0\r
+r 1548 0 3186 0 1546 0\r
+r 1548 0 548 0 1549 0\r
+r 1548 0 911 0 1550 0\r
+r 1549 0 2985 0 1548 0\r
+r 1549 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1550 0 1 0 504 0\r
+r 1550 0 3059 0 1548 0\r
+r 1550 0 479 0 1544 9\r
+r 1550 0 487 0 1551 0\r
+r 1551 0 488 0 1550 0\r
+r 1551 0 2 0 507 0\r
+r 1551 0 3 0 3187 0\r
+r 1551 0 1039 0 1368 0\r
+r 1552 0 1545 0 1556 0\r
+r 1552 0 1 0 1359 0\r
+r 1552 0 3186 0 1548 0\r
+r 1552 0 548 0 1553 0\r
+r 1552 0 911 0 1554 0\r
+r 1553 0 2985 0 1552 0\r
+r 1553 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1554 0 1 0 504 0\r
+r 1554 0 3059 0 1552 0\r
+r 1554 0 479 0 1544 9\r
+r 1554 0 487 0 1555 0\r
+r 1555 0 488 0 1554 0\r
+r 1555 0 2 0 507 0\r
+r 1555 0 3 0 3188 0\r
+r 1555 0 1039 0 1369 0\r
+r 1556 0 1545 0 1545 0\r
+r 1556 0 1 0 1359 0\r
+r 1556 0 3186 0 1552 0\r
+r 1556 0 548 0 1557 0\r
+r 1556 0 911 0 1558 0\r
+r 1557 0 2985 0 1556 0\r
+r 1557 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1558 0 1 0 504 0\r
+r 1558 0 3059 0 1556 0\r
+r 1558 0 479 0 1544 9\r
+r 1558 0 487 0 1559 0\r
+r 1559 0 488 0 1558 0\r
+r 1559 0 2 0 507 0\r
+r 1559 0 3 0 3189 0\r
+r 1559 0 1039 0 1373 0\r
+r 1560 0 1032 0 1564 10\r
+r 1560 0 472 0 1563 0\r
+r 1560 0 472 0 1562 0\r
+r 1560 0 472 0 1561 0\r
+r 1560 0 4 0 466 0\r
+r 1560 0 5 0 2719 0\r
+r 1560 0 7 0 1347 0\r
+r 1561 0 1 0 504 0\r
+r 1561 0 479 0 1560 0\r
+r 1561 0 487 0 1368 0\r
+r 1562 0 1 0 504 0\r
+r 1562 0 479 0 1560 0\r
+r 1562 0 487 0 1369 0\r
+r 1563 0 1 0 504 0\r
+r 1563 0 479 0 1560 0\r
+r 1563 0 487 0 1373 0\r
+r 1564 10 472 0 1578 0\r
+r 1564 10 472 0 1574 0\r
+r 1564 10 472 0 1570 0\r
+r 1564 10 474 0 1565 0\r
+r 1564 10 4 0 912 0\r
+r 1564 10 5 0 2729 0\r
+r 1564 10 1031 0 1560 0\r
+r 1565 0 1 0 903 0\r
+r 1565 0 2 0 110 0\r
+r 1565 0 3 0 3190 0\r
+r 1565 0 476 0 1564 10\r
+r 1565 0 1565 0 1566 0\r
+r 1565 0 3190 0 1576 0\r
+r 1566 0 1 0 913 0\r
+r 1566 0 1565 0 1568 0\r
+r 1566 0 661 0 1567 0\r
+r 1566 0 3190 0 1565 0\r
+r 1567 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">X</text> </svg>\r
+r 1567 0 3019 0 1566 0\r
+r 1568 0 1 0 1359 0\r
+r 1568 0 548 0 1569 0\r
+r 1568 0 1565 0 1572 0\r
+r 1568 0 3190 0 1566 0\r
+r 1568 0 911 0 1570 0\r
+r 1569 0 2985 0 1568 0\r
+r 1569 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1570 0 1 0 504 0\r
+r 1570 0 3059 0 1568 0\r
+r 1570 0 479 0 1564 10\r
+r 1570 0 487 0 1571 0\r
+r 1571 0 488 0 1570 0\r
+r 1571 0 2 0 507 0\r
+r 1571 0 3 0 3191 0\r
+r 1571 0 1039 0 1368 0\r
+r 1572 0 1 0 1359 0\r
+r 1572 0 548 0 1573 0\r
+r 1572 0 1565 0 1576 0\r
+r 1572 0 3190 0 1568 0\r
+r 1572 0 911 0 1574 0\r
+r 1573 0 2985 0 1572 0\r
+r 1573 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1574 0 1 0 504 0\r
+r 1574 0 3059 0 1572 0\r
+r 1574 0 479 0 1564 10\r
+r 1574 0 487 0 1575 0\r
+r 1575 0 488 0 1574 0\r
+r 1575 0 2 0 507 0\r
+r 1575 0 3 0 3192 0\r
+r 1575 0 1039 0 1369 0\r
+r 1576 0 1 0 1359 0\r
+r 1576 0 548 0 1577 0\r
+r 1576 0 1565 0 1565 0\r
+r 1576 0 3190 0 1572 0\r
+r 1576 0 911 0 1578 0\r
+r 1577 0 2985 0 1576 0\r
+r 1577 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1578 0 1 0 504 0\r
+r 1578 0 3059 0 1576 0\r
+r 1578 0 479 0 1564 10\r
+r 1578 0 487 0 1579 0\r
+r 1579 0 488 0 1578 0\r
+r 1579 0 2 0 507 0\r
+r 1579 0 3 0 3193 0\r
+r 1579 0 1039 0 1373 0\r
+r 1580 0 1032 0 1587 11\r
+r 1580 0 472 0 1585 0\r
+r 1580 0 472 0 1583 0\r
+r 1580 0 472 0 1582 0\r
+r 1580 0 472 0 1581 0\r
+r 1580 0 4 0 466 0\r
+r 1580 0 5 0 2722 0\r
+r 1580 0 70 0 1586 0\r
+r 1580 0 7 0 1347 0\r
+r 1581 0 1 0 504 0\r
+r 1581 0 479 0 1580 0\r
+r 1581 0 487 0 1365 0\r
+r 1582 0 1 0 504 0\r
+r 1582 0 479 0 1580 0\r
+r 1582 0 487 0 1366 0\r
+r 1583 0 1 0 504 0\r
+r 1583 0 479 0 1580 0\r
+r 1583 0 487 0 1373 0\r
+r 1584 0 1 0 12 0 d 0\r
+r 1584 0 2922 0 1586 0\r
+r 1585 0 1 0 489 0\r
+r 1585 0 479 0 1580 0\r
+r 1585 0 487 0 1380 0\r
+r 1586 0 2920 0 1580 0\r
+r 1586 0 72 0 1584 0\r
+r 1586 0 1 0 151 0\r
+r 1586 0 71 0 1380 0\r
+r 1587 11 472 0 1601 0\r
+r 1587 11 472 0 1597 0\r
+r 1587 11 472 0 1593 0\r
+r 1587 11 474 0 1588 0\r
+r 1587 11 4 0 912 0\r
+r 1587 11 5 0 2738 0\r
+r 1587 11 1031 0 1580 0\r
+r 1588 0 1 0 903 0\r
+r 1588 0 3194 0 1599 0\r
+r 1588 0 2 0 110 0\r
+r 1588 0 3 0 3194 0\r
+r 1588 0 476 0 1587 11\r
+r 1588 0 1588 0 1589 0\r
+r 1589 0 1 0 913 0\r
+r 1589 0 3194 0 1588 0\r
+r 1589 0 1588 0 1591 0\r
+r 1589 0 661 0 1590 0\r
+r 1590 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="2" text-anchor="middle" font-family="Verdana" font-size="5">I</text> </svg>\r
+r 1590 0 3019 0 1589 0\r
+r 1591 0 1 0 1359 0\r
+r 1591 0 3194 0 1589 0\r
+r 1591 0 1588 0 1595 0\r
+r 1591 0 548 0 1592 0\r
+r 1591 0 911 0 1593 0\r
+r 1592 0 2985 0 1591 0\r
+r 1592 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1593 0 1 0 504 0\r
+r 1593 0 3059 0 1591 0\r
+r 1593 0 479 0 1587 11\r
+r 1593 0 487 0 1594 0\r
+r 1594 0 488 0 1593 0\r
+r 1594 0 2 0 507 0\r
+r 1594 0 3 0 3195 0\r
+r 1594 0 1039 0 1366 0\r
+r 1595 0 1 0 1359 0\r
+r 1595 0 3194 0 1591 0\r
+r 1595 0 1588 0 1599 0\r
+r 1595 0 548 0 1596 0\r
+r 1595 0 911 0 1597 0\r
+r 1596 0 2985 0 1595 0\r
+r 1596 0 1 0 545 0 [d 1 0 0 1 0 -4\r
+r 1597 0 1 0 504 0\r
+r 1597 0 3059 0 1595 0\r
+r 1597 0 479 0 1587 11\r
+r 1597 0 487 0 1598 0\r
+r 1598 0 488 0 1597 0\r
+r 1598 0 2 0 507 0\r
+r 1598 0 3 0 3196 0\r
+r 1598 0 1039 0 1365 0\r
+r 1599 0 1 0 1359 0\r
+r 1599 0 3194 0 1595 0\r
+r 1599 0 1588 0 1588 0\r
+r 1599 0 548 0 1600 0\r
+r 1599 0 911 0 1601 0\r
+r 1600 0 2985 0 1599 0\r
+r 1600 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1601 0 1 0 504 0\r
+r 1601 0 3059 0 1599 0\r
+r 1601 0 479 0 1587 11\r
+r 1601 0 487 0 1602 0\r
+r 1602 0 488 0 1601 0\r
+r 1602 0 2 0 507 0\r
+r 1602 0 3 0 3197 0\r
+r 1602 0 1039 0 1373 0\r
+r 1603 0 1032 0 1610 12\r
+r 1603 0 472 0 1608 0\r
+r 1603 0 472 0 1606 0\r
+r 1603 0 472 0 1605 0\r
+r 1603 0 472 0 1604 0\r
+r 1603 0 4 0 466 0\r
+r 1603 0 5 0 2706 0\r
+r 1603 0 70 0 1609 0\r
+r 1603 0 7 0 1347 0\r
+r 1604 0 1 0 504 0\r
+r 1604 0 479 0 1603 0\r
+r 1604 0 487 0 1368 0\r
+r 1605 0 1 0 504 0\r
+r 1605 0 479 0 1603 0\r
+r 1605 0 487 0 1369 0\r
+r 1606 0 1 0 504 0\r
+r 1606 0 479 0 1603 0\r
+r 1606 0 487 0 1373 0\r
+r 1607 0 1 0 12 0 d 0\r
+r 1607 0 2922 0 1609 0\r
+r 1608 0 1 0 489 0\r
+r 1608 0 479 0 1603 0\r
+r 1608 0 487 0 1380 0\r
+r 1609 0 2920 0 1603 0\r
+r 1609 0 72 0 1607 0\r
+r 1609 0 1 0 151 0\r
+r 1609 0 71 0 1380 0\r
+r 1610 12 472 0 1624 0\r
+r 1610 12 472 0 1620 0\r
+r 1610 12 472 0 1616 0\r
+r 1610 12 474 0 1611 0\r
+r 1610 12 4 0 912 0\r
+r 1610 12 5 0 2765 0\r
+r 1610 12 1031 0 1603 0\r
+r 1611 0 1 0 903 0\r
+r 1611 0 2 0 110 0\r
+r 1611 0 3 0 3198 0\r
+r 1611 0 1611 0 1612 0\r
+r 1611 0 476 0 1610 12\r
+r 1611 0 3198 0 1622 0\r
+r 1612 0 1 0 913 0\r
+r 1612 0 1611 0 1614 0\r
+r 1612 0 661 0 1613 0\r
+r 1612 0 3198 0 1611 0\r
+r 1613 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="2" text-anchor="middle" font-family="Verdana" font-size="5">I</text> </svg>\r
+r 1613 0 3019 0 1612 0\r
+r 1614 0 1 0 1359 0\r
+r 1614 0 1611 0 1618 0\r
+r 1614 0 548 0 1615 0\r
+r 1614 0 3198 0 1612 0\r
+r 1614 0 911 0 1616 0\r
+r 1615 0 2985 0 1614 0\r
+r 1615 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1616 0 1 0 504 0\r
+r 1616 0 3059 0 1614 0\r
+r 1616 0 479 0 1610 12\r
+r 1616 0 487 0 1617 0\r
+r 1617 0 488 0 1616 0\r
+r 1617 0 2 0 507 0\r
+r 1617 0 3 0 3199 0\r
+r 1617 0 1039 0 1368 0\r
+r 1618 0 1 0 1359 0\r
+r 1618 0 1611 0 1622 0\r
+r 1618 0 548 0 1619 0\r
+r 1618 0 3198 0 1614 0\r
+r 1618 0 911 0 1620 0\r
+r 1619 0 2985 0 1618 0\r
+r 1619 0 1 0 545 0 [d 1 0 0 1 0 4\r
+r 1620 0 1 0 504 0\r
+r 1620 0 3059 0 1618 0\r
+r 1620 0 479 0 1610 12\r
+r 1620 0 487 0 1621 0\r
+r 1621 0 488 0 1620 0\r
+r 1621 0 2 0 507 0\r
+r 1621 0 3 0 3200 0\r
+r 1621 0 1039 0 1369 0\r
+r 1622 0 1 0 1359 0\r
+r 1622 0 1611 0 1611 0\r
+r 1622 0 548 0 1623 0\r
+r 1622 0 3198 0 1618 0\r
+r 1622 0 911 0 1624 0\r
+r 1623 0 2985 0 1622 0\r
+r 1623 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1624 0 1 0 504 0\r
+r 1624 0 3059 0 1622 0\r
+r 1624 0 479 0 1610 12\r
+r 1624 0 487 0 1625 0\r
+r 1625 0 488 0 1624 0\r
+r 1625 0 2 0 507 0\r
+r 1625 0 3 0 3201 0\r
+r 1625 0 1039 0 1373 0\r
+r 1626 0 1032 0 1632 13\r
+r 1626 0 472 0 1630 0\r
+r 1626 0 472 0 1628 0\r
+r 1626 0 472 0 1627 0\r
+r 1626 0 4 0 466 0\r
+r 1626 0 5 0 2754 0\r
+r 1626 0 70 0 1631 0\r
+r 1626 0 7 0 1347 0\r
+r 1627 0 1 0 504 0\r
+r 1627 0 479 0 1626 0\r
+r 1627 0 487 0 1366 0\r
+r 1628 0 1 0 504 0\r
+r 1628 0 479 0 1626 0\r
+r 1628 0 487 0 1373 0\r
+r 1629 0 1 0 12 0 d 1\r
+r 1629 0 2922 0 1631 0\r
+r 1630 0 1 0 489 0\r
+r 1630 0 479 0 1626 0\r
+r 1630 0 487 0 1381 0\r
+r 1631 0 2920 0 1626 0\r
+r 1631 0 72 0 1629 0\r
+r 1631 0 1 0 151 0\r
+r 1631 0 71 0 1381 0\r
+r 1632 13 472 0 1642 0\r
+r 1632 13 472 0 1638 0\r
+r 1632 13 474 0 1633 0\r
+r 1632 13 4 0 912 0\r
+r 1632 13 5 0 2712 0\r
+r 1632 13 1031 0 1626 0\r
+r 1633 0 1 0 903 0\r
+r 1633 0 1633 0 1634 0\r
+r 1633 0 3202 0 1640 0\r
+r 1633 0 2 0 110 0\r
+r 1633 0 3 0 3202 0\r
+r 1633 0 476 0 1632 13\r
+r 1634 0 1633 0 1636 0\r
+r 1634 0 1 0 913 0\r
+r 1634 0 3202 0 1633 0\r
+r 1634 0 661 0 1635 0\r
+r 1635 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="2" text-anchor="middle" font-family="Verdana" font-size="5">G</text> </svg>\r
+r 1635 0 3019 0 1634 0\r
+r 1636 0 1633 0 1640 0\r
+r 1636 0 1 0 1359 0\r
+r 1636 0 3202 0 1634 0\r
+r 1636 0 548 0 1637 0\r
+r 1636 0 911 0 1638 0\r
+r 1637 0 2985 0 1636 0\r
+r 1637 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1638 0 1 0 504 0\r
+r 1638 0 3059 0 1636 0\r
+r 1638 0 479 0 1632 13\r
+r 1638 0 487 0 1639 0\r
+r 1639 0 488 0 1638 0\r
+r 1639 0 2 0 507 0\r
+r 1639 0 3 0 3203 0\r
+r 1639 0 1039 0 1366 0\r
+r 1640 0 1633 0 1633 0\r
+r 1640 0 1 0 1359 0\r
+r 1640 0 3202 0 1636 0\r
+r 1640 0 548 0 1641 0\r
+r 1640 0 911 0 1642 0\r
+r 1641 0 2985 0 1640 0\r
+r 1641 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1642 0 1 0 504 0\r
+r 1642 0 3059 0 1640 0\r
+r 1642 0 479 0 1632 13\r
+r 1642 0 487 0 1643 0\r
+r 1643 0 488 0 1642 0\r
+r 1643 0 2 0 507 0\r
+r 1643 0 3 0 3204 0\r
+r 1643 0 1039 0 1373 0\r
+r 1644 0 1032 0 1647 14\r
+r 1644 0 472 0 1646 0\r
+r 1644 0 472 0 1645 0\r
+r 1644 0 4 0 466 0\r
+r 1644 0 5 0 2715 0\r
+r 1644 0 7 0 1347 0\r
+r 1645 0 1 0 504 0\r
+r 1645 0 479 0 1644 0\r
+r 1645 0 487 0 1366 0\r
+r 1646 0 1 0 504 0\r
+r 1646 0 479 0 1644 0\r
+r 1646 0 487 0 1373 0\r
+r 1647 14 472 0 1657 0\r
+r 1647 14 472 0 1653 0\r
+r 1647 14 474 0 1648 0\r
+r 1647 14 4 0 912 0\r
+r 1647 14 5 0 2702 0\r
+r 1647 14 1031 0 1644 0\r
+r 1648 0 1648 0 1649 0\r
+r 1648 0 1 0 903 0\r
+r 1648 0 2 0 110 0\r
+r 1648 0 3 0 3205 0\r
+r 1648 0 476 0 1647 14\r
+r 1648 0 3205 0 1655 0\r
+r 1649 0 1648 0 1651 0\r
+r 1649 0 1 0 913 0\r
+r 1649 0 3205 0 1648 0\r
+r 1649 0 661 0 1650 0\r
+r 1650 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="2" text-anchor="middle" font-family="Verdana" font-size="4">B2F</text> </svg>\r
+r 1650 0 3019 0 1649 0\r
+r 1651 0 1648 0 1655 0\r
+r 1651 0 1 0 1359 0\r
+r 1651 0 548 0 1652 0\r
+r 1651 0 3205 0 1649 0\r
+r 1651 0 911 0 1653 0\r
+r 1652 0 2985 0 1651 0\r
+r 1652 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1653 0 1 0 504 0\r
+r 1653 0 3059 0 1651 0\r
+r 1653 0 479 0 1647 14\r
+r 1653 0 487 0 1654 0\r
+r 1654 0 488 0 1653 0\r
+r 1654 0 2 0 507 0\r
+r 1654 0 3 0 3206 0\r
+r 1654 0 1039 0 1366 0\r
+r 1655 0 1648 0 1648 0\r
+r 1655 0 1 0 1359 0\r
+r 1655 0 548 0 1656 0\r
+r 1655 0 3205 0 1651 0\r
+r 1655 0 911 0 1657 0\r
+r 1656 0 2985 0 1655 0\r
+r 1656 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1657 0 1 0 504 0\r
+r 1657 0 3059 0 1655 0\r
+r 1657 0 479 0 1647 14\r
+r 1657 0 487 0 1658 0\r
+r 1658 0 488 0 1657 0\r
+r 1658 0 2 0 507 0\r
+r 1658 0 3 0 3207 0\r
+r 1658 0 1039 0 1373 0\r
+r 1659 0 1032 0 1663 15\r
+r 1659 0 472 0 1662 0\r
+r 1659 0 472 0 1661 0\r
+r 1659 0 472 0 1660 0\r
+r 1659 0 4 0 466 0\r
+r 1659 0 5 0 2704 0\r
+r 1659 0 7 0 1347 0\r
+r 1660 0 1 0 504 0\r
+r 1660 0 479 0 1659 0\r
+r 1660 0 487 0 1368 0\r
+r 1661 0 1 0 504 0\r
+r 1661 0 479 0 1659 0\r
+r 1661 0 487 0 1369 0\r
+r 1662 0 1 0 504 0\r
+r 1662 0 479 0 1659 0\r
+r 1662 0 487 0 1373 0\r
+r 1663 15 472 0 1677 0\r
+r 1663 15 472 0 1673 0\r
+r 1663 15 472 0 1669 0\r
+r 1663 15 474 0 1664 0\r
+r 1663 15 4 0 912 0\r
+r 1663 15 5 0 2713 0\r
+r 1663 15 1031 0 1659 0\r
+r 1664 0 3208 0 1675 0\r
+r 1664 0 1664 0 1665 0\r
+r 1664 0 1 0 903 0\r
+r 1664 0 2 0 110 0\r
+r 1664 0 3 0 3208 0\r
+r 1664 0 476 0 1663 15\r
+r 1665 0 3208 0 1664 0\r
+r 1665 0 1664 0 1667 0\r
+r 1665 0 1 0 913 0\r
+r 1665 0 661 0 1666 0\r
+r 1666 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="2">MUX</text> </svg>\r
+r 1666 0 3019 0 1665 0\r
+r 1667 0 3208 0 1665 0\r
+r 1667 0 1664 0 1671 0\r
+r 1667 0 1 0 1359 0\r
+r 1667 0 548 0 1668 0\r
+r 1667 0 911 0 1669 0\r
+r 1668 0 2985 0 1667 0\r
+r 1668 0 1 0 545 0 [d 1 0 0 1 -4 -1\r
+r 1669 0 1 0 504 0\r
+r 1669 0 3059 0 1667 0\r
+r 1669 0 479 0 1663 15\r
+r 1669 0 487 0 1670 0\r
+r 1670 0 488 0 1669 0\r
+r 1670 0 2 0 507 0\r
+r 1670 0 3 0 3209 0\r
+r 1670 0 1039 0 1368 0\r
+r 1671 0 3208 0 1667 0\r
+r 1671 0 1664 0 1675 0\r
+r 1671 0 1 0 1359 0\r
+r 1671 0 548 0 1672 0\r
+r 1671 0 911 0 1673 0\r
+r 1672 0 2985 0 1671 0\r
+r 1672 0 1 0 545 0 [d 1 0 0 1 -4 1\r
+r 1673 0 1 0 504 0\r
+r 1673 0 3059 0 1671 0\r
+r 1673 0 479 0 1663 15\r
+r 1673 0 487 0 1674 0\r
+r 1674 0 488 0 1673 0\r
+r 1674 0 2 0 507 0\r
+r 1674 0 3 0 3210 0\r
+r 1674 0 1039 0 1369 0\r
+r 1675 0 3208 0 1671 0\r
+r 1675 0 1664 0 1664 0\r
+r 1675 0 1 0 1359 0\r
+r 1675 0 548 0 1676 0\r
+r 1675 0 911 0 1677 0\r
+r 1676 0 2985 0 1675 0\r
+r 1676 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1677 0 1 0 504 0\r
+r 1677 0 3059 0 1675 0\r
+r 1677 0 479 0 1663 15\r
+r 1677 0 487 0 1678 0\r
+r 1678 0 488 0 1677 0\r
+r 1678 0 2 0 507 0\r
+r 1678 0 3 0 3211 0\r
+r 1678 0 1039 0 1373 0\r
+r 1679 0 1032 0 1683 16\r
+r 1679 0 472 0 1682 0\r
+r 1679 0 472 0 1681 0\r
+r 1679 0 472 0 1680 0\r
+r 1679 0 4 0 466 0\r
+r 1679 0 5 0 2703 0\r
+r 1679 0 7 0 1347 0\r
+r 1680 0 1 0 504 0\r
+r 1680 0 479 0 1679 0\r
+r 1680 0 487 0 1366 0\r
+r 1681 0 1 0 504 0\r
+r 1681 0 479 0 1679 0\r
+r 1681 0 487 0 1375 0\r
+r 1682 0 1 0 504 0\r
+r 1682 0 479 0 1679 0\r
+r 1682 0 487 0 1376 0\r
+r 1683 16 472 0 1697 0\r
+r 1683 16 472 0 1693 0\r
+r 1683 16 472 0 1689 0\r
+r 1683 16 474 0 1684 0\r
+r 1683 16 4 0 912 0\r
+r 1683 16 5 0 2739 0\r
+r 1683 16 1031 0 1679 0\r
+r 1684 0 1 0 903 0\r
+r 1684 0 2 0 110 0\r
+r 1684 0 3 0 3212 0\r
+r 1684 0 3212 0 1695 0\r
+r 1684 0 476 0 1683 16\r
+r 1684 0 1684 0 1685 0\r
+r 1685 0 1 0 913 0\r
+r 1685 0 3212 0 1684 0\r
+r 1685 0 1684 0 1687 0\r
+r 1685 0 661 0 1686 0\r
+r 1686 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="2">DEMUX</text> </svg>\r
+r 1686 0 3019 0 1685 0\r
+r 1687 0 1 0 1359 0\r
+r 1687 0 3212 0 1685 0\r
+r 1687 0 1684 0 1691 0\r
+r 1687 0 548 0 1688 0\r
+r 1687 0 911 0 1689 0\r
+r 1688 0 2985 0 1687 0\r
+r 1688 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1689 0 1 0 504 0\r
+r 1689 0 3059 0 1687 0\r
+r 1689 0 479 0 1683 16\r
+r 1689 0 487 0 1690 0\r
+r 1690 0 488 0 1689 0\r
+r 1690 0 2 0 507 0\r
+r 1690 0 3 0 3213 0\r
+r 1690 0 1039 0 1366 0\r
+r 1691 0 1 0 1359 0\r
+r 1691 0 3212 0 1687 0\r
+r 1691 0 1684 0 1695 0\r
+r 1691 0 548 0 1692 0\r
+r 1691 0 911 0 1693 0\r
+r 1692 0 2985 0 1691 0\r
+r 1692 0 1 0 545 0 [d 1 0 0 1 4 -1\r
+r 1693 0 1 0 504 0\r
+r 1693 0 3059 0 1691 0\r
+r 1693 0 479 0 1683 16\r
+r 1693 0 487 0 1694 0\r
+r 1694 0 488 0 1693 0\r
+r 1694 0 2 0 507 0\r
+r 1694 0 3 0 3214 0\r
+r 1694 0 1039 0 1375 0\r
+r 1695 0 1 0 1359 0\r
+r 1695 0 3212 0 1691 0\r
+r 1695 0 1684 0 1684 0\r
+r 1695 0 548 0 1696 0\r
+r 1695 0 911 0 1697 0\r
+r 1696 0 2985 0 1695 0\r
+r 1696 0 1 0 545 0 [d 1 0 0 1 4 1\r
+r 1697 0 1 0 504 0\r
+r 1697 0 3059 0 1695 0\r
+r 1697 0 479 0 1683 16\r
+r 1697 0 487 0 1698 0\r
+r 1698 0 488 0 1697 0\r
+r 1698 0 2 0 507 0\r
+r 1698 0 3 0 3215 0\r
+r 1698 0 1039 0 1376 0\r
+r 1699 0 1032 0 1705 17\r
+r 1699 0 472 0 1703 0\r
+r 1699 0 472 0 1701 0\r
+r 1699 0 472 0 1700 0\r
+r 1699 0 4 0 466 0\r
+r 1699 0 5 0 2734 0\r
+r 1699 0 70 0 1704 0\r
+r 1699 0 7 0 1347 0\r
+r 1700 0 1 0 504 0\r
+r 1700 0 479 0 1699 0\r
+r 1700 0 487 0 1366 0\r
+r 1701 0 1 0 504 0\r
+r 1701 0 479 0 1699 0\r
+r 1701 0 487 0 1373 0\r
+r 1702 0 1 0 12 0 d 1.0\r
+r 1702 0 2922 0 1704 0\r
+r 1703 0 1 0 489 0\r
+r 1703 0 479 0 1699 0\r
+r 1703 0 487 0 1379 0\r
+r 1704 0 2920 0 1699 0\r
+r 1704 0 72 0 1702 0\r
+r 1704 0 1 0 151 0\r
+r 1704 0 71 0 1379 0\r
+r 1705 17 472 0 1715 0\r
+r 1705 17 472 0 1711 0\r
+r 1705 17 474 0 1706 0\r
+r 1705 17 4 0 912 0\r
+r 1705 17 5 0 2748 0\r
+r 1705 17 1031 0 1699 0\r
+r 1706 0 3216 0 1713 0\r
+r 1706 0 1 0 903 0\r
+r 1706 0 2 0 110 0\r
+r 1706 0 1706 0 1707 0\r
+r 1706 0 3 0 3216 0\r
+r 1706 0 476 0 1705 17\r
+r 1707 0 3216 0 1706 0\r
+r 1707 0 1 0 913 0\r
+r 1707 0 1706 0 1709 0\r
+r 1707 0 661 0 1708 0\r
+r 1708 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-7" y="-4" width="14" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">Delay</text> </svg>\r
+r 1708 0 3019 0 1707 0\r
+r 1709 0 3216 0 1707 0\r
+r 1709 0 1 0 1359 0\r
+r 1709 0 1706 0 1713 0\r
+r 1709 0 548 0 1710 0\r
+r 1709 0 911 0 1711 0\r
+r 1710 0 2985 0 1709 0\r
+r 1710 0 1 0 545 0 [d 1 0 0 1 -7 0\r
+r 1711 0 1 0 504 0\r
+r 1711 0 3059 0 1709 0\r
+r 1711 0 479 0 1705 17\r
+r 1711 0 487 0 1712 0\r
+r 1712 0 488 0 1711 0\r
+r 1712 0 2 0 507 0\r
+r 1712 0 3 0 3217 0\r
+r 1712 0 1039 0 1366 0\r
+r 1713 0 3216 0 1709 0\r
+r 1713 0 1 0 1359 0\r
+r 1713 0 1706 0 1706 0\r
+r 1713 0 548 0 1714 0\r
+r 1713 0 911 0 1715 0\r
+r 1714 0 2985 0 1713 0\r
+r 1714 0 1 0 545 0 [d 1 0 0 1 7 0\r
+r 1715 0 1 0 504 0\r
+r 1715 0 3059 0 1713 0\r
+r 1715 0 479 0 1705 17\r
+r 1715 0 487 0 1716 0\r
+r 1716 0 488 0 1715 0\r
+r 1716 0 2 0 507 0\r
+r 1716 0 3 0 3218 0\r
+r 1716 0 1039 0 1373 0\r
+r 1717 0 1032 0 1725 0\r
+r 1717 0 472 0 1723 0\r
+r 1717 0 472 0 1720 0\r
+r 1717 0 472 0 1718 0\r
+r 1717 0 4 0 466 0\r
+r 1717 0 5 0 2742 0\r
+r 1717 0 70 0 1724 0\r
+r 1717 0 70 0 1721 0\r
+r 1717 0 7 0 1347 0\r
+r 1718 0 1 0 504 0\r
+r 1718 0 479 0 1717 0\r
+r 1718 0 487 0 1366 0\r
+r 1719 0 1 0 12 0 d 0.1\r
+r 1719 0 2922 0 1721 0\r
+r 1720 0 1 0 489 0\r
+r 1720 0 479 0 1717 0\r
+r 1720 0 487 0 1384 0\r
+r 1721 0 2920 0 1717 0\r
+r 1721 0 72 0 1719 0\r
+r 1721 0 1 0 151 0\r
+r 1721 0 71 0 1384 0\r
+r 1722 0 1 0 12 0 d 0\r
+r 1722 0 2922 0 1724 0\r
+r 1723 0 1 0 489 0\r
+r 1723 0 479 0 1717 0\r
+r 1723 0 487 0 1380 0\r
+r 1724 0 2920 0 1717 0\r
+r 1724 0 72 0 1722 0\r
+r 1724 0 1 0 151 0\r
+r 1724 0 71 0 1380 0\r
+r 1725 0 472 0 1731 0\r
+r 1725 0 474 0 1726 0\r
+r 1725 0 4 0 912 0\r
+r 1725 0 5 0 2730 0\r
+r 1725 0 7 0 1347 0\r
+r 1725 0 1031 0 1717 0\r
+r 1726 0 1 0 903 0\r
+r 1726 0 2 0 110 0\r
+r 1726 0 3219 0 1729 0\r
+r 1726 0 3 0 3219 0\r
+r 1726 0 476 0 1725 0\r
+r 1726 0 1726 0 1727 0\r
+r 1727 0 1 0 913 0\r
+r 1727 0 3219 0 1726 0\r
+r 1727 0 661 0 1728 0\r
+r 1727 0 1726 0 1729 0\r
+r 1728 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <polyline points="-20 -20 -20 20 20 20" style="fill:none;stroke:black;stroke-width:0.5"/> </svg>\r
+r 1728 0 3019 0 1727 0\r
+r 1729 0 1 0 1359 0\r
+r 1729 0 3219 0 1727 0\r
+r 1729 0 548 0 1730 0\r
+r 1729 0 1726 0 1726 0\r
+r 1729 0 911 0 1731 0\r
+r 1730 0 2985 0 1729 0\r
+r 1730 0 1 0 545 0 [d 1 0 0 1 -20 0\r
+r 1731 0 1 0 504 0\r
+r 1731 0 3059 0 1729 0\r
+r 1731 0 479 0 1725 0\r
+r 1731 0 487 0 1732 0\r
+r 1732 0 488 0 1731 0\r
+r 1732 0 2 0 507 0\r
+r 1732 0 3 0 3220 0\r
+r 1732 0 1039 0 1366 0\r
+r 1733 0 1032 0 1741 18\r
+r 1733 0 472 0 1739 0\r
+r 1733 0 472 0 1736 0\r
+r 1733 0 472 0 1734 0\r
+r 1733 0 4 0 466 0\r
+r 1733 0 5 0 2755 0\r
+r 1733 0 70 0 1740 0\r
+r 1733 0 70 0 1737 0\r
+r 1733 0 7 0 1347 0\r
+r 1734 0 1 0 504 0\r
+r 1734 0 479 0 1733 0\r
+r 1734 0 487 0 1366 0\r
+r 1735 0 1 0 12 0 d 0.1\r
+r 1735 0 2922 0 1737 0\r
+r 1736 0 1 0 489 0\r
+r 1736 0 479 0 1733 0\r
+r 1736 0 487 0 1384 0\r
+r 1737 0 2920 0 1733 0\r
+r 1737 0 72 0 1735 0\r
+r 1737 0 1 0 151 0\r
+r 1737 0 71 0 1384 0\r
+r 1738 0 1 0 12 0 d 0\r
+r 1738 0 2922 0 1740 0\r
+r 1739 0 1 0 489 0\r
+r 1739 0 479 0 1733 0\r
+r 1739 0 487 0 1380 0\r
+r 1740 0 2920 0 1733 0\r
+r 1740 0 72 0 1738 0\r
+r 1740 0 1 0 151 0\r
+r 1740 0 71 0 1380 0\r
+r 1741 18 472 0 1747 0\r
+r 1741 18 474 0 1742 0\r
+r 1741 18 4 0 912 0\r
+r 1741 18 5 0 2724 0\r
+r 1741 18 1031 0 1733 0\r
+r 1742 0 1 0 903 0\r
+r 1742 0 2 0 110 0\r
+r 1742 0 3 0 3221 0\r
+r 1742 0 476 0 1741 18\r
+r 1742 0 3221 0 1745 0\r
+r 1742 0 1742 0 1743 0\r
+r 1743 0 1 0 913 0\r
+r 1743 0 3221 0 1742 0\r
+r 1743 0 661 0 1744 0\r
+r 1743 0 1742 0 1745 0\r
+r 1744 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-7" y="-4" width="14" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">Sampler</text> </svg>\r
+r 1744 0 3019 0 1743 0\r
+r 1745 0 1 0 1359 0\r
+r 1745 0 548 0 1746 0\r
+r 1745 0 3221 0 1743 0\r
+r 1745 0 1742 0 1742 0\r
+r 1745 0 911 0 1747 0\r
+r 1746 0 2985 0 1745 0\r
+r 1746 0 1 0 545 0 [d 1 0 0 1 -7 0\r
+r 1747 0 1 0 504 0\r
+r 1747 0 3059 0 1745 0\r
+r 1747 0 479 0 1741 18\r
+r 1747 0 487 0 1748 0\r
+r 1748 0 488 0 1747 0\r
+r 1748 0 2 0 507 0\r
+r 1748 0 3 0 3222 0\r
+r 1748 0 1039 0 1366 0\r
+r 1749 0 1032 0 1754 19\r
+r 1749 0 472 0 1752 0\r
+r 1749 0 472 0 1750 0\r
+r 1749 0 4 0 466 0\r
+r 1749 0 5 0 2766 0\r
+r 1749 0 70 0 1753 0\r
+r 1749 0 7 0 1347 0\r
+r 1750 0 1 0 504 0\r
+r 1750 0 479 0 1749 0\r
+r 1750 0 487 0 1366 0\r
+r 1751 0 1 0 10 0 s \r
+r 1751 0 2922 0 1753 0\r
+r 1752 0 1 0 489 0\r
+r 1752 0 479 0 1749 0\r
+r 1752 0 487 0 1380 0\r
+r 1753 0 2920 0 1749 0\r
+r 1753 0 72 0 1751 0\r
+r 1753 0 1 0 151 0\r
+r 1753 0 71 0 1380 0\r
+r 1754 19 472 0 1760 0\r
+r 1754 19 474 0 1755 0\r
+r 1754 19 4 0 912 0\r
+r 1754 19 5 0 2683 0\r
+r 1754 19 1031 0 1749 0\r
+r 1755 0 1 0 903 0\r
+r 1755 0 2 0 110 0\r
+r 1755 0 3 0 3223 0\r
+r 1755 0 1755 0 1756 0\r
+r 1755 0 476 0 1754 19\r
+r 1755 0 3223 0 1758 0\r
+r 1756 0 1 0 913 0\r
+r 1756 0 1755 0 1758 0\r
+r 1756 0 661 0 1757 0\r
+r 1756 0 3223 0 1755 0\r
+r 1757 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-7" y="-4" width="14" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">GSampler</text> </svg>\r
+r 1757 0 3019 0 1756 0\r
+r 1758 0 1 0 1359 0\r
+r 1758 0 1755 0 1755 0\r
+r 1758 0 548 0 1759 0\r
+r 1758 0 3223 0 1756 0\r
+r 1758 0 911 0 1760 0\r
+r 1759 0 2985 0 1758 0\r
+r 1759 0 1 0 545 0 [d 1 0 0 1 -7 0\r
+r 1760 0 1 0 504 0\r
+r 1760 0 3059 0 1758 0\r
+r 1760 0 479 0 1754 19\r
+r 1760 0 487 0 1761 0\r
+r 1761 0 488 0 1760 0\r
+r 1761 0 2 0 507 0\r
+r 1761 0 3 0 3224 0\r
+r 1761 0 1039 0 1366 0\r
+r 1762 0 1032 0 1770 20\r
+r 1762 0 472 0 1768 0\r
+r 1762 0 472 0 1765 0\r
+r 1762 0 472 0 1763 0\r
+r 1762 0 4 0 466 0\r
+r 1762 0 5 0 2741 0\r
+r 1762 0 70 0 1769 0\r
+r 1762 0 70 0 1766 0\r
+r 1762 0 7 0 1347 0\r
+r 1763 0 1 0 504 0\r
+r 1763 0 479 0 1762 0\r
+r 1763 0 487 0 1366 0\r
+r 1764 0 1 0 12 0 d 0.1\r
+r 1764 0 2922 0 1766 0\r
+r 1765 0 1 0 489 0\r
+r 1765 0 479 0 1762 0\r
+r 1765 0 487 0 1384 0\r
+r 1766 0 2920 0 1762 0\r
+r 1766 0 72 0 1764 0\r
+r 1766 0 1 0 151 0\r
+r 1766 0 71 0 1384 0\r
+r 1767 0 1 0 12 0 d 0\r
+r 1767 0 2922 0 1769 0\r
+r 1768 0 1 0 489 0\r
+r 1768 0 479 0 1762 0\r
+r 1768 0 487 0 1380 0\r
+r 1769 0 2920 0 1762 0\r
+r 1769 0 72 0 1767 0\r
+r 1769 0 1 0 151 0\r
+r 1769 0 71 0 1380 0\r
+r 1770 20 472 0 1776 0\r
+r 1770 20 474 0 1771 0\r
+r 1770 20 4 0 912 0\r
+r 1770 20 5 0 2720 0\r
+r 1770 20 1031 0 1762 0\r
+r 1771 0 3225 0 1774 0\r
+r 1771 0 1 0 903 0\r
+r 1771 0 2 0 110 0\r
+r 1771 0 3 0 3225 0\r
+r 1771 0 1771 0 1772 0\r
+r 1771 0 476 0 1770 20\r
+r 1772 0 3225 0 1771 0\r
+r 1772 0 1 0 913 0\r
+r 1772 0 1771 0 1774 0\r
+r 1772 0 661 0 1773 0\r
+r 1773 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-7" y="-4" width="14" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">B Sampler</text> </svg>\r
+r 1773 0 3019 0 1772 0\r
+r 1774 0 3225 0 1772 0\r
+r 1774 0 1 0 1359 0\r
+r 1774 0 1771 0 1771 0\r
+r 1774 0 548 0 1775 0\r
+r 1774 0 911 0 1776 0\r
+r 1775 0 2985 0 1774 0\r
+r 1775 0 1 0 545 0 [d 1 0 0 1 -7 0\r
+r 1776 0 1 0 504 0\r
+r 1776 0 3059 0 1774 0\r
+r 1776 0 479 0 1770 20\r
+r 1776 0 487 0 1777 0\r
+r 1777 0 488 0 1776 0\r
+r 1777 0 2 0 507 0\r
+r 1777 0 3 0 3226 0\r
+r 1777 0 1039 0 1366 0\r
+r 1778 0 1032 0 1782 21\r
+r 1778 0 472 0 1781 0\r
+r 1778 0 472 0 1780 0\r
+r 1778 0 472 0 1779 0\r
+r 1778 0 4 0 466 0\r
+r 1778 0 5 0 2675 0\r
+r 1778 0 7 0 1347 0\r
+r 1779 0 1 0 504 0\r
+r 1779 0 479 0 1778 0\r
+r 1779 0 487 0 1368 0\r
+r 1780 0 1 0 504 0\r
+r 1780 0 479 0 1778 0\r
+r 1780 0 487 0 1369 0\r
+r 1781 0 1 0 504 0\r
+r 1781 0 479 0 1778 0\r
+r 1781 0 487 0 1373 0\r
+r 1782 21 472 0 1796 0\r
+r 1782 21 472 0 1792 0\r
+r 1782 21 472 0 1788 0\r
+r 1782 21 474 0 1783 0\r
+r 1782 21 4 0 912 0\r
+r 1782 21 5 0 2758 0\r
+r 1782 21 1031 0 1778 0\r
+r 1783 0 1 0 903 0\r
+r 1783 0 2 0 110 0\r
+r 1783 0 3227 0 1794 0\r
+r 1783 0 3 0 3227 0\r
+r 1783 0 476 0 1782 21\r
+r 1783 0 1783 0 1784 0\r
+r 1784 0 1 0 913 0\r
+r 1784 0 3227 0 1783 0\r
+r 1784 0 661 0 1785 0\r
+r 1784 0 1783 0 1786 0\r
+r 1785 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="210mm" height="297mm" id="svg2" style="overflow:visible"> <defs id="defs8" /> <g transform="translate(-46.5,-25)" id="g3"> <path d="M 40,5 L 40,6.4285714 L 40,43.571429 L 40,45 L 41.428571,45 L 60.47619,45 C 71.744098,45 80.47619,35.999955 80.47619,25 C 80.47619,14.000045 71.744099,5.0000002 60.47619,5 C 60.47619,5 60.47619,5 41.428571,5 L 40,5 z" id="path5" style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3;marker:none;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" /> </g> </svg>\r
+r 1785 0 3019 0 1784 0\r
+r 1786 0 1 0 1359 0\r
+r 1786 0 3227 0 1784 0\r
+r 1786 0 548 0 1787 0\r
+r 1786 0 1783 0 1790 0\r
+r 1786 0 911 0 1788 0\r
+r 1787 0 2985 0 1786 0\r
+r 1787 0 1 0 545 0 [d 1 0 0 1 -5.0 -10.0\r
+r 1788 0 1 0 504 0\r
+r 1788 0 3059 0 1786 0\r
+r 1788 0 479 0 1782 21\r
+r 1788 0 487 0 1789 0\r
+r 1789 0 488 0 1788 0\r
+r 1789 0 2 0 507 0\r
+r 1789 0 3 0 3228 0\r
+r 1789 0 1039 0 1368 0\r
+r 1790 0 1 0 1359 0\r
+r 1790 0 3227 0 1786 0\r
+r 1790 0 548 0 1791 0\r
+r 1790 0 1783 0 1794 0\r
+r 1790 0 911 0 1792 0\r
+r 1791 0 2985 0 1790 0\r
+r 1791 0 1 0 545 0 [d 1 0 0 1 -5.0 10.0\r
+r 1792 0 1 0 504 0\r
+r 1792 0 3059 0 1790 0\r
+r 1792 0 479 0 1782 21\r
+r 1792 0 487 0 1793 0\r
+r 1793 0 488 0 1792 0\r
+r 1793 0 2 0 507 0\r
+r 1793 0 3 0 3229 0\r
+r 1793 0 1039 0 1369 0\r
+r 1794 0 1 0 1359 0\r
+r 1794 0 3227 0 1790 0\r
+r 1794 0 548 0 1795 0\r
+r 1794 0 1783 0 1783 0\r
+r 1794 0 911 0 1796 0\r
+r 1795 0 2985 0 1794 0\r
+r 1795 0 1 0 545 0 [d 1 0 0 1 32.5 0.0\r
+r 1796 0 1 0 504 0\r
+r 1796 0 3059 0 1794 0\r
+r 1796 0 479 0 1782 21\r
+r 1796 0 487 0 1797 0\r
+r 1797 0 488 0 1796 0\r
+r 1797 0 2 0 507 0\r
+r 1797 0 3 0 3230 0\r
+r 1797 0 1039 0 1373 0\r
+r 1798 0 1032 0 1805 22\r
+r 1798 0 472 0 1803 0\r
+r 1798 0 472 0 1801 0\r
+r 1798 0 472 0 1800 0\r
+r 1798 0 472 0 1799 0\r
+r 1798 0 4 0 466 0\r
+r 1798 0 5 0 2728 0\r
+r 1798 0 70 0 1804 0\r
+r 1798 0 7 0 1347 0\r
+r 1799 0 1 0 504 0\r
+r 1799 0 479 0 1798 0\r
+r 1799 0 487 0 1368 0\r
+r 1800 0 1 0 504 0\r
+r 1800 0 479 0 1798 0\r
+r 1800 0 487 0 1369 0\r
+r 1801 0 1 0 504 0\r
+r 1801 0 479 0 1798 0\r
+r 1801 0 487 0 1373 0\r
+r 1802 0 1 0 14 0 b false\r
+r 1802 0 2922 0 1804 0\r
+r 1803 0 1 0 489 0\r
+r 1803 0 479 0 1798 0\r
+r 1803 0 487 0 1385 0\r
+r 1804 0 2920 0 1798 0\r
+r 1804 0 72 0 1802 0\r
+r 1804 0 1 0 151 0\r
+r 1804 0 71 0 1385 0\r
+r 1805 22 472 0 1819 0\r
+r 1805 22 472 0 1815 0\r
+r 1805 22 472 0 1811 0\r
+r 1805 22 474 0 1806 0\r
+r 1805 22 4 0 912 0\r
+r 1805 22 5 0 2691 0\r
+r 1805 22 1031 0 1798 0\r
+r 1806 0 1 0 903 0\r
+r 1806 0 2 0 110 0\r
+r 1806 0 3 0 3231 0\r
+r 1806 0 476 0 1805 22\r
+r 1806 0 1806 0 1807 0\r
+r 1806 0 3231 0 1817 0\r
+r 1807 0 1 0 913 0\r
+r 1807 0 661 0 1808 0\r
+r 1807 0 1806 0 1809 0\r
+r 1807 0 3231 0 1806 0\r
+r 1808 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="210mm" height="297mm" id="svg2" style="overflow:visible"> <defs id="defs8" /> <g transform="translate(1,-5)" id="g3" style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1"> <path d="M -13.08887,-15 L -11.08887,-12.5625 C -11.08887,-12.5625 -5.43262,-5.56245 -5.43262,5 C -5.43262,15.56245 -11.08887,22.5625 -11.08887,22.5625 L -13.08887,25 L -9.93262,25 L 4.06738,25 C 19,24.362183 27,23.350464 36,5.0039062 C 27,-13.649536 18,-14.637817 4.06738,-15 L -9.93262,-15 L -13.08887,-15 z" id="path5" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> </svg>\r
+r 1808 0 3019 0 1807 0\r
+r 1809 0 1 0 1359 0\r
+r 1809 0 548 0 1810 0\r
+r 1809 0 1806 0 1813 0\r
+r 1809 0 3231 0 1807 0\r
+r 1809 0 911 0 1811 0\r
+r 1810 0 2985 0 1809 0\r
+r 1810 0 1 0 545 0 [d 1 0 0 1 -5.0 -10.0\r
+r 1811 0 1 0 504 0\r
+r 1811 0 3059 0 1809 0\r
+r 1811 0 479 0 1805 22\r
+r 1811 0 487 0 1812 0\r
+r 1812 0 488 0 1811 0\r
+r 1812 0 2 0 507 0\r
+r 1812 0 3 0 3232 0\r
+r 1812 0 1039 0 1368 0\r
+r 1813 0 1 0 1359 0\r
+r 1813 0 548 0 1814 0\r
+r 1813 0 1806 0 1817 0\r
+r 1813 0 3231 0 1809 0\r
+r 1813 0 911 0 1815 0\r
+r 1814 0 2985 0 1813 0\r
+r 1814 0 1 0 545 0 [d 1 0 0 1 -5.0 10.0\r
+r 1815 0 1 0 504 0\r
+r 1815 0 3059 0 1813 0\r
+r 1815 0 479 0 1805 22\r
+r 1815 0 487 0 1816 0\r
+r 1816 0 488 0 1815 0\r
+r 1816 0 2 0 507 0\r
+r 1816 0 3 0 3233 0\r
+r 1816 0 1039 0 1369 0\r
+r 1817 0 1 0 1359 0\r
+r 1817 0 548 0 1818 0\r
+r 1817 0 1806 0 1806 0\r
+r 1817 0 3231 0 1813 0\r
+r 1817 0 911 0 1819 0\r
+r 1818 0 2985 0 1817 0\r
+r 1818 0 1 0 545 0 [d 1 0 0 1 35.0 0.0\r
+r 1819 0 1 0 504 0\r
+r 1819 0 3059 0 1817 0\r
+r 1819 0 479 0 1805 22\r
+r 1819 0 487 0 1820 0\r
+r 1820 0 488 0 1819 0\r
+r 1820 0 2 0 507 0\r
+r 1820 0 3 0 3234 0\r
+r 1820 0 1039 0 1373 0\r
+r 1821 0 1032 0 1828 23\r
+r 1821 0 472 0 1826 0\r
+r 1821 0 472 0 1824 0\r
+r 1821 0 472 0 1823 0\r
+r 1821 0 472 0 1822 0\r
+r 1821 0 4 0 466 0\r
+r 1821 0 5 0 2687 0\r
+r 1821 0 70 0 1827 0\r
+r 1821 0 7 0 1347 0\r
+r 1822 0 1 0 504 0\r
+r 1822 0 479 0 1821 0\r
+r 1822 0 487 0 1368 0\r
+r 1823 0 1 0 504 0\r
+r 1823 0 479 0 1821 0\r
+r 1823 0 487 0 1369 0\r
+r 1824 0 1 0 504 0\r
+r 1824 0 479 0 1821 0\r
+r 1824 0 487 0 1373 0\r
+r 1825 0 1 0 14 0 b false\r
+r 1825 0 2922 0 1827 0\r
+r 1826 0 1 0 489 0\r
+r 1826 0 479 0 1821 0\r
+r 1826 0 487 0 1385 0\r
+r 1827 0 2920 0 1821 0\r
+r 1827 0 72 0 1825 0\r
+r 1827 0 1 0 151 0\r
+r 1827 0 71 0 1385 0\r
+r 1828 23 472 0 1842 0\r
+r 1828 23 472 0 1838 0\r
+r 1828 23 472 0 1834 0\r
+r 1828 23 474 0 1829 0\r
+r 1828 23 4 0 912 0\r
+r 1828 23 5 0 2760 0\r
+r 1828 23 1031 0 1821 0\r
+r 1829 0 1 0 903 0\r
+r 1829 0 2 0 110 0\r
+r 1829 0 3235 0 1840 0\r
+r 1829 0 3 0 3235 0\r
+r 1829 0 476 0 1828 23\r
+r 1829 0 1829 0 1830 0\r
+r 1830 0 1 0 913 0\r
+r 1830 0 3235 0 1829 0\r
+r 1830 0 1829 0 1832 0\r
+r 1830 0 661 0 1831 0\r
+r 1831 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="210mm" height="297mm" id="svg2" style="overflow:visible"> <defs id="defs10" /> <g transform="translate(-10,-64.47)" id="g3"> <path d="M -4.772297,82.966988 C -6.369671,85.611388 -7.022297,85.966988 -7.022297,85.966988 L -10.678547,85.966988 L -8.678547,83.529488 C -8.678547,83.529488 -0.60546875,75.062451 -0.60546875,64.5 C -0.60546875,53.937549 -8.7797138,45.400481 -8.7797138,45.400481 L -10.674245,42.962981 L -7.017995,42.962981 C -6.236745,43.900481 -5.59612,44.619231 -4.799245,45.962981 C -2.926526,49.062796 1.9570312,56.526646 1.9570312,64.5 C 1.9570312,72.45065 -2.918994,79.846408 -4.772297,82.966988 z" id="path5" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> <g transform="translate(-29.186008,0.7594639)" id="g2396" style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-opacity:1"> <path d="M 17.222008,-20.759281 L 19.097008,-18.321781 C 19.097008,-18.321781 24.753258,-11.321731 24.753258,-0.75928153 C 24.753258,9.8031684 19.097008,16.803219 19.097008,16.803219 L 17.393883,19.240719 L 20.253258,19.240719 L 34.253258,19.240719 C 49.185878,18.602902 57.185878,17.591183 66.185878,-0.75537533 C 57.185878,-19.408817 48.185878,-20.397098 34.253258,-20.759281 L 20.253258,-20.759281 L 17.222008,-20.759281 z" id="path2398" style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> </g> </svg>\r
+r 1831 0 3019 0 1830 0\r
+r 1832 0 1 0 1359 0\r
+r 1832 0 3235 0 1830 0\r
+r 1832 0 548 0 1833 0\r
+r 1832 0 1829 0 1836 0\r
+r 1832 0 911 0 1834 0\r
+r 1833 0 2985 0 1832 0\r
+r 1833 0 1 0 545 0 [d 1 0 0 1 -11.0 -10.0\r
+r 1834 0 1 0 504 0\r
+r 1834 0 3059 0 1832 0\r
+r 1834 0 479 0 1828 23\r
+r 1834 0 487 0 1835 0\r
+r 1835 0 488 0 1834 0\r
+r 1835 0 2 0 507 0\r
+r 1835 0 3 0 3236 0\r
+r 1835 0 1039 0 1368 0\r
+r 1836 0 1 0 1359 0\r
+r 1836 0 3235 0 1832 0\r
+r 1836 0 548 0 1837 0\r
+r 1836 0 1829 0 1840 0\r
+r 1836 0 911 0 1838 0\r
+r 1837 0 2985 0 1836 0\r
+r 1837 0 1 0 545 0 [d 1 0 0 1 -11.0 10.0\r
+r 1838 0 1 0 504 0\r
+r 1838 0 3059 0 1836 0\r
+r 1838 0 479 0 1828 23\r
+r 1838 0 487 0 1839 0\r
+r 1839 0 488 0 1838 0\r
+r 1839 0 2 0 507 0\r
+r 1839 0 3 0 3237 0\r
+r 1839 0 1039 0 1369 0\r
+r 1840 0 1 0 1359 0\r
+r 1840 0 3235 0 1836 0\r
+r 1840 0 548 0 1841 0\r
+r 1840 0 1829 0 1829 0\r
+r 1840 0 911 0 1842 0\r
+r 1841 0 2985 0 1840 0\r
+r 1841 0 1 0 545 0 [d 1 0 0 1 35.0 0.0\r
+r 1842 0 1 0 504 0\r
+r 1842 0 3059 0 1840 0\r
+r 1842 0 479 0 1828 23\r
+r 1842 0 487 0 1843 0\r
+r 1843 0 488 0 1842 0\r
+r 1843 0 2 0 507 0\r
+r 1843 0 3 0 3238 0\r
+r 1843 0 1039 0 1373 0\r
+r 1844 0 1032 0 1850 24\r
+r 1844 0 472 0 1848 0\r
+r 1844 0 472 0 1846 0\r
+r 1844 0 472 0 1845 0\r
+r 1844 0 4 0 466 0\r
+r 1844 0 5 0 2736 0\r
+r 1844 0 70 0 1849 0\r
+r 1844 0 7 0 1347 0\r
+r 1845 0 1 0 504 0\r
+r 1845 0 479 0 1844 0\r
+r 1845 0 487 0 1366 0\r
+r 1846 0 1 0 504 0\r
+r 1846 0 479 0 1844 0\r
+r 1846 0 487 0 1373 0\r
+r 1847 0 1 0 14 0 b false\r
+r 1847 0 2922 0 1849 0\r
+r 1848 0 1 0 489 0\r
+r 1848 0 479 0 1844 0\r
+r 1848 0 487 0 1385 0\r
+r 1849 0 2920 0 1844 0\r
+r 1849 0 72 0 1847 0\r
+r 1849 0 1 0 151 0\r
+r 1849 0 71 0 1385 0\r
+r 1850 24 472 0 1860 0\r
+r 1850 24 472 0 1856 0\r
+r 1850 24 474 0 1851 0\r
+r 1850 24 4 0 912 0\r
+r 1850 24 5 0 2727 0\r
+r 1850 24 1031 0 1844 0\r
+r 1851 0 1 0 903 0\r
+r 1851 0 2 0 110 0\r
+r 1851 0 3 0 3239 0\r
+r 1851 0 1851 0 1852 0\r
+r 1851 0 476 0 1850 24\r
+r 1851 0 3239 0 1858 0\r
+r 1852 0 1 0 913 0\r
+r 1852 0 1851 0 1854 0\r
+r 1852 0 661 0 1853 0\r
+r 1852 0 3239 0 1851 0\r
+r 1853 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="210mm" height="297mm" id="svg2" style="overflow:visible"> <defs id="defs10" /> <g transform="scale(0.2, 0.2) translate(-45,-25)" id="g3"> <path d="M 38,2.59375 L 38,5 L 38,45 L 38,47.40625 L 40.109024,46.34375 L 79.184573,26.87052 L 78.840667,22.958095 L 40.109024,3.65625 L 38,2.59375 z" id="path5" style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-linejoin:miter;marker:none;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> <path d="M 80,25 C 80,27.209139 78.209139,29 76,29 C 73.790861,29 72,27.209139 72,25 C 72,22.790861 73.790861,21 76,21 C 78.209139,21 80,22.790861 80,25 z" transform="translate(6.4565219,0)" id="path7" style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linejoin:miter;marker:none;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> </g> </svg>\r
+r 1853 0 3019 0 1852 0\r
+r 1854 0 1 0 1359 0\r
+r 1854 0 1851 0 1858 0\r
+r 1854 0 548 0 1855 0\r
+r 1854 0 3239 0 1852 0\r
+r 1854 0 911 0 1856 0\r
+r 1855 0 2985 0 1854 0\r
+r 1855 0 1 0 545 0 [d 1 0 0 1 -1.0 0.0\r
+r 1856 0 1 0 504 0\r
+r 1856 0 3059 0 1854 0\r
+r 1856 0 479 0 1850 24\r
+r 1856 0 487 0 1857 0\r
+r 1857 0 488 0 1856 0\r
+r 1857 0 2 0 507 0\r
+r 1857 0 3 0 3240 0\r
+r 1857 0 1039 0 1366 0\r
+r 1858 0 1 0 1359 0\r
+r 1858 0 1851 0 1851 0\r
+r 1858 0 548 0 1859 0\r
+r 1858 0 3239 0 1854 0\r
+r 1858 0 911 0 1860 0\r
+r 1859 0 2985 0 1858 0\r
+r 1859 0 1 0 545 0 [d 1 0 0 1 8.3 0.0\r
+r 1860 0 1 0 504 0\r
+r 1860 0 3059 0 1858 0\r
+r 1860 0 479 0 1850 24\r
+r 1860 0 487 0 1861 0\r
+r 1861 0 488 0 1860 0\r
+r 1861 0 2 0 507 0\r
+r 1861 0 3 0 3241 0\r
+r 1861 0 1039 0 1373 0\r
+r 1862 0 1032 0 1864 25\r
+r 1862 0 472 0 1863 0\r
+r 1862 0 4 0 466 0\r
+r 1862 0 5 0 2763 0\r
+r 1862 0 7 0 1347 0\r
+r 1863 0 1 0 504 0\r
+r 1863 0 479 0 1862 0\r
+r 1863 0 487 0 1373 0\r
+r 1864 25 472 0 1870 0\r
+r 1864 25 474 0 1865 0\r
+r 1864 25 4 0 912 0\r
+r 1864 25 5 0 2751 0\r
+r 1864 25 1031 0 1862 0\r
+r 1865 0 1 0 903 0\r
+r 1865 0 1865 0 1866 0\r
+r 1865 0 3242 0 1868 0\r
+r 1865 0 2 0 110 0\r
+r 1865 0 3 0 3242 0\r
+r 1865 0 476 0 1864 25\r
+r 1866 0 1865 0 1868 0\r
+r 1866 0 1 0 913 0\r
+r 1866 0 3242 0 1865 0\r
+r 1866 0 661 0 1867 0\r
+r 1867 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">F</text> </svg>\r
+r 1867 0 3019 0 1866 0\r
+r 1868 0 1865 0 1865 0\r
+r 1868 0 1 0 1359 0\r
+r 1868 0 3242 0 1866 0\r
+r 1868 0 548 0 1869 0\r
+r 1868 0 911 0 1870 0\r
+r 1869 0 2985 0 1868 0\r
+r 1869 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1870 0 1 0 504 0\r
+r 1870 0 3059 0 1868 0\r
+r 1870 0 479 0 1864 25\r
+r 1870 0 487 0 1871 0\r
+r 1871 0 488 0 1870 0\r
+r 1871 0 2 0 507 0\r
+r 1871 0 3 0 3243 0\r
+r 1871 0 1039 0 1373 0\r
+r 1872 0 1032 0 1878 26\r
+r 1872 0 472 0 1876 0\r
+r 1872 0 472 0 1874 0\r
+r 1872 0 472 0 1873 0\r
+r 1872 0 4 0 466 0\r
+r 1872 0 5 0 2686 0\r
+r 1872 0 70 0 1877 0\r
+r 1872 0 7 0 1347 0\r
+r 1873 0 1 0 504 0\r
+r 1873 0 479 0 1872 0\r
+r 1873 0 487 0 1366 0\r
+r 1874 0 1 0 504 0\r
+r 1874 0 479 0 1872 0\r
+r 1874 0 487 0 1373 0\r
+r 1875 0 1 0 12 0 d 0.0\r
+r 1875 0 2922 0 1877 0\r
+r 1876 0 1 0 489 0\r
+r 1876 0 479 0 1872 0\r
+r 1876 0 487 0 1386 0\r
+r 1877 0 2920 0 1872 0\r
+r 1877 0 72 0 1875 0\r
+r 1877 0 1 0 151 0\r
+r 1877 0 71 0 1386 0\r
+r 1878 26 472 0 1888 0\r
+r 1878 26 472 0 1884 0\r
+r 1878 26 474 0 1879 0\r
+r 1878 26 4 0 912 0\r
+r 1878 26 5 0 2710 0\r
+r 1878 26 1031 0 1872 0\r
+r 1879 0 1 0 903 0\r
+r 1879 0 2 0 110 0\r
+r 1879 0 3 0 3244 0\r
+r 1879 0 3244 0 1886 0\r
+r 1879 0 476 0 1878 26\r
+r 1879 0 1879 0 1880 0\r
+r 1880 0 1 0 913 0\r
+r 1880 0 3244 0 1879 0\r
+r 1880 0 661 0 1881 0\r
+r 1880 0 1879 0 1882 0\r
+r 1881 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1.5" text-anchor="middle" font-family="Verdana" font-size="3">>=</text> </svg>\r
+r 1881 0 3019 0 1880 0\r
+r 1882 0 1 0 1359 0\r
+r 1882 0 3244 0 1880 0\r
+r 1882 0 548 0 1883 0\r
+r 1882 0 1879 0 1886 0\r
+r 1882 0 911 0 1884 0\r
+r 1883 0 2985 0 1882 0\r
+r 1883 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1884 0 1 0 504 0\r
+r 1884 0 3059 0 1882 0\r
+r 1884 0 479 0 1878 26\r
+r 1884 0 487 0 1885 0\r
+r 1885 0 488 0 1884 0\r
+r 1885 0 2 0 507 0\r
+r 1885 0 3 0 3245 0\r
+r 1885 0 1039 0 1366 0\r
+r 1886 0 1 0 1359 0\r
+r 1886 0 3244 0 1882 0\r
+r 1886 0 548 0 1887 0\r
+r 1886 0 1879 0 1879 0\r
+r 1886 0 911 0 1888 0\r
+r 1887 0 2985 0 1886 0\r
+r 1887 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1888 0 1 0 504 0\r
+r 1888 0 3059 0 1886 0\r
+r 1888 0 479 0 1878 26\r
+r 1888 0 487 0 1889 0\r
+r 1889 0 488 0 1888 0\r
+r 1889 0 2 0 507 0\r
+r 1889 0 3 0 3246 0\r
+r 1889 0 1039 0 1373 0\r
+r 1890 0 1032 0 1894 27\r
+r 1890 0 472 0 1893 0\r
+r 1890 0 472 0 1892 0\r
+r 1890 0 472 0 1891 0\r
+r 1890 0 4 0 466 0\r
+r 1890 0 5 0 2684 0\r
+r 1890 0 7 0 1347 0\r
+r 1891 0 1 0 504 0\r
+r 1891 0 479 0 1890 0\r
+r 1891 0 487 0 1368 0\r
+r 1892 0 1 0 504 0\r
+r 1892 0 479 0 1890 0\r
+r 1892 0 487 0 1369 0\r
+r 1893 0 1 0 504 0\r
+r 1893 0 479 0 1890 0\r
+r 1893 0 487 0 1373 0\r
+r 1894 27 472 0 1908 0\r
+r 1894 27 472 0 1904 0\r
+r 1894 27 472 0 1900 0\r
+r 1894 27 474 0 1895 0\r
+r 1894 27 4 0 912 0\r
+r 1894 27 5 0 2697 0\r
+r 1894 27 1031 0 1890 0\r
+r 1895 0 1 0 903 0\r
+r 1895 0 2 0 110 0\r
+r 1895 0 3 0 3247 0\r
+r 1895 0 476 0 1894 27\r
+r 1895 0 3247 0 1906 0\r
+r 1895 0 1895 0 1896 0\r
+r 1896 0 1 0 913 0\r
+r 1896 0 661 0 1897 0\r
+r 1896 0 3247 0 1895 0\r
+r 1896 0 1895 0 1898 0\r
+r 1897 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1.5" text-anchor="middle" font-family="Verdana" font-size="3">></text> </svg>\r
+r 1897 0 3019 0 1896 0\r
+r 1898 0 1 0 1359 0\r
+r 1898 0 548 0 1899 0\r
+r 1898 0 3247 0 1896 0\r
+r 1898 0 1895 0 1902 0\r
+r 1898 0 911 0 1900 0\r
+r 1899 0 2985 0 1898 0\r
+r 1899 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1900 0 1 0 504 0\r
+r 1900 0 3059 0 1898 0\r
+r 1900 0 479 0 1894 27\r
+r 1900 0 487 0 1901 0\r
+r 1901 0 488 0 1900 0\r
+r 1901 0 2 0 507 0\r
+r 1901 0 3 0 3248 0\r
+r 1901 0 1039 0 1368 0\r
+r 1902 0 1 0 1359 0\r
+r 1902 0 548 0 1903 0\r
+r 1902 0 3247 0 1898 0\r
+r 1902 0 1895 0 1906 0\r
+r 1902 0 911 0 1904 0\r
+r 1903 0 2985 0 1902 0\r
+r 1903 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1904 0 1 0 504 0\r
+r 1904 0 3059 0 1902 0\r
+r 1904 0 479 0 1894 27\r
+r 1904 0 487 0 1905 0\r
+r 1905 0 488 0 1904 0\r
+r 1905 0 2 0 507 0\r
+r 1905 0 3 0 3249 0\r
+r 1905 0 1039 0 1369 0\r
+r 1906 0 1 0 1359 0\r
+r 1906 0 548 0 1907 0\r
+r 1906 0 3247 0 1902 0\r
+r 1906 0 1895 0 1895 0\r
+r 1906 0 911 0 1908 0\r
+r 1907 0 2985 0 1906 0\r
+r 1907 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1908 0 1 0 504 0\r
+r 1908 0 3059 0 1906 0\r
+r 1908 0 479 0 1894 27\r
+r 1908 0 487 0 1909 0\r
+r 1909 0 488 0 1908 0\r
+r 1909 0 2 0 507 0\r
+r 1909 0 3 0 3250 0\r
+r 1909 0 1039 0 1373 0\r
+r 1910 0 1032 0 1913 28\r
+r 1910 0 472 0 1912 0\r
+r 1910 0 472 0 1911 0\r
+r 1910 0 4 0 466 0\r
+r 1910 0 5 0 2694 0\r
+r 1910 0 7 0 1347 0\r
+r 1911 0 1 0 504 0\r
+r 1911 0 479 0 1910 0\r
+r 1911 0 487 0 1366 0\r
+r 1912 0 1 0 504 0\r
+r 1912 0 479 0 1910 0\r
+r 1912 0 487 0 1373 0\r
+r 1913 28 472 0 1923 0\r
+r 1913 28 472 0 1919 0\r
+r 1913 28 474 0 1914 0\r
+r 1913 28 4 0 912 0\r
+r 1913 28 5 0 2672 0\r
+r 1913 28 1031 0 1910 0\r
+r 1914 0 1 0 903 0\r
+r 1914 0 2 0 110 0\r
+r 1914 0 1914 0 1915 0\r
+r 1914 0 3251 0 1921 0\r
+r 1914 0 3 0 3251 0\r
+r 1914 0 476 0 1913 28\r
+r 1915 0 1 0 913 0\r
+r 1915 0 1914 0 1917 0\r
+r 1915 0 3251 0 1914 0\r
+r 1915 0 661 0 1916 0\r
+r 1916 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1.5" text-anchor="middle" font-family="Verdana" font-size="3"><=</text> </svg>\r
+r 1916 0 3019 0 1915 0\r
+r 1917 0 1 0 1359 0\r
+r 1917 0 1914 0 1921 0\r
+r 1917 0 3251 0 1915 0\r
+r 1917 0 548 0 1918 0\r
+r 1917 0 911 0 1919 0\r
+r 1918 0 2985 0 1917 0\r
+r 1918 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1919 0 1 0 504 0\r
+r 1919 0 3059 0 1917 0\r
+r 1919 0 479 0 1913 28\r
+r 1919 0 487 0 1920 0\r
+r 1920 0 488 0 1919 0\r
+r 1920 0 2 0 507 0\r
+r 1920 0 3 0 3252 0\r
+r 1920 0 1039 0 1366 0\r
+r 1921 0 1 0 1359 0\r
+r 1921 0 1914 0 1914 0\r
+r 1921 0 3251 0 1917 0\r
+r 1921 0 548 0 1922 0\r
+r 1921 0 911 0 1923 0\r
+r 1922 0 2985 0 1921 0\r
+r 1922 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1923 0 1 0 504 0\r
+r 1923 0 3059 0 1921 0\r
+r 1923 0 479 0 1913 28\r
+r 1923 0 487 0 1924 0\r
+r 1924 0 488 0 1923 0\r
+r 1924 0 2 0 507 0\r
+r 1924 0 3 0 3253 0\r
+r 1924 0 1039 0 1373 0\r
+r 1925 0 1032 0 1932 29\r
+r 1925 0 472 0 1930 0\r
+r 1925 0 472 0 1928 0\r
+r 1925 0 472 0 1927 0\r
+r 1925 0 472 0 1926 0\r
+r 1925 0 4 0 466 0\r
+r 1925 0 5 0 2680 0\r
+r 1925 0 70 0 1931 0\r
+r 1925 0 7 0 1347 0\r
+r 1926 0 1 0 504 0\r
+r 1926 0 479 0 1925 0\r
+r 1926 0 487 0 1368 0\r
+r 1927 0 1 0 504 0\r
+r 1927 0 479 0 1925 0\r
+r 1927 0 487 0 1369 0\r
+r 1928 0 1 0 504 0\r
+r 1928 0 479 0 1925 0\r
+r 1928 0 487 0 1373 0\r
+r 1929 0 1 0 12 0 d 0.0\r
+r 1929 0 2922 0 1931 0\r
+r 1930 0 1 0 489 0\r
+r 1930 0 479 0 1925 0\r
+r 1930 0 487 0 1386 0\r
+r 1931 0 2920 0 1925 0\r
+r 1931 0 72 0 1929 0\r
+r 1931 0 1 0 151 0\r
+r 1931 0 71 0 1386 0\r
+r 1932 29 472 0 1946 0\r
+r 1932 29 472 0 1942 0\r
+r 1932 29 472 0 1938 0\r
+r 1932 29 474 0 1933 0\r
+r 1932 29 4 0 912 0\r
+r 1932 29 5 0 2700 0\r
+r 1932 29 1031 0 1925 0\r
+r 1933 0 1 0 903 0\r
+r 1933 0 2 0 110 0\r
+r 1933 0 3 0 3254 0\r
+r 1933 0 476 0 1932 29\r
+r 1933 0 1933 0 1934 0\r
+r 1933 0 3254 0 1944 0\r
+r 1934 0 1 0 913 0\r
+r 1934 0 1933 0 1936 0\r
+r 1934 0 661 0 1935 0\r
+r 1934 0 3254 0 1933 0\r
+r 1935 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1.5" text-anchor="middle" font-family="Verdana" font-size="3"><</text> </svg>\r
+r 1935 0 3019 0 1934 0\r
+r 1936 0 1 0 1359 0\r
+r 1936 0 548 0 1937 0\r
+r 1936 0 1933 0 1940 0\r
+r 1936 0 3254 0 1934 0\r
+r 1936 0 911 0 1938 0\r
+r 1937 0 2985 0 1936 0\r
+r 1937 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1938 0 1 0 504 0\r
+r 1938 0 3059 0 1936 0\r
+r 1938 0 479 0 1932 29\r
+r 1938 0 487 0 1939 0\r
+r 1939 0 488 0 1938 0\r
+r 1939 0 2 0 507 0\r
+r 1939 0 3 0 3255 0\r
+r 1939 0 1039 0 1368 0\r
+r 1940 0 1 0 1359 0\r
+r 1940 0 548 0 1941 0\r
+r 1940 0 1933 0 1944 0\r
+r 1940 0 3254 0 1936 0\r
+r 1940 0 911 0 1942 0\r
+r 1941 0 2985 0 1940 0\r
+r 1941 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1942 0 1 0 504 0\r
+r 1942 0 3059 0 1940 0\r
+r 1942 0 479 0 1932 29\r
+r 1942 0 487 0 1943 0\r
+r 1943 0 488 0 1942 0\r
+r 1943 0 2 0 507 0\r
+r 1943 0 3 0 3256 0\r
+r 1943 0 1039 0 1369 0\r
+r 1944 0 1 0 1359 0\r
+r 1944 0 548 0 1945 0\r
+r 1944 0 1933 0 1933 0\r
+r 1944 0 3254 0 1940 0\r
+r 1944 0 911 0 1946 0\r
+r 1945 0 2985 0 1944 0\r
+r 1945 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1946 0 1 0 504 0\r
+r 1946 0 3059 0 1944 0\r
+r 1946 0 479 0 1932 29\r
+r 1946 0 487 0 1947 0\r
+r 1947 0 488 0 1946 0\r
+r 1947 0 2 0 507 0\r
+r 1947 0 3 0 3257 0\r
+r 1947 0 1039 0 1373 0\r
+r 1948 0 1032 0 1958 30\r
+r 1948 0 472 0 1956 0\r
+r 1948 0 472 0 1953 0\r
+r 1948 0 472 0 1951 0\r
+r 1948 0 472 0 1950 0\r
+r 1948 0 472 0 1949 0\r
+r 1948 0 4 0 466 0\r
+r 1948 0 5 0 2688 0\r
+r 1948 0 70 0 1957 0\r
+r 1948 0 70 0 1954 0\r
+r 1948 0 7 0 1347 0\r
+r 1949 0 1 0 504 0\r
+r 1949 0 479 0 1948 0\r
+r 1949 0 487 0 1368 0\r
+r 1950 0 1 0 504 0\r
+r 1950 0 479 0 1948 0\r
+r 1950 0 487 0 1369 0\r
+r 1951 0 1 0 504 0\r
+r 1951 0 479 0 1948 0\r
+r 1951 0 487 0 1373 0\r
+r 1952 0 1 0 12 0 d 1.0\r
+r 1952 0 2922 0 1954 0\r
+r 1953 0 1 0 489 0\r
+r 1953 0 479 0 1948 0\r
+r 1953 0 487 0 1382 0\r
+r 1954 0 2920 0 1948 0\r
+r 1954 0 72 0 1952 0\r
+r 1954 0 1 0 151 0\r
+r 1954 0 71 0 1382 0\r
+r 1955 0 1 0 12 0 d 1.0\r
+r 1955 0 2922 0 1957 0\r
+r 1956 0 1 0 489 0\r
+r 1956 0 479 0 1948 0\r
+r 1956 0 487 0 1383 0\r
+r 1957 0 2920 0 1948 0\r
+r 1957 0 72 0 1955 0\r
+r 1957 0 1 0 151 0\r
+r 1957 0 71 0 1383 0\r
+r 1958 30 472 0 1972 0\r
+r 1958 30 472 0 1968 0\r
+r 1958 30 472 0 1964 0\r
+r 1958 30 474 0 1959 0\r
+r 1958 30 4 0 912 0\r
+r 1958 30 5 0 2685 0\r
+r 1958 30 1031 0 1948 0\r
+r 1959 0 1 0 903 0\r
+r 1959 0 3258 0 1970 0\r
+r 1959 0 2 0 110 0\r
+r 1959 0 3 0 3258 0\r
+r 1959 0 476 0 1958 30\r
+r 1959 0 1959 0 1960 0\r
+r 1960 0 1 0 913 0\r
+r 1960 0 3258 0 1959 0\r
+r 1960 0 661 0 1961 0\r
+r 1960 0 1959 0 1962 0\r
+r 1961 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="1" text-anchor="middle" font-family="Verdana" font-size="3">+</text> </svg>\r
+r 1961 0 3019 0 1960 0\r
+r 1962 0 1 0 1359 0\r
+r 1962 0 3258 0 1960 0\r
+r 1962 0 548 0 1963 0\r
+r 1962 0 1959 0 1966 0\r
+r 1962 0 911 0 1964 0\r
+r 1963 0 2985 0 1962 0\r
+r 1963 0 1 0 545 0 [d 1 0 0 1 -4 -2\r
+r 1964 0 1 0 504 0\r
+r 1964 0 3059 0 1962 0\r
+r 1964 0 479 0 1958 30\r
+r 1964 0 487 0 1965 0\r
+r 1965 0 488 0 1964 0\r
+r 1965 0 2 0 507 0\r
+r 1965 0 3 0 3259 0\r
+r 1965 0 1039 0 1368 0\r
+r 1966 0 1 0 1359 0\r
+r 1966 0 3258 0 1962 0\r
+r 1966 0 548 0 1967 0\r
+r 1966 0 1959 0 1970 0\r
+r 1966 0 911 0 1968 0\r
+r 1967 0 2985 0 1966 0\r
+r 1967 0 1 0 545 0 [d 1 0 0 1 -4 2\r
+r 1968 0 1 0 504 0\r
+r 1968 0 3059 0 1966 0\r
+r 1968 0 479 0 1958 30\r
+r 1968 0 487 0 1969 0\r
+r 1969 0 488 0 1968 0\r
+r 1969 0 2 0 507 0\r
+r 1969 0 3 0 3260 0\r
+r 1969 0 1039 0 1369 0\r
+r 1970 0 1 0 1359 0\r
+r 1970 0 3258 0 1966 0\r
+r 1970 0 548 0 1971 0\r
+r 1970 0 1959 0 1959 0\r
+r 1970 0 911 0 1972 0\r
+r 1971 0 2985 0 1970 0\r
+r 1971 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1972 0 1 0 504 0\r
+r 1972 0 3059 0 1970 0\r
+r 1972 0 479 0 1958 30\r
+r 1972 0 487 0 1973 0\r
+r 1973 0 488 0 1972 0\r
+r 1973 0 2 0 507 0\r
+r 1973 0 3 0 3261 0\r
+r 1973 0 1039 0 1373 0\r
+r 1974 0 1032 0 1980 31\r
+r 1974 0 472 0 1978 0\r
+r 1974 0 472 0 1976 0\r
+r 1974 0 472 0 1975 0\r
+r 1974 0 4 0 466 0\r
+r 1974 0 5 0 2732 0\r
+r 1974 0 70 0 1979 0\r
+r 1974 0 7 0 1347 0\r
+r 1975 0 1 0 504 0\r
+r 1975 0 479 0 1974 0\r
+r 1975 0 487 0 1366 0\r
+r 1976 0 1 0 504 0\r
+r 1976 0 479 0 1974 0\r
+r 1976 0 487 0 1373 0\r
+r 1977 0 1 0 12 0 d 0.0\r
+r 1977 0 2922 0 1979 0\r
+r 1978 0 1 0 489 0\r
+r 1978 0 479 0 1974 0\r
+r 1978 0 487 0 1380 0\r
+r 1979 0 2920 0 1974 0\r
+r 1979 0 72 0 1977 0\r
+r 1979 0 1 0 151 0\r
+r 1979 0 71 0 1380 0\r
+r 1980 31 472 0 1990 0\r
+r 1980 31 472 0 1986 0\r
+r 1980 31 474 0 1981 0\r
+r 1980 31 4 0 912 0\r
+r 1980 31 5 0 2762 0\r
+r 1980 31 1031 0 1974 0\r
+r 1981 0 1 0 903 0\r
+r 1981 0 2 0 110 0\r
+r 1981 0 3 0 3262 0\r
+r 1981 0 476 0 1980 31\r
+r 1981 0 1981 0 1982 0\r
+r 1981 0 3262 0 1988 0\r
+r 1982 0 1 0 913 0\r
+r 1982 0 1981 0 1984 0\r
+r 1982 0 661 0 1983 0\r
+r 1982 0 3262 0 1981 0\r
+r 1983 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="0.5" text-anchor="middle" font-family="Verdana" font-size="2">SET</text> </svg>\r
+r 1983 0 3019 0 1982 0\r
+r 1984 0 1 0 1359 0\r
+r 1984 0 548 0 1985 0\r
+r 1984 0 1981 0 1988 0\r
+r 1984 0 3262 0 1982 0\r
+r 1984 0 911 0 1986 0\r
+r 1985 0 2985 0 1984 0\r
+r 1985 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 1986 0 1 0 504 0\r
+r 1986 0 3059 0 1984 0\r
+r 1986 0 479 0 1980 31\r
+r 1986 0 487 0 1987 0\r
+r 1987 0 488 0 1986 0\r
+r 1987 0 2 0 507 0\r
+r 1987 0 3 0 3263 0\r
+r 1987 0 1039 0 1366 0\r
+r 1988 0 1 0 1359 0\r
+r 1988 0 548 0 1989 0\r
+r 1988 0 1981 0 1981 0\r
+r 1988 0 3262 0 1984 0\r
+r 1988 0 911 0 1990 0\r
+r 1989 0 2985 0 1988 0\r
+r 1989 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 1990 0 1 0 504 0\r
+r 1990 0 3059 0 1988 0\r
+r 1990 0 479 0 1980 31\r
+r 1990 0 487 0 1991 0\r
+r 1991 0 488 0 1990 0\r
+r 1991 0 2 0 507 0\r
+r 1991 0 3 0 3264 0\r
+r 1991 0 1039 0 1373 0\r
+r 1992 0 1032 0 1995 32\r
+r 1992 0 472 0 1994 0\r
+r 1992 0 472 0 1993 0\r
+r 1992 0 4 0 466 0\r
+r 1992 0 5 0 2669 0\r
+r 1992 0 7 0 1347 0\r
+r 1993 0 1 0 504 0\r
+r 1993 0 479 0 1992 0\r
+r 1993 0 487 0 1366 0\r
+r 1994 0 1 0 504 0\r
+r 1994 0 479 0 1992 0\r
+r 1994 0 487 0 1373 0\r
+r 1995 32 472 0 2005 0\r
+r 1995 32 472 0 2001 0\r
+r 1995 32 474 0 1996 0\r
+r 1995 32 4 0 912 0\r
+r 1995 32 5 0 2745 0\r
+r 1995 32 1031 0 1992 0\r
+r 1996 0 3265 0 2003 0\r
+r 1996 0 1 0 903 0\r
+r 1996 0 2 0 110 0\r
+r 1996 0 3 0 3265 0\r
+r 1996 0 476 0 1995 32\r
+r 1996 0 1996 0 1997 0\r
+r 1997 0 3265 0 1996 0\r
+r 1997 0 1 0 913 0\r
+r 1997 0 1996 0 1999 0\r
+r 1997 0 661 0 1998 0\r
+r 1998 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="0.5" text-anchor="middle" font-family="Verdana" font-size="2">e^x</text> </svg>\r
+r 1998 0 3019 0 1997 0\r
+r 1999 0 3265 0 1997 0\r
+r 1999 0 1 0 1359 0\r
+r 1999 0 1996 0 2003 0\r
+r 1999 0 548 0 2000 0\r
+r 1999 0 911 0 2001 0\r
+r 2000 0 2985 0 1999 0\r
+r 2000 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 2001 0 1 0 504 0\r
+r 2001 0 3059 0 1999 0\r
+r 2001 0 479 0 1995 32\r
+r 2001 0 487 0 2002 0\r
+r 2002 0 488 0 2001 0\r
+r 2002 0 2 0 507 0\r
+r 2002 0 3 0 3266 0\r
+r 2002 0 1039 0 1366 0\r
+r 2003 0 3265 0 1999 0\r
+r 2003 0 1 0 1359 0\r
+r 2003 0 1996 0 1996 0\r
+r 2003 0 548 0 2004 0\r
+r 2003 0 911 0 2005 0\r
+r 2004 0 2985 0 2003 0\r
+r 2004 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 2005 0 1 0 504 0\r
+r 2005 0 3059 0 2003 0\r
+r 2005 0 479 0 1995 32\r
+r 2005 0 487 0 2006 0\r
+r 2006 0 488 0 2005 0\r
+r 2006 0 2 0 507 0\r
+r 2006 0 3 0 3267 0\r
+r 2006 0 1039 0 1373 0\r
+r 2007 0 1032 0 2013 0\r
+r 2007 0 472 0 2011 0\r
+r 2007 0 472 0 2009 0\r
+r 2007 0 472 0 2008 0\r
+r 2007 0 4 0 466 0\r
+r 2007 0 5 0 2757 0\r
+r 2007 0 70 0 2012 0\r
+r 2007 0 7 0 1347 0\r
+r 2008 0 1 0 504 0\r
+r 2008 0 479 0 2007 0\r
+r 2008 0 487 0 1366 0\r
+r 2009 0 1 0 504 0\r
+r 2009 0 479 0 2007 0\r
+r 2009 0 487 0 1373 0\r
+r 2010 0 1 0 14 0 b true\r
+r 2010 0 2922 0 2012 0\r
+r 2011 0 1 0 489 0\r
+r 2011 0 479 0 2007 0\r
+r 2011 0 487 0 1380 0\r
+r 2012 0 2920 0 2007 0\r
+r 2012 0 72 0 2010 0\r
+r 2012 0 1 0 151 0\r
+r 2012 0 71 0 1380 0\r
+r 2013 0 472 0 2023 0\r
+r 2013 0 472 0 2019 0\r
+r 2013 0 474 0 2014 0\r
+r 2013 0 4 0 912 0\r
+r 2013 0 5 0 2733 0\r
+r 2013 0 7 0 1347 0\r
+r 2013 0 1031 0 2007 0\r
+r 2014 0 1 0 903 0\r
+r 2014 0 2 0 110 0\r
+r 2014 0 3 0 3268 0\r
+r 2014 0 3268 0 2021 0\r
+r 2014 0 476 0 2013 0\r
+r 2014 0 2014 0 2015 0\r
+r 2015 0 1 0 913 0\r
+r 2015 0 3268 0 2014 0\r
+r 2015 0 661 0 2016 0\r
+r 2015 0 2014 0 2017 0\r
+r 2016 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="0.5" text-anchor="middle" font-family="Verdana" font-size="2">BTV</text> </svg>\r
+r 2016 0 3019 0 2015 0\r
+r 2017 0 1 0 1359 0\r
+r 2017 0 3268 0 2015 0\r
+r 2017 0 548 0 2018 0\r
+r 2017 0 2014 0 2021 0\r
+r 2017 0 911 0 2019 0\r
+r 2018 0 2985 0 2017 0\r
+r 2018 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 2019 0 1 0 504 0\r
+r 2019 0 3059 0 2017 0\r
+r 2019 0 479 0 2013 0\r
+r 2019 0 487 0 2020 0\r
+r 2020 0 488 0 2019 0\r
+r 2020 0 2 0 507 0\r
+r 2020 0 3 0 3269 0\r
+r 2020 0 1039 0 1366 0\r
+r 2021 0 1 0 1359 0\r
+r 2021 0 3268 0 2017 0\r
+r 2021 0 548 0 2022 0\r
+r 2021 0 2014 0 2014 0\r
+r 2021 0 911 0 2023 0\r
+r 2022 0 2985 0 2021 0\r
+r 2022 0 1 0 545 0 [d 1 0 0 1 4 0\r
+r 2023 0 1 0 504 0\r
+r 2023 0 3059 0 2021 0\r
+r 2023 0 479 0 2013 0\r
+r 2023 0 487 0 2024 0\r
+r 2024 0 488 0 2023 0\r
+r 2024 0 2 0 507 0\r
+r 2024 0 3 0 3270 0\r
+r 2024 0 1039 0 1373 0\r
+r 2025 0 1040 0 2039 0\r
+r 2025 0 488 0 2029 0\r
+r 2025 0 2 0 507 0\r
+r 2025 0 3 0 3271 0\r
+r 2025 0 5 0 2695 0\r
+r 2025 0 7 0 1347 0\r
+r 2026 0 1040 0 2043 0\r
+r 2026 0 488 0 2030 0\r
+r 2026 0 2 0 507 0\r
+r 2026 0 3 0 3272 0\r
+r 2026 0 5 0 2764 0\r
+r 2026 0 7 0 1347 0\r
+r 2027 0 1040 0 2047 0\r
+r 2027 0 488 0 2031 0\r
+r 2027 0 2 0 507 0\r
+r 2027 0 3 0 3273 0\r
+r 2027 0 5 0 2714 0\r
+r 2027 0 7 0 1347 0\r
+r 2028 0 1032 0 2032 33\r
+r 2028 0 472 0 2031 0\r
+r 2028 0 472 0 2030 0\r
+r 2028 0 472 0 2029 0\r
+r 2028 0 4 0 466 0\r
+r 2028 0 5 0 2671 0\r
+r 2028 0 7 0 1347 0\r
+r 2029 0 1 0 504 0\r
+r 2029 0 479 0 2028 0\r
+r 2029 0 487 0 2025 0\r
+r 2030 0 1 0 504 0\r
+r 2030 0 479 0 2028 0\r
+r 2030 0 487 0 2026 0\r
+r 2031 0 1 0 504 0\r
+r 2031 0 479 0 2028 0\r
+r 2031 0 487 0 2027 0\r
+r 2032 33 472 0 2046 0\r
+r 2032 33 472 0 2042 0\r
+r 2032 33 472 0 2038 0\r
+r 2032 33 474 0 2033 0\r
+r 2032 33 4 0 912 0\r
+r 2032 33 5 0 2701 0\r
+r 2032 33 1031 0 2028 0\r
+r 2033 0 1 0 903 0\r
+r 2033 0 2033 0 2034 0\r
+r 2033 0 3274 0 2044 0\r
+r 2033 0 2 0 110 0\r
+r 2033 0 3 0 3274 0\r
+r 2033 0 476 0 2032 33\r
+r 2034 0 2033 0 2036 0\r
+r 2034 0 1 0 913 0\r
+r 2034 0 3274 0 2033 0\r
+r 2034 0 661 0 2035 0\r
+r 2035 0 1 0 10 0 s <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" overflow="visible"> <rect x="-4" y="-4" width="8" height="8" stroke="black" stroke-width="0.2" fill="none"/> <text x="0" y="2" text-anchor="middle" font-family="Verdana" font-size="5">B</text> </svg>\r
+r 2035 0 3019 0 2034 0\r
+r 2036 0 2033 0 2040 0\r
+r 2036 0 1 0 1359 0\r
+r 2036 0 3274 0 2034 0\r
+r 2036 0 548 0 2037 0\r
+r 2036 0 911 0 2038 0\r
+r 2037 0 2985 0 2036 0\r
+r 2037 0 1 0 545 0 [d 1 0 0 1 -4 0\r
+r 2038 0 1 0 504 0\r
+r 2038 0 3059 0 2036 0\r
+r 2038 0 479 0 2032 33\r
+r 2038 0 487 0 2039 0\r
+r 2039 0 488 0 2038 0\r
+r 2039 0 2 0 507 0\r
+r 2039 0 3 0 3275 0\r
+r 2039 0 1039 0 2025 0\r
+r 2040 0 2033 0 2044 0\r
+r 2040 0 1 0 1359 0\r
+r 2040 0 3274 0 2036 0\r
+r 2040 0 548 0 2041 0\r
+r 2040 0 911 0 2042 0\r
+r 2041 0 2985 0 2040 0\r
+r 2041 0 1 0 545 0 [d 1 0 0 1 4 -2\r
+r 2042 0 1 0 504 0\r
+r 2042 0 3059 0 2040 0\r
+r 2042 0 479 0 2032 33\r
+r 2042 0 487 0 2043 0\r
+r 2043 0 488 0 2042 0\r
+r 2043 0 2 0 507 0\r
+r 2043 0 3 0 3276 0\r
+r 2043 0 1039 0 2026 0\r
+r 2044 0 2033 0 2033 0\r
+r 2044 0 1 0 1359 0\r
+r 2044 0 3274 0 2040 0\r
+r 2044 0 548 0 2045 0\r
+r 2044 0 911 0 2046 0\r
+r 2045 0 2985 0 2044 0\r
+r 2045 0 1 0 545 0 [d 1 0 0 1 4 2\r
+r 2046 0 1 0 504 0\r
+r 2046 0 3059 0 2044 0\r
+r 2046 0 479 0 2032 33\r
+r 2046 0 487 0 2047 0\r
+r 2047 0 488 0 2046 0\r
+r 2047 0 2 0 507 0\r
+r 2047 0 3 0 3277 0\r
+r 2047 0 1039 0 2027 0\r
--- /dev/null
+%import "layer0.graph" L0\r
+%import "structural2.graph" ST\r
+\r
+%deflib L0.Type Sysdyn\r
+%deflib L0.Relation Sysdyn\r
+\r
+######################################################################\r
+# Defines ontology and attaches it to TypeSystemProject\r
+######################################################################\r
+\r
+Sysdyn @ "Sysdyn-1.0" : L0.Ontology\r
+ L0.PartOf L0.TypeSystemProject\r
+ L0.PartOf L0.SimanticsDomain\r
+ L0.HasNamespace "http://www.simantics.org/Sysdyn" : L0.URI\r
+ L0.HasVersion "1.0" : L0.Version\r
+ L0.HasResourceClass "org.simantics.sysdyn.SysdynResource" : L0.String\r
+ L0.HasPackageName "sysdyn" : L0.String \r
+SysdynNamespace : L0.Namespace\r
+ L0.PartOf L0.TypeSystemNamespaces\r
+ L0.HasNamespace "http://www.simantics.org/Sysdyn" : L0.URI\r
+ L0.HasNamespaceRoot Sysdyn\r
+\r
+######################################################################\r
+# Configuration\r
+######################################################################\r
+\r
+Configuration <T ST.Composite\r
+ [L0.ConsistsOf all (Variable or Dependency)]\r
+\r
+######################################################################\r
+# Variables\r
+######################################################################\r
+\r
+Variable <T ST.Component \r
+ [HasX card "1"]\r
+ [HasY card "1"]\r
+HasX <R L0.HasProperty\r
+ L0.HasRange L0.Double\r
+HasY <R L0.HasProperty\r
+ L0.HasRange L0.Double \r
+\r
+IndependentVariable <T Variable\r
+ [L0.HasName card "1"]\r
+\r
+Auxiliary <T IndependentVariable\r
+Stock <T IndependentVariable\r
+Valve <T IndependentVariable\r
+Cloud <T IndependentVariable \r
+\r
+######################################################################\r
+# Connections\r
+######################################################################\r
+\r
+HasAngle <R L0.HasProperty\r
+ L0.HasRange L0.Double\r
+IsTailOf <R ST.IsConnected\r
+ L0.HasDomain Variable\r
+ L0.HasRange Dependency\r
+ L0.InverseOf HasTail \r
+IsHeadOf <R ST.IsConnected\r
+ L0.HasDomain Variable\r
+ L0.HasRange Dependency\r
+ L0.InverseOf HasHead\r
+\r
+Dependency <T ST.Connection\r
+ [HasAngle card "1"]\r
+ [HasHead card "1"]\r
+ [HasTail card "1"]\r
+Flow <T ST.Connection\r
+ [HasHead card "1"]\r
+ [HasTail card "1"]\r
+ \r
+######################################################################\r
+# Test configuration\r
+######################################################################\r
+\r
+TestConfiguration : Configuration\r
+ L0.PartOf Sysdyn \r
+ L0.ConsistsOf\r
+ Foo : Auxiliary\r
+ HasX "200.0" : L0.Double\r
+ HasY "100.0" : L0.Double\r
+ Bar : Auxiliary\r
+ HasX "100.0" : L0.Double\r
+ HasY "200.0" : L0.Double\r
+ _ : Dependency\r
+ HasTail Foo\r
+ HasHead Bar\r
+ HasAngle "0.5" : L0.Double\r
+ \r
+ \r
+ \r
+ \r
+
\ No newline at end of file
--- /dev/null
+%import "layer0.graph" L0\r
+%import "diagram2.graph" DIA\r
+%import "g2d.graph" G2D\r
+%import "structural2.graph" ST\r
+%import "modeling.graph" MOD\r
+%import "project.graph" PROJECT\r
+%import "simulation.graph" SIMU\r
+\r
+######################################################################\r
+# Defines ontology and attaches it to TypeSystemProject\r
+######################################################################\r
+\r
+Sysdyn : L0.Ontology\r
+ L0.PartOf L0.TypeSystemProject\r
+ L0.HasNamespace "http://www.simantics.org/Sysdyn" : L0.URI\r
+ L0.HasVersion "1.0" : L0.Version\r
+ L0.HasResourceClass "org.simantics.sysdyn.ui.SysdynResource" : L0.String\r
+SysdynNamespace : L0.Namespace\r
+ L0.PartOf L0.TypeSystemNamespaces\r
+ L0.HasNamespace "http://www.simantics.org/Sysdyn" : L0.URI\r
+ L0.HasNamespaceRoot Sysdyn\r
+\r
+######################################################################\r
+# Features\r
+######################################################################\r
+\r
+SysdynModellingDomain : PROJECT.ModellingDomain\r
+ L0.PartOf Sysdyn\r
+ L0.PartOf PROJECT.PublishedProjectFeatures\r
+ PROJECT.RequiresFeature SysdynModelManager\r
+ PROJECT.RequiresNamespace "http://www.simantics.org/Sysdyn" : L0.URI\r
+\r
+SysdynModelManager : PROJECT.Feature\r
+ L0.HasLabel "Sysdyn Model Manager" : L0.String\r
+ L0.HasDescription """Sysdyn Model Manager.""" : L0.String\r
+ L0.PartOf Sysdyn\r
+ #L0.PartOf PROJECT.PublishedProjectFeatures\r
+ PROJECT.RequiresFeature MOD.ModelingProject\r
+ PROJECT.RequiresFeature PROJECT.ExperimentControl\r
+ PROJECT.IsCompatibleWithFeature MOD.ModelingProject\r
+\r
+######################################################################\r
+# Model\r
+######################################################################\r
+\r
+SysdynModel <T SIMU.Model\r
+ L0.PartOf Sysdyn\r
+\r
+######################################################################\r
+# Macros for component types\r
+######################################################################\r
+\r
+%define def()\r
+ $subject <T ST.Component\r
+ L0.PartOf Sysdyn\r
+\r
+%define connection($relation)\r
+ $subject\r
+ ST.HasParameter _ : ST.ConnectionVariable\r
+ ST.Binds $relation\r
+\r
+%define variable($relation, $default)\r
+ $subject\r
+ ST.HasParameter _ : ST.LiteralVariable\r
+ ST.Binds $relation\r
+ L0.Asserts _ : L0.Assertion\r
+ L0.HasPredicate $relation\r
+ L0.HasObject $default\r
+\r
+######################################################################\r
+# Macros for symbols\r
+######################################################################\r
+\r
+%define defSymbol($svg)\r
+ $subject <T DIA.DefinedElement\r
+ ST.IsDefinedBy %list : DIA.Composite <R L0.IsRelatedTo\r
+ _ : DIA.SVGElement\r
+ G2D.HasSVGDocument $svg : L0.String\r
+\r
+%define terminal($transform, $parent, $target)\r
+ $subject\r
+ G2D.HasTransform $transform : G2D.Transform\r
+ DIA.HasConnectionVariable _ : ST.ConnectionVariable\r
+ ST.Binds _ <R ST.IsConnected\r
+ MOD.DiagramConnectionRelationToConnectionRelation $target\r
+ ST.IsParameterOf $parent\r
+\r
+######################################################################\r
+# Component types\r
+######################################################################\r
+ \r
+HasX <R L0.HasProperty\r
+ L0.HasRange L0.Double\r
+ L0.PartOf Sysdyn\r
+HasY <R L0.HasProperty\r
+ L0.HasRange L0.Double\r
+ L0.PartOf Sysdyn\r
+ \r
+Variable\r
+ def() \r
+\r
+ # symbol\r
+\r
+ MOD.ComponentTypeToSymbol VariableElement <T DIA.Element \r
+ L0.PartOf Sysdyn\r
+ [HasX card "1"]\r
+ [HasY card "1"]\r
+ \r
+ \r
+######################################################################\r
+# Test diagram\r
+###################################################################### \r
+ \r
+TestDiagram : DIA.Diagram <R L0.IsRelatedTo\r
+ L0.PartOf Sysdyn\r
+ %list_elements\r
+ var : VariableElement\r
+ HasX "10.0" : L0.Double\r
+ HasY "10.0" : L0.Double\r
+ \r
+
\ No newline at end of file