<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
  -->
<diagram program="umlet" version="12.0">
  <zoom_level>10</zoom_level>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>250</x>
      <y>180</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=yellow</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>210</x>
      <y>110</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=yellow</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>160</x>
      <y>40</y>
      <w>80</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>60;70;30;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>130</x>
      <y>110</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=green</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>170</x>
      <y>40</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=yellow</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>50</x>
      <y>110</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=green</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>90</x>
      <y>40</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=green</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>0</x>
      <y>110</y>
      <w>80</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
</panel_attributes>
    <additional_attributes>30;70;60;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>200</x>
      <y>110</y>
      <w>80</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>60;70;30;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>10</x>
      <y>180</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=green</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>40</x>
      <y>110</y>
      <w>80</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>60;70;30;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>50</x>
      <y>40</y>
      <w>150</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
</panel_attributes>
    <additional_attributes>30;70;130;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>40</x>
      <y>40</y>
      <w>80</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-
</panel_attributes>
    <additional_attributes>30;70;60;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Relation</type>
    <coordinates>
      <x>80</x>
      <y>40</y>
      <w>80</w>
      <h>90</h>
    </coordinates>
    <panel_attributes>lt=&lt;-</panel_attributes>
    <additional_attributes>60;70;30;30</additional_attributes>
  </element>
  <element>
    <type>com.umlet.element.Class</type>
    <coordinates>
      <x>90</x>
      <y>180</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>bg=green</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.custom.Text</type>
    <coordinates>
      <x>170</x>
      <y>10</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>r2</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <type>com.umlet.element.custom.Text</type>
    <coordinates>
      <x>90</x>
      <y>10</y>
      <w>30</w>
      <h>30</h>
    </coordinates>
    <panel_attributes>r1</panel_attributes>
    <additional_attributes/>
  </element>
</diagram>
