SmartHouse
House
name
eprice
time
outtemp
room
member
wh
ev
gate
sec
Gate
outlocked
house
Security
on
house
Person
name
WaterHeater
temp
on
boost
house
EV
name
pluged
level
charging
house
Room
temp
bright
air
name
house
window
heating
light
ac
occupied
sensor
projector
cooker
wm
cm
Heating
name
level
Window
name
curtainOn
opened
AirConditioner
level
freshAir
room
Light
level
Projector
on
brightness
volume
room
WashingMachine
loaded
on
room
Sensor
temp
air
brightness
battery
circle
Cooker
on
CoffeeMaker
loaded
on
warming
room
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="SmartHouse" nsURI="http://dsg.cs.tcd.ie/smarthouse" nsPrefix="SmartHouse">
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
  </eAnnotations>
  <eClassifiers xsi:type="ecore:EClass" name="House">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="TooExpensiveToUseThemTogether SuperExpensiveNotUseAnything WatchDog NoWindowOpenWhenSecOn User__VeryNotSafe"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="TooExpensiveToUseThemTogether" value="eprice > 15 implies ev->forAll(e : EV | e.charging = false) or not wh.on or room.heating->flatten()->forAll(e : Heating | e.level &lt; 3)"/>
      <details key="SuperExpensiveNotUseAnything" value="eprice > 20 implies ev->forAll(e : EV | e.charging = false) and not wh.on and room.heating->flatten()->forAll(e : Heating | e.level = 0)"/>
      <details key="WatchDog" value="gate.outlocked implies sec.on"/>
      <details key="NoWindowOpenWhenSecOn" value="sec.on implies room->select(e : Room | e.name = 'liv').window->flatten()->forAll(e : Window | e.opened = false)"/>
      <details key="User__VeryNotSafe" value="gate.outlocked implies sec.on = true"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="eprice" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="time" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="outtemp" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="room" ordered="false" upperBound="-1"
        eType="#//Room" containment="true" eOpposite="#//Room/house"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
        upperBound="-1" eType="#//Person" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="wh" ordered="false" eType="#//WaterHeater"
        containment="true" eOpposite="#//WaterHeater/house"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ev" ordered="false" upperBound="-1"
        eType="#//EV" containment="true" eOpposite="#//EV/house"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="gate" ordered="false" eType="#//Gate"
        containment="true" eOpposite="#//Gate/house"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="sec" ordered="false" eType="#//Security"
        containment="true" eOpposite="#//Security/house"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Gate">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="outlocked" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="house" ordered="false"
        lowerBound="1" eType="#//House" eOpposite="#//House/gate"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Security">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="on" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="house" ordered="false"
        lowerBound="1" eType="#//House" eOpposite="#//House/sec"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Person">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="WaterHeater">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="DoNotHeatItForever ColdWaterNeedHeating INeedHotWaterInTheMorning User__HotWaterAlways"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="DoNotHeatItForever" value="temp &lt; 50 or not on"/>
      <details key="ColdWaterNeedHeating" value="temp &lt; 30 implies on"/>
      <details key="INeedHotWaterInTheMorning" value="house.time &lt; 2 or house.time > 8 or on"/>
      <details key="User__HotWaterAlways" value="temp &lt; 30 and (house.time &lt; 2 or house.time > 8) implies on = true"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="temp" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="on" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="boost" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="house" ordered="false"
        lowerBound="1" eType="#//House" eOpposite="#//House/wh"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EV">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="LowLeveNeedCharge LowPricePleaseCharge"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="LowLeveNeedCharge" value="if pluged then level &lt; 30 implies charging else true endif"/>
      <details key="LowPricePleaseCharge" value="if pluged then house.eprice &lt; 10 implies charging else true endif"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pluged" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="level" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="charging" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="house" ordered="false"
        lowerBound="1" eType="#//House" eOpposite="#//House/ev"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Room">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="TooColdNeedHeating ExtremelyColdNeedMoreHeating NoWindowOpenWhenHeating NoWindowOpenWhenHeating NoHeatingAndCoolingTogether TooLateNoShouting ProjectingInDarkness INeedFreshAir TooColdToOpenWindow User__AlwaysOpenWindow User__AlwaysTurnOnFirstHeating User__ILoveCurtains"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="TooColdNeedHeating" value="temp &lt; 18 implies heating->exists(e : Heating | e.level > 0)"/>
      <details key="ExtremelyColdNeedMoreHeating" value="temp &lt; 10 implies heating.level->sum() > 3 * heating->size()"/>
      <details key="NoWindowOpenWhenHeating" value="window->forAll(e : Window | e.opened = false) or ac->forAll(e : AirConditioner | e.level = 0)"/>
      <details key="NoHeatingAndCoolingTogether" value="heating->forAll(e : Heating | e.level = 0) or ac->forAll(e : AirConditioner | e.level = 0)"/>
      <details key="TooLateNoShouting" value="house.time > 22 implies projector.volume &lt; 4"/>
      <details key="ProjectingInDarkness" value="projector.on and bright > 500 implies light->forAll(e : Light | e.level = 0) and window->forAll(e : Window | e.curtainOn)"/>
      <details key="INeedFreshAir" value="air > 5 implies window->exists(e : Window | e.opened)"/>
      <details key="TooColdToOpenWindow" value="house.outtemp > 5 or window->forAll(e : Window | not e.opened)"/>
      <details key="User__AlwaysOpenWindow" value="air > 6 and house.outtemp >= 10 implies window->asSequence()->first().opened = true"/>
      <details key="User__AlwaysTurnOnFirstHeating" value="temp &lt; 10 and house.eprice &lt; 20 implies heating->asSequence()->first().level = 10"/>
      <details key="User__ILoveCurtains" value="projector.on implies window->asSequence()->first().curtainOn = true"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="temp" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bright" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="air" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="house" ordered="false"
        eType="#//House" eOpposite="#//House/room"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="window" ordered="false"
        upperBound="-1" eType="#//Window" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="heating" ordered="false"
        upperBound="-1" eType="#//Heating" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="light" ordered="false"
        upperBound="-1" eType="#//Light" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ac" ordered="false" upperBound="-1"
        eType="#//AirConditioner" containment="true" eOpposite="#//AirConditioner/room"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="occupied" ordered="false"
        upperBound="-1" eType="#//Person"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="sensor" ordered="false"
        upperBound="-1" eType="#//Sensor" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="projector" ordered="false"
        lowerBound="1" eType="#//Projector" containment="true" eOpposite="#//Projector/room"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="cooker" ordered="false"
        eType="#//Cooker" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="wm" ordered="false" eType="#//WashingMachine"
        containment="true" eOpposite="#//WashingMachine/room"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="cm" ordered="false" eType="#//CoffeeMaker"
        containment="true" eOpposite="#//CoffeeMaker/room"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Heating">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="level" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt">
      <eAnnotations source="config">
        <details key="domain" value="0..10"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Window">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" iD="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="curtainOn" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="opened" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="AirConditioner">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="TooHotOpenAC CodeNoAC HotOutside User__HotOutside"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="TooHotOpenAC" value="room.temp > 28 implies level > 5"/>
      <details key="CodeNoAC" value="room.temp &lt; 23 implies level = 0"/>
      <details key="HotOutside" value="room.house.outtemp > 30 implies level > 5"/>
      <details key="User__HotOutside" value="level > 0 implies level = 9"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="level" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
      <eAnnotations source="config">
        <details key="domain" value="0..10"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="freshAir" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="room" ordered="false" lowerBound="1"
        eType="#//Room" eOpposite="#//Room/ac"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Light">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="User__LightWideOpen"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="User__LightWideOpen" value="level &lt;> 0 implies level = 5"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="level" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
      <eAnnotations source="config">
        <details key="domain" value="0..10"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Projector">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="TooNoisyToWatchTVWhenWashing"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="TooNoisyToWatchTVWhenWashing" value="if room.wm &lt;> null then not room.wm.on or not on else true endif"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="on" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="brightness" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
      <eAnnotations source="config">
        <details key="domain" value="0..10"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="volume" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger">
      <eAnnotations source="config">
        <details key="domain" value="0..10"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="room" ordered="false" lowerBound="1"
        eType="#//Room" eOpposite="#//Room/projector"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="WashingMachine">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="OnWhenLoaded User__WashImmediately"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="OnWhenLoaded" value="loaded implies on"/>
      <details key="User__WashImmediately" value="loaded implies on = true"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="loaded" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="on" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="room" ordered="false" lowerBound="1"
        eType="#//Room" eOpposite="#//Room/wm"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Sensor">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="RunningOutOfPower"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="RunningOutOfPower" value="battery &lt; 20 implies circle &lt; 30"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="temp" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="air" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="brightness" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="battery" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="circle" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal">
      <eAnnotations source="config">
        <details key="domain" value="0..10"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Cooker">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="on" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="CoffeeMaker">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="constraints" value="MakeCoffeeForMeInTheMorning NoCarNoCoffee KeepItWarm KeepItWarm User__IWantWarmed"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
      <details key="MakeCoffeeForMeInTheMorning" value="room.house.time = 7 and loaded implies on"/>
      <details key="NoCarNoCoffee" value="room.house.ev->exists(e : EV | e.pluged) or on"/>
      <details key="KeepItWarm" value="room.temp > 20 implies not warming"/>
      <details key="User__IWantWarmed" value="loaded implies warming = true"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="loaded" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="on" ordered="false" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="warming" ordered="false"
        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eAnnotations source="config"/>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="room" ordered="false" lowerBound="1"
        eType="#//Room" eOpposite="#//Room/cm"/>
  </eClassifiers>
</ecore:EPackage>

{"directed":true,"nodes":[{"nsPrefix":"SmartHouse","nsURI":"http://dsg.cs.tcd.ie/smarthouse","name":"SmartHouse","id":0,"eClass":"EPackage"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"House","instanceClass":null,"abstract":false,"id":1,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Gate","instanceClass":null,"abstract":false,"id":2,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Security","instanceClass":null,"abstract":false,"id":3,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Person","instanceClass":null,"abstract":false,"id":4,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"WaterHeater","instanceClass":null,"abstract":false,"id":5,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"EV","instanceClass":null,"abstract":false,"id":6,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Room","instanceClass":null,"abstract":false,"id":7,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Heating","instanceClass":null,"abstract":false,"id":8,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Window","instanceClass":null,"abstract":false,"id":9,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"AirConditioner","instanceClass":null,"abstract":false,"id":10,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Light","instanceClass":null,"abstract":false,"id":11,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Projector","instanceClass":null,"abstract":false,"id":12,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"WashingMachine","instanceClass":null,"abstract":false,"id":13,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Sensor","instanceClass":null,"abstract":false,"id":14,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Cooker","instanceClass":null,"abstract":false,"id":15,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CoffeeMaker","instanceClass":null,"abstract":false,"id":16,"interface":false,"eClass":"EClass"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":17,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"eprice","changeable":true,"lowerBound":1,"iD":false,"id":18,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"time","changeable":true,"lowerBound":1,"iD":false,"id":19,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"outtemp","changeable":true,"lowerBound":1,"iD":false,"id":20,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"room","changeable":true,"resolveProxies":true,"lowerBound":0,"id":21,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"member","changeable":true,"resolveProxies":true,"lowerBound":0,"id":22,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"wh","changeable":true,"resolveProxies":true,"lowerBound":0,"id":23,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"ev","changeable":true,"resolveProxies":true,"lowerBound":0,"id":24,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"gate","changeable":true,"resolveProxies":true,"lowerBound":0,"id":25,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"sec","changeable":true,"resolveProxies":true,"lowerBound":0,"id":26,"derived":false},{"id":27,"eClass":"EGenericType"},{"id":28,"eClass":"EGenericType"},{"id":29,"eClass":"EGenericType"},{"id":30,"eClass":"EGenericType"},{"id":31,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"house","changeable":true,"resolveProxies":true,"lowerBound":0,"id":32,"derived":false},{"id":33,"eClass":"EGenericType"},{"id":34,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"house","changeable":true,"resolveProxies":true,"lowerBound":1,"id":35,"derived":false},{"id":36,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"house","changeable":true,"resolveProxies":true,"lowerBound":1,"id":37,"derived":false},{"id":38,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"house","changeable":true,"resolveProxies":true,"lowerBound":1,"id":39,"derived":false},{"id":40,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"house","changeable":true,"resolveProxies":true,"lowerBound":1,"id":41,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"outlocked","changeable":true,"lowerBound":1,"iD":false,"id":42,"derived":false},{"id":43,"eClass":"EGenericType"},{"id":44,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"on","changeable":true,"lowerBound":1,"iD":false,"id":45,"derived":false},{"id":46,"eClass":"EGenericType"},{"id":47,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":48,"derived":false},{"id":49,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"temp","changeable":true,"lowerBound":1,"iD":false,"id":50,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"on","changeable":true,"lowerBound":1,"iD":false,"id":51,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"boost","changeable":true,"lowerBound":1,"iD":false,"id":52,"derived":false},{"id":53,"eClass":"EGenericType"},{"id":54,"eClass":"EGenericType"},{"id":55,"eClass":"EGenericType"},{"id":56,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":57,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"pluged","changeable":true,"lowerBound":1,"iD":false,"id":58,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"level","changeable":true,"lowerBound":1,"iD":false,"id":59,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"charging","changeable":true,"lowerBound":1,"iD":false,"id":60,"derived":false},{"id":61,"eClass":"EGenericType"},{"id":62,"eClass":"EGenericType"},{"id":63,"eClass":"EGenericType"},{"id":64,"eClass":"EGenericType"},{"id":65,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"temp","changeable":true,"lowerBound":1,"iD":false,"id":66,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"bright","changeable":true,"lowerBound":1,"iD":false,"id":67,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"air","changeable":true,"lowerBound":1,"iD":false,"id":68,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":69,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"window","changeable":true,"resolveProxies":true,"lowerBound":0,"id":70,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"heating","changeable":true,"resolveProxies":true,"lowerBound":0,"id":71,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"light","changeable":true,"resolveProxies":true,"lowerBound":0,"id":72,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"ac","changeable":true,"resolveProxies":true,"lowerBound":0,"id":73,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"occupied","changeable":true,"resolveProxies":true,"lowerBound":0,"id":74,"derived":false},{"container":false,"ordered":false,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"sensor","changeable":true,"resolveProxies":true,"lowerBound":0,"id":75,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"projector","changeable":true,"resolveProxies":true,"lowerBound":1,"id":76,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"cooker","changeable":true,"resolveProxies":true,"lowerBound":0,"id":77,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"wm","changeable":true,"resolveProxies":true,"lowerBound":0,"id":78,"derived":false},{"container":false,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"cm","changeable":true,"resolveProxies":true,"lowerBound":0,"id":79,"derived":false},{"id":80,"eClass":"EGenericType"},{"id":81,"eClass":"EGenericType"},{"id":82,"eClass":"EGenericType"},{"id":83,"eClass":"EGenericType"},{"id":84,"eClass":"EGenericType"},{"id":85,"eClass":"EGenericType"},{"id":86,"eClass":"EGenericType"},{"id":87,"eClass":"EGenericType"},{"id":88,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"room","changeable":true,"resolveProxies":true,"lowerBound":1,"id":89,"derived":false},{"id":90,"eClass":"EGenericType"},{"id":91,"eClass":"EGenericType"},{"id":92,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"room","changeable":true,"resolveProxies":true,"lowerBound":1,"id":93,"derived":false},{"id":94,"eClass":"EGenericType"},{"id":95,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"room","changeable":true,"resolveProxies":true,"lowerBound":1,"id":96,"derived":false},{"id":97,"eClass":"EGenericType"},{"container":true,"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"room","changeable":true,"resolveProxies":true,"lowerBound":1,"id":98,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":99,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"level","changeable":true,"lowerBound":1,"iD":false,"id":100,"derived":false},{"id":101,"eClass":"EGenericType"},{"id":102,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"name","changeable":true,"lowerBound":1,"iD":true,"id":103,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"curtainOn","changeable":true,"lowerBound":1,"iD":false,"id":104,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"opened","changeable":true,"lowerBound":1,"iD":false,"id":105,"derived":false},{"id":106,"eClass":"EGenericType"},{"id":107,"eClass":"EGenericType"},{"id":108,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"level","changeable":true,"lowerBound":1,"iD":false,"id":109,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"freshAir","changeable":true,"lowerBound":1,"iD":false,"id":110,"derived":false},{"id":111,"eClass":"EGenericType"},{"id":112,"eClass":"EGenericType"},{"id":113,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"level","changeable":true,"lowerBound":1,"iD":false,"id":114,"derived":false},{"id":115,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"on","changeable":true,"lowerBound":1,"iD":false,"id":116,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"brightness","changeable":true,"lowerBound":1,"iD":false,"id":117,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"volume","changeable":true,"lowerBound":1,"iD":false,"id":118,"derived":false},{"id":119,"eClass":"EGenericType"},{"id":120,"eClass":"EGenericType"},{"id":121,"eClass":"EGenericType"},{"id":122,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"loaded","changeable":true,"lowerBound":1,"iD":false,"id":123,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"on","changeable":true,"lowerBound":1,"iD":false,"id":124,"derived":false},{"id":125,"eClass":"EGenericType"},{"id":126,"eClass":"EGenericType"},{"id":127,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"temp","changeable":true,"lowerBound":1,"iD":false,"id":128,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"air","changeable":true,"lowerBound":1,"iD":false,"id":129,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"brightness","changeable":true,"lowerBound":1,"iD":false,"id":130,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"battery","changeable":true,"lowerBound":1,"iD":false,"id":131,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"circle","changeable":true,"lowerBound":1,"iD":false,"id":132,"derived":false},{"id":133,"eClass":"EGenericType"},{"id":134,"eClass":"EGenericType"},{"id":135,"eClass":"EGenericType"},{"id":136,"eClass":"EGenericType"},{"id":137,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"on","changeable":true,"lowerBound":1,"iD":false,"id":138,"derived":false},{"id":139,"eClass":"EGenericType"},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"loaded","changeable":true,"lowerBound":1,"iD":false,"id":140,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"on","changeable":true,"lowerBound":1,"iD":false,"id":141,"derived":false},{"ordered":false,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"warming","changeable":true,"lowerBound":1,"iD":false,"id":142,"derived":false},{"id":143,"eClass":"EGenericType"},{"id":144,"eClass":"EGenericType"},{"id":145,"eClass":"EGenericType"},{"id":146,"eClass":"EGenericType"}],"links":[{"source":0,"target":1},{"source":0,"target":2},{"source":0,"target":3},{"source":0,"target":4},{"source":0,"target":5},{"source":0,"target":6},{"source":0,"target":7},{"source":0,"target":8},{"source":0,"target":9},{"source":0,"target":10},{"source":0,"target":11},{"source":0,"target":12},{"source":0,"target":13},{"source":0,"target":14},{"source":0,"target":15},{"source":0,"target":16},{"source":1,"target":0},{"source":1,"target":17},{"source":1,"target":18},{"source":1,"target":19},{"source":1,"target":20},{"source":1,"target":21},{"source":1,"target":22},{"source":1,"target":23},{"source":1,"target":24},{"source":1,"target":25},{"source":1,"target":26},{"source":17,"target":27},{"source":17,"target":1},{"source":18,"target":28},{"source":18,"target":1},{"source":19,"target":29},{"source":19,"target":1},{"source":20,"target":30},{"source":20,"target":1},{"source":21,"target":7},{"source":21,"target":31},{"source":21,"target":1},{"source":21,"target":32},{"source":31,"target":7},{"source":22,"target":4},{"source":22,"target":33},{"source":22,"target":1},{"source":33,"target":4},{"source":23,"target":5},{"source":23,"target":34},{"source":23,"target":1},{"source":23,"target":35},{"source":34,"target":5},{"source":24,"target":6},{"source":24,"target":36},{"source":24,"target":1},{"source":24,"target":37},{"source":36,"target":6},{"source":25,"target":2},{"source":25,"target":38},{"source":25,"target":1},{"source":25,"target":39},{"source":38,"target":2},{"source":26,"target":3},{"source":26,"target":40},{"source":26,"target":1},{"source":26,"target":41},{"source":40,"target":3},{"source":2,"target":0},{"source":2,"target":42},{"source":2,"target":39},{"source":42,"target":43},{"source":42,"target":2},{"source":39,"target":1},{"source":39,"target":44},{"source":39,"target":2},{"source":39,"target":25},{"source":44,"target":1},{"source":3,"target":0},{"source":3,"target":45},{"source":3,"target":41},{"source":45,"target":46},{"source":45,"target":3},{"source":41,"target":1},{"source":41,"target":47},{"source":41,"target":3},{"source":41,"target":26},{"source":47,"target":1},{"source":4,"target":0},{"source":4,"target":48},{"source":48,"target":49},{"source":48,"target":4},{"source":5,"target":0},{"source":5,"target":50},{"source":5,"target":51},{"source":5,"target":52},{"source":5,"target":35},{"source":50,"target":53},{"source":50,"target":5},{"source":51,"target":54},{"source":51,"target":5},{"source":52,"target":55},{"source":52,"target":5},{"source":35,"target":1},{"source":35,"target":56},{"source":35,"target":5},{"source":35,"target":23},{"source":56,"target":1},{"source":6,"target":0},{"source":6,"target":57},{"source":6,"target":58},{"source":6,"target":59},{"source":6,"target":60},{"source":6,"target":37},{"source":57,"target":61},{"source":57,"target":6},{"source":58,"target":62},{"source":58,"target":6},{"source":59,"target":63},{"source":59,"target":6},{"source":60,"target":64},{"source":60,"target":6},{"source":37,"target":1},{"source":37,"target":65},{"source":37,"target":6},{"source":37,"target":24},{"source":65,"target":1},{"source":7,"target":0},{"source":7,"target":66},{"source":7,"target":67},{"source":7,"target":68},{"source":7,"target":69},{"source":7,"target":32},{"source":7,"target":70},{"source":7,"target":71},{"source":7,"target":72},{"source":7,"target":73},{"source":7,"target":74},{"source":7,"target":75},{"source":7,"target":76},{"source":7,"target":77},{"source":7,"target":78},{"source":7,"target":79},{"source":66,"target":80},{"source":66,"target":7},{"source":67,"target":81},{"source":67,"target":7},{"source":68,"target":82},{"source":68,"target":7},{"source":69,"target":83},{"source":69,"target":7},{"source":32,"target":1},{"source":32,"target":84},{"source":32,"target":7},{"source":32,"target":21},{"source":84,"target":1},{"source":70,"target":9},{"source":70,"target":85},{"source":70,"target":7},{"source":85,"target":9},{"source":71,"target":8},{"source":71,"target":86},{"source":71,"target":7},{"source":86,"target":8},{"source":72,"target":11},{"source":72,"target":87},{"source":72,"target":7},{"source":87,"target":11},{"source":73,"target":10},{"source":73,"target":88},{"source":73,"target":7},{"source":73,"target":89},{"source":88,"target":10},{"source":74,"target":4},{"source":74,"target":90},{"source":74,"target":7},{"source":90,"target":4},{"source":75,"target":14},{"source":75,"target":91},{"source":75,"target":7},{"source":91,"target":14},{"source":76,"target":12},{"source":76,"target":92},{"source":76,"target":7},{"source":76,"target":93},{"source":92,"target":12},{"source":77,"target":15},{"source":77,"target":94},{"source":77,"target":7},{"source":94,"target":15},{"source":78,"target":13},{"source":78,"target":95},{"source":78,"target":7},{"source":78,"target":96},{"source":95,"target":13},{"source":79,"target":16},{"source":79,"target":97},{"source":79,"target":7},{"source":79,"target":98},{"source":97,"target":16},{"source":8,"target":0},{"source":8,"target":99},{"source":8,"target":100},{"source":99,"target":101},{"source":99,"target":8},{"source":100,"target":102},{"source":100,"target":8},{"source":9,"target":0},{"source":9,"target":103},{"source":9,"target":104},{"source":9,"target":105},{"source":103,"target":106},{"source":103,"target":9},{"source":104,"target":107},{"source":104,"target":9},{"source":105,"target":108},{"source":105,"target":9},{"source":10,"target":0},{"source":10,"target":109},{"source":10,"target":110},{"source":10,"target":89},{"source":109,"target":111},{"source":109,"target":10},{"source":110,"target":112},{"source":110,"target":10},{"source":89,"target":7},{"source":89,"target":113},{"source":89,"target":10},{"source":89,"target":73},{"source":113,"target":7},{"source":11,"target":0},{"source":11,"target":114},{"source":114,"target":115},{"source":114,"target":11},{"source":12,"target":0},{"source":12,"target":116},{"source":12,"target":117},{"source":12,"target":118},{"source":12,"target":93},{"source":116,"target":119},{"source":116,"target":12},{"source":117,"target":120},{"source":117,"target":12},{"source":118,"target":121},{"source":118,"target":12},{"source":93,"target":7},{"source":93,"target":122},{"source":93,"target":12},{"source":93,"target":76},{"source":122,"target":7},{"source":13,"target":0},{"source":13,"target":123},{"source":13,"target":124},{"source":13,"target":96},{"source":123,"target":125},{"source":123,"target":13},{"source":124,"target":126},{"source":124,"target":13},{"source":96,"target":7},{"source":96,"target":127},{"source":96,"target":13},{"source":96,"target":78},{"source":127,"target":7},{"source":14,"target":0},{"source":14,"target":128},{"source":14,"target":129},{"source":14,"target":130},{"source":14,"target":131},{"source":14,"target":132},{"source":128,"target":133},{"source":128,"target":14},{"source":129,"target":134},{"source":129,"target":14},{"source":130,"target":135},{"source":130,"target":14},{"source":131,"target":136},{"source":131,"target":14},{"source":132,"target":137},{"source":132,"target":14},{"source":15,"target":0},{"source":15,"target":138},{"source":138,"target":139},{"source":138,"target":15},{"source":16,"target":0},{"source":16,"target":140},{"source":16,"target":141},{"source":16,"target":142},{"source":16,"target":98},{"source":140,"target":143},{"source":140,"target":16},{"source":141,"target":144},{"source":141,"target":16},{"source":142,"target":145},{"source":142,"target":16},{"source":98,"target":7},{"source":98,"target":146},{"source":98,"target":16},{"source":98,"target":79},{"source":146,"target":7}],"multigraph":true}