<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<diagram program="umlet" version="14.3.0">
  <zoom_level>4</zoom_level>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1092</x>
      <y>332</y>
      <w>156</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>/AbstractReceiver/
--
--
+AbstractReceiver(Port port): ctor
+receiveAndHandlePackets(Logger logger): void
+convertMessage(byte[] data, Logger logger): Message
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1452</x>
      <y>980</y>
      <w>340</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>ElevatorActionMessage
--
--
+ElevatorActionMessage(int elevatorId, ElevatorAction action, int requestedFloor, InputEvent inputEvent, Motor motor): ctor
+ElevatorActionMessage(int elevatorId, ElevatorAction action, int requestedFloor): ctor
+getElevatorId(): int
+getAction(): ElevatorAction
+getRequestedFloor(): int
+getInputEvent(): InputEvent
+getMotorDirection(): Motor
+toString(): String
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>964</x>
      <y>272</y>
      <w>172</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ElevatorMoveMessage
--
_+NO_FLOOR_REQUESTS = -1: int_
--
+ElevatorMoveMessage(int requestFloor, int elevatorId): ctor
+getRequestFloor(): int
+getElevatorId(): int
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1196</x>
      <y>648</y>
      <w>156</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ElevatorRequestMessage
--
--
+ElevatorRequestMessage(InputEvent inputEvent): ctor
+getInputEvent(): InputEvent
+toString(): String
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>828</x>
      <y>632</y>
      <w>172</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>ElevatorSensorMessage
--
--
+ElevatorSensorMessage(int currentFloor, int elevatorId): ctor
+getCurrentFloor(): int
+getElevatorId(): int
+toString(): String
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>700</x>
      <y>948</y>
      <w>212</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>FloorArrivalMessage
--
--
+FloorArrivalMessage(int floorNumber, Direction button, int elevatorId): ctor
+getFloorNumber(): int
+getDirectionButton(): Direction
+getElevatorId(): int
+toString(): String
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1124</x>
      <y>1036</y>
      <w>280</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>InitializeMessage
--
--
+InitializeMessage(int numFloors, int numElevators, int floorMoveTime, int doorOperationDelay): ctor
+getNumFloors(): int
+getNumElevators(): int
+getFloorMoveTime(): int
+getDoorOperationDelay(): int
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1016</x>
      <y>628</y>
      <w>144</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>MessageSender
--
--
+MessageSender(): ctor
_+setAddress(Port port, InetAddress address): void_
+sendMessage(T message, Port port): void
+messageToByteArray(T message): byte[]
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>844</x>
      <y>328</y>
      <w>152</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>MessageUtil
--
_+BUFFER_SIZE = 1000: int_
--
_+byteArrayToMessage(byte[] data): Message_
_+setIPAddress(Port port, String[] args, int index): void_
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>656</x>
      <y>656</y>
      <w>168</w>
      <h>152</h>
    </coordinates>
    <panel_attributes>Elevator
--
--
+Elevator(int elevatorId, int numFloors): ctor
+getCurrentFloor(): int
+setCurrentFloor(int currentFloor): void
+addDestinationFloor(int floor, Direction direction): void
+turnElevatorButtonOn(int floor): void
+removeDestinationFloor(int floor): void
+containsDestinationFloor(Direction direction, int floor):void
+getElevatorButton(int floor): Light
+getDestinationFloors(Direction direction): List&lt;Integer&gt;
+getElevatorId(): int
+setError(ErrorType errorType, int errorFloor): void
+getErrorForFloor(int floor): ErrorType
+getMotorStatus(): Motor
+setMotorStatus(Motor motor): void
+openDoors(): void
+closeDoors(): void
+isDoorClosed(): boolean
+getDoor(): Door
+getLightsToString(): String
+getButtonsToString(): String
+removeError(int errorFloor): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>844</x>
      <y>468</y>
      <w>108</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ElevatorReceiver
--
--
+ElevatorReceiver(): ctor
+handleMessage(Message msg): void
_+main(String[] args): void_
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>560</x>
      <y>516</y>
      <w>200</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ElevatorRequestFloorQueue
--
--
+ElevatorRequestFloorQueue(int numFloors): ctor
+addRequest(int inputFloor, Direction direction, int requestFloor): void
+checkNextFloorRequest(int inputFloor, Direction direction): boolean
+getNextFloorRequest(int inputFloor, Direction direction): Set&lt;Integer&gt;
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>564</x>
      <y>568</y>
      <w>188</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ElevatorSensor
--
--
+ElevatorSensor(MessageSender messageSender): ctor
+setFloorMoveTimeMs(long time): void
+handleMovementStarted(Elevator elevator, int destFloor): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>820</x>
      <y>540</y>
      <w>160</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>ElevatorSubsystem
--
--
+ElevatorSubsystem(): ctor
+initializeSystem(InitializeMessage msg): void
+getElevatorById(int elevatorId): Elevator
+handleMessage(ElevatorActionMessage message): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1624</x>
      <y>532</y>
      <w>168</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>Floor
--
--
+Floor(int floorNumber): ctor
+handleFloorMessage(FloorArrivalMessage message): void
+handleInputEvent(InputEvent inputEvent): void
+getUp(): Light
+setUp(Light up): void
+getDown(): Light
+setDown(Light down): void
+toString(): String
+getRequestedFloorsDown(): Set&lt;Integer&gt;
+getRequestedFloorsUp(): Set&lt;Integer&gt;
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1388</x>
      <y>468</y>
      <w>108</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>FloorReceiver
--
--
+FloorReceiver(): ctor
+handleMessage(Message msg): void
_+main(String[] args): void_
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1524</x>
      <y>468</y>
      <w>156</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>FloorSubsystem
--
--
+FloorSubsystem(): ctor
+initializeSystem(InitializeMessage msg): void
+handleInputEvent(InputEvent inputEvent): void
+handleMessage(FloorArrivalMessage message): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1376</x>
      <y>644</y>
      <w>312</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>InputEvent
--
--
+InputEvent(long inputTime, int inputFloor, Direction directionButton, int carButton, ErrorType errorType, int errorFloor): ctor
+getInputTimeMs(): long
+getInputFloor(): int
+getDirectionButton(): Direction
+getCarButton(): int
+getErrorType(): ErrorType
+getErrorFloor(): int
+toString(): String
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1408</x>
      <y>600</y>
      <w>148</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>InputParser
--
--
_+setupInputs(FloorSubsystem floorSubsystem): void_
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>976</x>
      <y>956</y>
      <w>264</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ElevatorDispatchTask
--
--
+ElevatorDispatchTask(ElevatorRequestMessage elevatorRequestMessage): ctor
+ElevatorDispatchTask(ElevatorMoveMessage elevatorMoveMessage): ctor
+ElevatorDispatchTask(ElevatorMoveMessage elevatorMoveMessage, Direction reroutedDirection): ctor
+run(MessageSender messageSender): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1304</x>
      <y>840</y>
      <w>252</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>ElevatorMovedTask
--
--
+ElevatorMovedTask(ElevatorSensorMessage msg): ctor
+ElevatorMovedTask(ElevatorSensorMessage msg, boolean isForce, boolean isForceClosed): ctor
+run(MessageSender messageSender): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>836</x>
      <y>724</y>
      <w>192</w>
      <h>148</h>
    </coordinates>
    <panel_attributes>MetaElevator
--
--
+MetaElevator(int elevatorId, int currentFloor): ctor
+getMotorStatus(): Motor
+setMotorStatus(Motor motor): void
+getElevatorId(): int
+setElevatorId(int elevatorId): void
+getCurrentFloor(): int
+setCurrentFloor(int currentFloor): void
+isDoorsOpen(): boolean
+setDoorsOpen(boolean doorsOpen): void
+hasDestinations(Direction direction): boolean
+hasDestinations(): boolean
+addDestinationFloor(int destinationFloor, Direction direction): void
+getNextDestination(): int
+getNextDestination(int defaultFloor): int
+getNextDestination(Direction direction): int
+getDestinations(Direction direction): List&lt;Integer&gt;
+getLastDestination(Direction direction): Integer
+getTotalNumberOfDestinations(): int
+cancelTimer(): void
+startTimer(): void
+getDestinationsForReroute(): Map&lt;Integer, Direction&gt;
+getLastDestination(): Integer
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1076</x>
      <y>756</y>
      <w>212</w>
      <h>96</h>
    </coordinates>
    <panel_attributes>Scheduler
--
--
_+getInstance(): Scheduler_
+getElevatorForRequest(int requestFloor, Direction direction): MetaElevator
+initializeSubsystems(): void
+updateMetaElevatorPosition(ElevatorSensorMessage msg): void
+removeElevator(MetaElevator elevator): void
+addTask(SchedulerTask task): void
+run(): void
+getIdleElevator(): MetaElevator
+handleElevatorDoorError(ElevatorErrorOccuredMessage msg): void
+handleForcedDoorsActionConfirmed(ForceActionConfirmedMessage msg): void
_+getMetaElevatorById(int elevatorId): MetaElevator_
_+getFloorDelayTime(): long_
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1128</x>
      <y>544</y>
      <w>108</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>SchedulerReceiver
--
--
+SchedulerReceiver(): ctor
+handleMessage(Message msg): void
_+main(String[] args): void_
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1056</x>
      <y>876</y>
      <w>56</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>&lt;&lt;interface&gt;&gt;
SchedulerTask
--
--
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>692</x>
      <y>832</y>
      <w>120</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>&lt;&lt;enumeration&gt;&gt;
Motor
--
UP
DOWN
STOPPED
--
_+mapMotor(Direction direction): Motor_</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1708</x>
      <y>660</y>
      <w>120</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>&lt;&lt;enumeration&gt;&gt;
Direction
--
UP
DOWN
--
_+getDirection(String inputStr): Direction_
_+mapDirection(Motor motor): DIrection_</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1184</x>
      <y>460</y>
      <w>72</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>&lt;&lt;enumeration&gt;&gt;
Port
--
FLOOR
ELEVATOR
SCHEDULER
--
+getPortNumber(): int</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>948</x>
      <y>372</y>
      <w>160</w>
      <h>120</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>380.0;10.0;380.0;280.0;10.0;280.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1172</x>
      <y>372</y>
      <w>12</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;430.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1244</x>
      <y>352</y>
      <w>200</w>
      <h>124</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;480.0;10.0;480.0;290.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>796</x>
      <y>584</y>
      <w>36</w>
      <h>80</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>70.0;10.0;70.0;120.0;10.0;120.0;10.0;180.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>748</x>
      <y>568</y>
      <w>80</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>180.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>756</x>
      <y>540</y>
      <w>72</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>160.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>888</x>
      <y>508</y>
      <w>12</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;80.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1172</x>
      <y>584</y>
      <w>12</w>
      <h>180</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;430.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1080</x>
      <y>900</y>
      <w>12</w>
      <h>64</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;140.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1108</x>
      <y>872</y>
      <w>240</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;.</panel_attributes>
    <additional_attributes>10.0;50.0;580.0;50.0;580.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1088</x>
      <y>848</y>
      <w>12</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1024</x>
      <y>788</y>
      <w>60</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>130.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1492</x>
      <y>488</y>
      <w>40</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;80.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1636</x>
      <y>512</y>
      <w>12</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1472</x>
      <y>508</y>
      <w>12</w>
      <h>100</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;230.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1532</x>
      <y>512</y>
      <w>12</w>
      <h>96</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;220.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>880</x>
      <y>368</y>
      <w>12</w>
      <h>108</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;250.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>908</x>
      <y>368</y>
      <w>268</w>
      <h>184</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;90.0;650.0;90.0;650.0;440.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>944</x>
      <y>368</y>
      <w>472</w>
      <h>108</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;170.0;1160.0;170.0;1160.0;250.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>992</x>
      <y>344</y>
      <w>108</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;250.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1492</x>
      <y>624</y>
      <w>12</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>964</x>
      <y>584</y>
      <w>424</w>
      <h>68</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;60.0;1040.0;60.0;1040.0;150.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1556</x>
      <y>704</y>
      <w>12</w>
      <h>284</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;690.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1348</x>
      <y>668</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;70.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1560</x>
      <y>512</y>
      <w>12</w>
      <h>140</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;330.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1628</x>
      <y>620</y>
      <w>12</w>
      <h>32</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;60.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1236</x>
      <y>708</y>
      <w>340</w>
      <h>260</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;630.0;830.0;630.0;830.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>932</x>
      <y>368</y>
      <w>148</w>
      <h>268</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>350.0;650.0;350.0;120.0;10.0;120.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>748</x>
      <y>596</y>
      <w>280</w>
      <h>40</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;680.0;10.0;680.0;80.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>936</x>
      <y>584</y>
      <w>108</w>
      <h>52</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0;250.0;70.0;250.0;110.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1156</x>
      <y>512</y>
      <w>380</w>
      <h>132</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>930.0;10.0;930.0;80.0;240.0;80.0;240.0;310.0;10.0;310.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1036</x>
      <y>672</y>
      <w>12</w>
      <h>292</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;710.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1144</x>
      <y>672</y>
      <w>256</w>
      <h>176</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>620.0;420.0;620.0;110.0;10.0;110.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1104</x>
      <y>672</y>
      <w>12</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;210.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1060</x>
      <y>672</y>
      <w>12</w>
      <h>212</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;510.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1216</x>
      <y>504</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;100.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1252</x>
      <y>488</y>
      <w>144</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>340.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>948</x>
      <y>488</y>
      <w>244</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;590.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>972</x>
      <y>368</y>
      <w>220</w>
      <h>108</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;250.0;530.0;250.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1192</x>
      <y>372</y>
      <w>12</w>
      <h>96</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;220.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1040</x>
      <y>500</y>
      <w>152</w>
      <h>136</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;320.0;10.0;10.0;360.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>780</x>
      <y>804</y>
      <w>12</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>808</x>
      <y>844</y>
      <w>36</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>70.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1724</x>
      <y>620</y>
      <w>12</w>
      <h>48</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;100.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1684</x>
      <y>692</y>
      <w>32</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;60.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1280</x>
      <y>512</y>
      <w>272</w>
      <h>144</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>660.0;10.0;660.0;150.0;10.0;150.0;10.0;340.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1204</x>
      <y>584</y>
      <w>12</w>
      <h>72</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;160.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>984</x>
      <y>564</y>
      <w>152</w>
      <h>76</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>360.0;10.0;10.0;10.0;10.0;170.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>736</x>
      <y>608</y>
      <w>100</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0;230.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>976</x>
      <y>312</y>
      <w>48</w>
      <h>252</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;610.0;100.0;610.0;100.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1048</x>
      <y>312</y>
      <w>88</w>
      <h>252</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>200.0;610.0;10.0;610.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>528</x>
      <y>484</y>
      <w>932</w>
      <h>540</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>790.0;10.0;10.0;10.0;10.0;1330.0;1690.0;1330.0;2310.0;1330.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1236</x>
      <y>984</y>
      <w>224</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;540.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>908</x>
      <y>972</y>
      <w>76</w>
      <h>12</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>170.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>544</x>
      <y>500</y>
      <w>308</w>
      <h>484</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>750.0;10.0;10.0;10.0;10.0;1190.0;390.0;1190.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1248</x>
      <y>848</y>
      <w>12</w>
      <h>196</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;470.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>504</x>
      <y>472</y>
      <w>628</w>
      <h>604</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>850.0;10.0;10.0;10.0;10.0;1490.0;1550.0;1490.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1400</x>
      <y>436</y>
      <w>440</w>
      <h>636</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>160.0;80.0;160.0;10.0;1080.0;10.0;1080.0;1570.0;10.0;1570.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>568</x>
      <y>832</y>
      <w>116</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>&lt;&lt;enumeration&gt;&gt;
ErrorType
--
STUCK_OPEN
STUCK_OPEN
STUCK_MOTOR
--
+getValue(): int
_+getErrorForValue(int value): ErrorType_</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>620</x>
      <y>404</y>
      <w>224</w>
      <h>56</h>
    </coordinates>
    <panel_attributes>ElevatorErrorOccuredMessage
--
--
+ElevatorErrorOccuredMessage(ErrorType errorType, int errorFloor, int elevatorId): ctor
+getErrorType(): ErrorType
+getErrorFloor(): int
+getElevatorId(): int
+toString(): String
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>852</x>
      <y>888</y>
      <w>144</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>ElevatorTimerTask
--
--
+ElevatorTimerTask(MetaElevator metaElevator): ctor
+run(): void
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>668</x>
      <y>804</y>
      <w>12</w>
      <h>36</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>620</x>
      <y>708</y>
      <w>992</w>
      <h>240</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>2460.0;10.0;2460.0;580.0;10.0;580.0;10.0;450.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>824</x>
      <y>456</y>
      <w>12</w>
      <h>92</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;210.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>840</x>
      <y>440</y>
      <w>300</w>
      <h>112</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>730.0;260.0;730.0;10.0;10.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>636</x>
      <y>612</y>
      <w>780</w>
      <h>328</h>
    </coordinates>
    <panel_attributes>lt=&lt;..</panel_attributes>
    <additional_attributes>1930.0;10.0;1820.0;10.0;1820.0;230.0;1660.0;230.0;1660.0;800.0;10.0;800.0;10.0;690.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>912</x>
      <y>868</y>
      <w>12</w>
      <h>28</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;10.0;10.0;50.0</additional_attributes>
  </element>
  <element>
    <id>UMLClass</id>
    <coordinates>
      <x>1220</x>
      <y>380</y>
      <w>192</w>
      <h>44</h>
    </coordinates>
    <panel_attributes>ForceActionConfirmedMessage
--
--
+ForceActionConfirmedMessage(int elevatorId, ElevatorAction action): ctor
+getElevatorId(): int
+getAction(): ElevatorAction
--
</panel_attributes>
    <additional_attributes/>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>964</x>
      <y>420</y>
      <w>276</w>
      <h>128</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;300.0;10.0;10.0;670.0;10.0</additional_attributes>
  </element>
  <element>
    <id>Relation</id>
    <coordinates>
      <x>1232</x>
      <y>420</y>
      <w>84</w>
      <h>152</h>
    </coordinates>
    <panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes>
    <additional_attributes>10.0;360.0;190.0;360.0;190.0;10.0</additional_attributes>
  </element>
</diagram>
