<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
 -->
<!-- Title: classes Pages: 1 -->
<svg width="1047pt" height="1641pt"
 viewBox="0.00 0.00 1047.00 1641.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1637)">
<title>classes</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-1637 1043,-1637 1043,4 -4,4"/>
<!-- EventsMixin -->
<g id="node1" class="node">
<title>EventsMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="447.5,-290 370.5,-290 370.5,-254 447.5,-254 447.5,-290"/>
<text text-anchor="middle" x="409" y="-269.5" font-family="Sans" font-size="10.00" fill="#000000">EventsMixin</text>
</g>
<!-- HoldMixin -->
<g id="node2" class="node">
<title>HoldMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="608.5,-290 542.5,-290 542.5,-254 608.5,-254 608.5,-290"/>
<text text-anchor="middle" x="575.5" y="-269.5" font-family="Sans" font-size="10.00" fill="#000000">HoldMixin</text>
</g>
<!-- HoldMixin&#45;&gt;EventsMixin -->
<g id="edge23" class="edge">
<title>HoldMixin&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M542.39,-272C518.35,-272 485.06,-272 457.88,-272"/>
<polygon fill="black" stroke="black" points="457.79,-268.5 447.79,-272 457.79,-275.5 457.79,-268.5"/>
</g>
<!-- SharedMixin -->
<g id="node3" class="node">
<title>SharedMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="1039,-776 962,-776 962,-740 1039,-740 1039,-776"/>
<text text-anchor="middle" x="1000.5" y="-755.5" font-family="Sans" font-size="10.00" fill="#000000">SharedMixin</text>
</g>
<!-- SourceMixin -->
<g id="node4" class="node">
<title>SourceMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="292,-587 215,-587 215,-551 292,-551 292,-587"/>
<text text-anchor="middle" x="253.5" y="-566.5" font-family="Sans" font-size="10.00" fill="#000000">SourceMixin</text>
</g>
<!-- ValuesMixin -->
<g id="node5" class="node">
<title>ValuesMixin</title>
<polygon fill="#c69ee0" stroke="#c69ee0" points="76,-695 0,-695 0,-659 76,-659 76,-695"/>
<text text-anchor="middle" x="38" y="-674.5" font-family="Sans" font-size="10.00" fill="#000000">ValuesMixin</text>
</g>
<!-- AnalogInputDevice -->
<g id="node6" class="node">
<title>AnalogInputDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="463.5,-1100 354.5,-1100 354.5,-1064 463.5,-1064 463.5,-1100"/>
<text text-anchor="middle" x="409" y="-1079.5" font-family="Sans" font-size="10.00" fill="#000000">AnalogInputDevice</text>
</g>
<!-- SPIDevice -->
<g id="node18" class="node">
<title>SPIDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="286,-905 221,-905 221,-869 286,-869 286,-905"/>
<text text-anchor="middle" x="253.5" y="-884.5" font-family="Sans" font-size="10.00" fill="#000000">SPIDevice</text>
</g>
<!-- AnalogInputDevice&#45;&gt;SPIDevice -->
<g id="edge1" class="edge">
<title>AnalogInputDevice&#45;&gt;SPIDevice</title>
<path fill="none" stroke="black" d="M393.56,-1063.65C366.18,-1028.87 306.63,-953.22 275.08,-913.14"/>
<polygon fill="black" stroke="black" points="277.73,-910.85 268.79,-905.15 272.23,-915.18 277.73,-910.85"/>
</g>
<!-- CompositeDevice -->
<g id="node7" class="node">
<title>CompositeDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="305,-479 202,-479 202,-443 305,-443 305,-479"/>
<text text-anchor="middle" x="253.5" y="-458.5" font-family="Sans" font-size="10.00" fill="#000000">CompositeDevice</text>
</g>
<!-- Device -->
<g id="node9" class="node">
<title>Device</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="166,-695 112,-695 112,-659 166,-659 166,-695"/>
<text text-anchor="middle" x="139" y="-674.5" font-family="Sans" font-size="10.00" fill="#000000">Device</text>
</g>
<!-- CompositeDevice&#45;&gt;Device -->
<g id="edge10" class="edge">
<title>CompositeDevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M240.18,-479.26C229.51,-495.43 213.94,-519.82 202,-542 182.5,-578.2 163.25,-621.67 151.49,-649.31"/>
<polygon fill="black" stroke="black" points="148.18,-648.16 147.51,-658.74 154.62,-650.89 148.18,-648.16"/>
</g>
<!-- CompositeOutputDevice -->
<g id="node8" class="node">
<title>CompositeOutputDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="477,-776 341,-776 341,-740 477,-740 477,-776"/>
<text text-anchor="middle" x="409" y="-755.5" font-family="Sans" font-size="10.00" fill="#000000">CompositeOutputDevice</text>
</g>
<!-- CompositeOutputDevice&#45;&gt;SourceMixin -->
<g id="edge12" class="edge">
<title>CompositeOutputDevice&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M353.37,-739.93C348.93,-737.32 344.73,-734.35 341,-731 319.36,-711.57 284.63,-637.54 266.46,-596.62"/>
<polygon fill="black" stroke="black" points="269.55,-594.96 262.32,-587.22 263.14,-597.78 269.55,-594.96"/>
</g>
<!-- CompositeOutputDevice&#45;&gt;CompositeDevice -->
<g id="edge11" class="edge">
<title>CompositeOutputDevice&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M350.65,-739.96C347.06,-737.36 343.79,-734.39 341,-731 286.7,-664.94 336.15,-621.63 305,-542 297.43,-522.65 285.16,-502.82 274.61,-487.63"/>
<polygon fill="black" stroke="black" points="277.3,-485.37 268.65,-479.25 271.6,-489.43 277.3,-485.37"/>
</g>
<!-- Device&#45;&gt;ValuesMixin -->
<g id="edge13" class="edge">
<title>Device&#45;&gt;ValuesMixin</title>
<path fill="none" stroke="black" d="M111.99,-677C104.08,-677 95.14,-677 86.28,-677"/>
<polygon fill="black" stroke="black" points="86,-673.5 76,-677 86,-680.5 86,-673.5"/>
</g>
<!-- GPIODevice -->
<g id="node10" class="node">
<title>GPIODevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="290.5,-722 216.5,-722 216.5,-686 290.5,-686 290.5,-722"/>
<text text-anchor="middle" x="253.5" y="-701.5" font-family="Sans" font-size="10.00" fill="#000000">GPIODevice</text>
</g>
<!-- GPIODevice&#45;&gt;Device -->
<g id="edge22" class="edge">
<title>GPIODevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M216.29,-695.31C203.41,-692.22 188.93,-688.74 176.07,-685.66"/>
<polygon fill="black" stroke="black" points="176.7,-682.21 166.16,-683.28 175.07,-689.02 176.7,-682.21"/>
</g>
<!-- InternalDevice -->
<g id="node11" class="node">
<title>InternalDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="619.5,-144 531.5,-144 531.5,-108 619.5,-108 619.5,-144"/>
<text text-anchor="middle" x="575.5" y="-123.5" font-family="Sans" font-size="10.00" fill="#000000">InternalDevice</text>
</g>
<!-- InternalDevice&#45;&gt;EventsMixin -->
<g id="edge26" class="edge">
<title>InternalDevice&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M554,-144.2C524.74,-170.17 470.9,-217.95 437.99,-247.16"/>
<polygon fill="black" stroke="black" points="435.66,-244.55 430.5,-253.8 440.3,-249.78 435.66,-244.55"/>
</g>
<!-- InternalDevice&#45;&gt;Device -->
<g id="edge25" class="edge">
<title>InternalDevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M531.44,-120.18C481.04,-115.74 397.32,-116.01 341,-156 171.99,-276.01 145.08,-558.98 140.81,-648.99"/>
<polygon fill="black" stroke="black" points="137.31,-648.85 140.39,-658.99 144.3,-649.14 137.31,-648.85"/>
</g>
<!-- LEDCollection -->
<g id="node12" class="node">
<title>LEDCollection</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="617.5,-776 533.5,-776 533.5,-740 617.5,-740 617.5,-776"/>
<text text-anchor="middle" x="575.5" y="-755.5" font-family="Sans" font-size="10.00" fill="#000000">LEDCollection</text>
</g>
<!-- LEDCollection&#45;&gt;CompositeOutputDevice -->
<g id="edge32" class="edge">
<title>LEDCollection&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M533.41,-758C519.44,-758 503.33,-758 487.46,-758"/>
<polygon fill="black" stroke="black" points="487.09,-754.5 477.09,-758 487.09,-761.5 487.09,-754.5"/>
</g>
<!-- MCP30xx -->
<g id="node13" class="node">
<title>MCP30xx</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="764,-1363 702,-1363 702,-1327 764,-1327 764,-1363"/>
<text text-anchor="middle" x="733" y="-1342.5" font-family="Sans" font-size="10.00" fill="#000000">MCP30xx</text>
</g>
<!-- MCP3xxx -->
<g id="node17" class="node">
<title>MCP3xxx</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="606.5,-1289 544.5,-1289 544.5,-1253 606.5,-1253 606.5,-1289"/>
<text text-anchor="middle" x="575.5" y="-1268.5" font-family="Sans" font-size="10.00" fill="#000000">MCP3xxx</text>
</g>
<!-- MCP30xx&#45;&gt;MCP3xxx -->
<g id="edge43" class="edge">
<title>MCP30xx&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M701.65,-1330.56C677.06,-1318.85 642.24,-1302.29 615.57,-1289.59"/>
<polygon fill="black" stroke="black" points="617.04,-1286.42 606.51,-1285.28 614.04,-1292.74 617.04,-1286.42"/>
</g>
<!-- MCP32xx -->
<g id="node14" class="node">
<title>MCP32xx</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="764,-1222 702,-1222 702,-1186 764,-1186 764,-1222"/>
<text text-anchor="middle" x="733" y="-1201.5" font-family="Sans" font-size="10.00" fill="#000000">MCP32xx</text>
</g>
<!-- MCP32xx&#45;&gt;MCP3xxx -->
<g id="edge49" class="edge">
<title>MCP32xx&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M701.65,-1217.08C677.17,-1227.63 642.55,-1242.54 615.92,-1254.01"/>
<polygon fill="black" stroke="black" points="614.31,-1250.9 606.51,-1258.07 617.08,-1257.33 614.31,-1250.9"/>
</g>
<!-- MCP33xx -->
<g id="node15" class="node">
<title>MCP33xx</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="764,-1552 702,-1552 702,-1516 764,-1516 764,-1552"/>
<text text-anchor="middle" x="733" y="-1531.5" font-family="Sans" font-size="10.00" fill="#000000">MCP33xx</text>
</g>
<!-- MCP33xx&#45;&gt;MCP3xxx -->
<g id="edge53" class="edge">
<title>MCP33xx&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M721.31,-1515.92C694.46,-1470.5 624.05,-1351.42 592.36,-1297.82"/>
<polygon fill="black" stroke="black" points="595.37,-1296.03 587.26,-1289.2 589.34,-1299.59 595.37,-1296.03"/>
</g>
<!-- MCP3xx2 -->
<g id="node16" class="node">
<title>MCP3xx2</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="764,-1289 702,-1289 702,-1253 764,-1253 764,-1289"/>
<text text-anchor="middle" x="733" y="-1268.5" font-family="Sans" font-size="10.00" fill="#000000">MCP3xx2</text>
</g>
<!-- MCP3xx2&#45;&gt;MCP3xxx -->
<g id="edge54" class="edge">
<title>MCP3xx2&#45;&gt;MCP3xxx</title>
<path fill="none" stroke="black" d="M701.65,-1271C677.38,-1271 643.15,-1271 616.63,-1271"/>
<polygon fill="black" stroke="black" points="616.51,-1267.5 606.51,-1271 616.51,-1274.5 616.51,-1267.5"/>
</g>
<!-- MCP3xxx&#45;&gt;AnalogInputDevice -->
<g id="edge55" class="edge">
<title>MCP3xxx&#45;&gt;AnalogInputDevice</title>
<path fill="none" stroke="black" d="M551.61,-1252.76C539.59,-1242.74 524.93,-1229.78 513,-1217 480.33,-1182 447.65,-1137.07 428.13,-1108.9"/>
<polygon fill="black" stroke="black" points="430.82,-1106.63 422.27,-1100.37 425.05,-1110.6 430.82,-1106.63"/>
</g>
<!-- SPIDevice&#45;&gt;Device -->
<g id="edge84" class="edge">
<title>SPIDevice&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M236.35,-868.86C225.7,-856.3 211.94,-838.87 202,-822 179.25,-783.38 160.25,-734.86 149.5,-704.9"/>
<polygon fill="black" stroke="black" points="152.67,-703.38 146.05,-695.12 146.07,-705.71 152.67,-703.38"/>
</g>
<!-- SmoothedInputDevice -->
<g id="node19" class="node">
<title>SmoothedInputDevice</title>
<polygon fill="#9ec6e0" stroke="#9ec6e0" points="638,-506 513,-506 513,-470 638,-470 638,-506"/>
<text text-anchor="middle" x="575.5" y="-485.5" font-family="Sans" font-size="10.00" fill="#000000">SmoothedInputDevice</text>
</g>
<!-- SmoothedInputDevice&#45;&gt;EventsMixin -->
<g id="edge87" class="edge">
<title>SmoothedInputDevice&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M522.5,-469.85C518.97,-467.27 515.74,-464.33 513,-461 466.17,-404.02 524.7,-355.26 477,-299 471.7,-292.74 464.73,-287.92 457.3,-284.21"/>
<polygon fill="black" stroke="black" points="458.29,-280.83 447.72,-280.08 455.52,-287.26 458.29,-280.83"/>
</g>
<!-- InputDevice -->
<g id="node31" class="node">
<title>InputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="446.5,-722 371.5,-722 371.5,-686 446.5,-686 446.5,-722"/>
<text text-anchor="middle" x="409" y="-701.5" font-family="Sans" font-size="10.00" fill="#ffffff">InputDevice</text>
</g>
<!-- SmoothedInputDevice&#45;&gt;InputDevice -->
<g id="edge88" class="edge">
<title>SmoothedInputDevice&#45;&gt;InputDevice</title>
<path fill="none" stroke="black" d="M522.5,-506.15C518.97,-508.73 515.74,-511.67 513,-515 466.17,-571.98 524.7,-620.74 477,-677 471.4,-683.6 463.96,-688.6 456.06,-692.39"/>
<polygon fill="black" stroke="black" points="454.56,-689.23 446.68,-696.3 457.25,-695.69 454.56,-689.23"/>
</g>
<!-- AngularServo -->
<g id="node20" class="node">
<title>AngularServo</title>
<polygon fill="#2980b9" stroke="#2980b9" points="616.5,-344 534.5,-344 534.5,-308 616.5,-308 616.5,-344"/>
<text text-anchor="middle" x="575.5" y="-323.5" font-family="Sans" font-size="10.00" fill="#ffffff">AngularServo</text>
</g>
<!-- Servo -->
<g id="node21" class="node">
<title>Servo</title>
<polygon fill="#2980b9" stroke="#2980b9" points="436,-398 382,-398 382,-362 436,-362 436,-398"/>
<text text-anchor="middle" x="409" y="-377.5" font-family="Sans" font-size="10.00" fill="#ffffff">Servo</text>
</g>
<!-- AngularServo&#45;&gt;Servo -->
<g id="edge2" class="edge">
<title>AngularServo&#45;&gt;Servo</title>
<path fill="none" stroke="black" d="M534.26,-339.21C507.39,-348.03 472.34,-359.54 446.32,-368.08"/>
<polygon fill="black" stroke="black" points="444.88,-364.86 436.48,-371.31 447.07,-371.52 444.88,-364.86"/>
</g>
<!-- Servo&#45;&gt;SourceMixin -->
<g id="edge86" class="edge">
<title>Servo&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M381.85,-385.52C368.26,-389.53 352.19,-396.2 341,-407 312.66,-434.36 323.47,-453.2 305,-488 295.13,-506.6 282.62,-526.69 272.52,-542.21"/>
<polygon fill="black" stroke="black" points="269.46,-540.5 266.89,-550.77 275.3,-544.34 269.46,-540.5"/>
</g>
<!-- Servo&#45;&gt;CompositeDevice -->
<g id="edge85" class="edge">
<title>Servo&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M381.76,-389.35C369.2,-394.14 354.08,-400.35 341,-407 323.46,-415.92 304.84,-427.28 289.38,-437.28"/>
<polygon fill="black" stroke="black" points="287.13,-434.57 280.68,-442.97 290.97,-440.42 287.13,-434.57"/>
</g>
<!-- Button -->
<g id="node22" class="node">
<title>Button</title>
<polygon fill="#2980b9" stroke="#2980b9" points="760,-317 706,-317 706,-281 760,-281 760,-317"/>
<text text-anchor="middle" x="733" y="-296.5" font-family="Sans" font-size="10.00" fill="#ffffff">Button</text>
</g>
<!-- Button&#45;&gt;HoldMixin -->
<g id="edge4" class="edge">
<title>Button&#45;&gt;HoldMixin</title>
<path fill="none" stroke="black" d="M705.97,-294.48C682.1,-290.34 646.33,-284.12 618.43,-279.28"/>
<polygon fill="black" stroke="black" points="618.99,-275.83 608.54,-277.56 617.8,-282.72 618.99,-275.83"/>
</g>
<!-- DigitalInputDevice -->
<g id="node23" class="node">
<title>DigitalInputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="629,-452 522,-452 522,-416 629,-416 629,-452"/>
<text text-anchor="middle" x="575.5" y="-431.5" font-family="Sans" font-size="10.00" fill="#ffffff">DigitalInputDevice</text>
</g>
<!-- Button&#45;&gt;DigitalInputDevice -->
<g id="edge3" class="edge">
<title>Button&#45;&gt;DigitalInputDevice</title>
<path fill="none" stroke="black" d="M719.97,-317.26C703.75,-340.69 672.84,-381.37 638,-407 636.21,-408.32 634.34,-409.59 632.42,-410.82"/>
<polygon fill="black" stroke="black" points="630.59,-407.83 623.71,-415.89 634.12,-413.88 630.59,-407.83"/>
</g>
<!-- DigitalInputDevice&#45;&gt;EventsMixin -->
<g id="edge14" class="edge">
<title>DigitalInputDevice&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M523.45,-415.93C519.62,-413.32 516.06,-410.36 513,-407 478.9,-369.62 511.66,-335.86 477,-299 471.44,-293.09 464.42,-288.44 457.02,-284.8"/>
<polygon fill="black" stroke="black" points="458.1,-281.45 447.53,-280.7 455.32,-287.88 458.1,-281.45"/>
</g>
<!-- DigitalInputDevice&#45;&gt;InputDevice -->
<g id="edge15" class="edge">
<title>DigitalInputDevice&#45;&gt;InputDevice</title>
<path fill="none" stroke="black" d="M522.02,-452.21C518.65,-454.77 515.58,-457.69 513,-461 453.24,-537.82 537.93,-601.11 477,-677 471.53,-683.82 464.07,-688.93 456.1,-692.75"/>
<polygon fill="black" stroke="black" points="454.52,-689.61 446.62,-696.67 457.2,-696.08 454.52,-689.61"/>
</g>
<!-- ButtonBoard -->
<g id="node24" class="node">
<title>ButtonBoard</title>
<polygon fill="#2980b9" stroke="#2980b9" points="771.5,-230 694.5,-230 694.5,-194 771.5,-194 771.5,-230"/>
<text text-anchor="middle" x="733" y="-209.5" font-family="Sans" font-size="10.00" fill="#ffffff">ButtonBoard</text>
</g>
<!-- ButtonBoard&#45;&gt;HoldMixin -->
<g id="edge6" class="edge">
<title>ButtonBoard&#45;&gt;HoldMixin</title>
<path fill="none" stroke="black" d="M694.36,-226.52C671.29,-235.43 641.74,-246.83 617.99,-255.99"/>
<polygon fill="black" stroke="black" points="616.61,-252.77 608.54,-259.64 619.13,-259.3 616.61,-252.77"/>
</g>
<!-- ButtonBoard&#45;&gt;CompositeDevice -->
<g id="edge5" class="edge">
<title>ButtonBoard&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M694.37,-197.22C618.56,-170.16 445.8,-122.53 341,-204 269.02,-259.95 256.44,-378.32 254.58,-432.65"/>
<polygon fill="black" stroke="black" points="251.08,-432.85 254.34,-442.93 258.08,-433.02 251.08,-432.85"/>
</g>
<!-- Buzzer -->
<g id="node25" class="node">
<title>Buzzer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="760,-1114 706,-1114 706,-1078 760,-1078 760,-1114"/>
<text text-anchor="middle" x="733" y="-1093.5" font-family="Sans" font-size="10.00" fill="#ffffff">Buzzer</text>
</g>
<!-- DigitalOutputDevice -->
<g id="node26" class="node">
<title>DigitalOutputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="633.5,-1154 517.5,-1154 517.5,-1118 633.5,-1118 633.5,-1154"/>
<text text-anchor="middle" x="575.5" y="-1133.5" font-family="Sans" font-size="10.00" fill="#ffffff">DigitalOutputDevice</text>
</g>
<!-- Buzzer&#45;&gt;DigitalOutputDevice -->
<g id="edge7" class="edge">
<title>Buzzer&#45;&gt;DigitalOutputDevice</title>
<path fill="none" stroke="black" d="M705.97,-1102.7C688.8,-1107.11 665.47,-1113.11 643.34,-1118.81"/>
<polygon fill="black" stroke="black" points="642.43,-1115.43 633.62,-1121.31 644.18,-1122.21 642.43,-1115.43"/>
</g>
<!-- OutputDevice -->
<g id="node32" class="node">
<title>OutputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="450.5,-830 367.5,-830 367.5,-794 450.5,-794 450.5,-830"/>
<text text-anchor="middle" x="409" y="-809.5" font-family="Sans" font-size="10.00" fill="#ffffff">OutputDevice</text>
</g>
<!-- DigitalOutputDevice&#45;&gt;OutputDevice -->
<g id="edge16" class="edge">
<title>DigitalOutputDevice&#45;&gt;OutputDevice</title>
<path fill="none" stroke="black" d="M521.9,-1117.88C518.55,-1115.3 515.52,-1112.35 513,-1109 440.23,-1012.25 551.24,-934.63 477,-839 472.45,-833.14 466.43,-828.55 459.86,-824.95"/>
<polygon fill="black" stroke="black" points="461.19,-821.71 450.65,-820.64 458.22,-828.05 461.19,-821.71"/>
</g>
<!-- CPUTemperature -->
<g id="node27" class="node">
<title>CPUTemperature</title>
<polygon fill="#2980b9" stroke="#2980b9" points="926,-144 828,-144 828,-108 926,-108 926,-144"/>
<text text-anchor="middle" x="877" y="-123.5" font-family="Sans" font-size="10.00" fill="#ffffff">CPUTemperature</text>
</g>
<!-- PolledInternalDevice -->
<g id="node28" class="node">
<title>PolledInternalDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="792,-144 674,-144 674,-108 792,-108 792,-144"/>
<text text-anchor="middle" x="733" y="-123.5" font-family="Sans" font-size="10.00" fill="#ffffff">PolledInternalDevice</text>
</g>
<!-- CPUTemperature&#45;&gt;PolledInternalDevice -->
<g id="edge8" class="edge">
<title>CPUTemperature&#45;&gt;PolledInternalDevice</title>
<path fill="none" stroke="black" d="M827.93,-126C819.66,-126 810.92,-126 802.24,-126"/>
<polygon fill="black" stroke="black" points="802.11,-122.5 792.11,-126 802.11,-129.5 802.11,-122.5"/>
</g>
<!-- PolledInternalDevice&#45;&gt;InternalDevice -->
<g id="edge74" class="edge">
<title>PolledInternalDevice&#45;&gt;InternalDevice</title>
<path fill="none" stroke="black" d="M673.66,-126C659.23,-126 643.85,-126 629.69,-126"/>
<polygon fill="black" stroke="black" points="629.62,-122.5 619.62,-126 629.62,-129.5 629.62,-122.5"/>
</g>
<!-- CamJamKitRobot -->
<g id="node29" class="node">
<title>CamJamKitRobot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="625.5,-614 525.5,-614 525.5,-578 625.5,-578 625.5,-614"/>
<text text-anchor="middle" x="575.5" y="-593.5" font-family="Sans" font-size="10.00" fill="#ffffff">CamJamKitRobot</text>
</g>
<!-- Robot -->
<g id="node30" class="node">
<title>Robot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="436,-560 382,-560 382,-524 436,-524 436,-560"/>
<text text-anchor="middle" x="409" y="-539.5" font-family="Sans" font-size="10.00" fill="#ffffff">Robot</text>
</g>
<!-- CamJamKitRobot&#45;&gt;Robot -->
<g id="edge9" class="edge">
<title>CamJamKitRobot&#45;&gt;Robot</title>
<path fill="none" stroke="black" d="M525.14,-579.8C499.75,-571.46 469.36,-561.48 446.17,-553.87"/>
<polygon fill="black" stroke="black" points="446.98,-550.46 436.39,-550.66 444.8,-557.11 446.98,-550.46"/>
</g>
<!-- Robot&#45;&gt;SourceMixin -->
<g id="edge80" class="edge">
<title>Robot&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M381.96,-546.58C360.21,-550.41 328.63,-555.96 302.35,-560.58"/>
<polygon fill="black" stroke="black" points="301.44,-557.19 292.2,-562.37 302.65,-564.08 301.44,-557.19"/>
</g>
<!-- Robot&#45;&gt;CompositeDevice -->
<g id="edge79" class="edge">
<title>Robot&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M381.76,-532.65C369.2,-527.86 354.08,-521.65 341,-515 323.46,-506.08 304.84,-494.72 289.38,-484.72"/>
<polygon fill="black" stroke="black" points="290.97,-481.58 280.68,-479.03 287.13,-487.43 290.97,-481.58"/>
</g>
<!-- InputDevice&#45;&gt;GPIODevice -->
<g id="edge24" class="edge">
<title>InputDevice&#45;&gt;GPIODevice</title>
<path fill="none" stroke="black" d="M371.23,-704C350.08,-704 323.31,-704 300.74,-704"/>
<polygon fill="black" stroke="black" points="300.7,-700.5 290.7,-704 300.7,-707.5 300.7,-700.5"/>
</g>
<!-- OutputDevice&#45;&gt;SourceMixin -->
<g id="edge60" class="edge">
<title>OutputDevice&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M367.33,-802.06C357.68,-798.09 348.13,-792.58 341,-785 306.34,-748.14 323.75,-724 305,-677 293.83,-648.99 279.02,-617.88 268.33,-596.28"/>
<polygon fill="black" stroke="black" points="271.33,-594.45 263.73,-587.06 265.06,-597.57 271.33,-594.45"/>
</g>
<!-- OutputDevice&#45;&gt;GPIODevice -->
<g id="edge59" class="edge">
<title>OutputDevice&#45;&gt;GPIODevice</title>
<path fill="none" stroke="black" d="M367.48,-798.48C358.45,-794.71 349.14,-790.19 341,-785 316.93,-769.65 293.55,-747.14 277.17,-729.75"/>
<polygon fill="black" stroke="black" points="279.52,-727.13 270.16,-722.16 274.37,-731.88 279.52,-727.13"/>
</g>
<!-- DiskUsage -->
<g id="node33" class="node">
<title>DiskUsage</title>
<polygon fill="#2980b9" stroke="#2980b9" points="911.5,-90 842.5,-90 842.5,-54 911.5,-54 911.5,-90"/>
<text text-anchor="middle" x="877" y="-69.5" font-family="Sans" font-size="10.00" fill="#ffffff">DiskUsage</text>
</g>
<!-- DiskUsage&#45;&gt;PolledInternalDevice -->
<g id="edge17" class="edge">
<title>DiskUsage&#45;&gt;PolledInternalDevice</title>
<path fill="none" stroke="black" d="M842.35,-84.8C826.99,-90.64 808.36,-97.72 790.92,-104.35"/>
<polygon fill="black" stroke="black" points="789.48,-101.16 781.38,-107.98 791.97,-107.7 789.48,-101.16"/>
</g>
<!-- DistanceSensor -->
<g id="node34" class="node">
<title>DistanceSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="779,-533 687,-533 687,-497 779,-497 779,-533"/>
<text text-anchor="middle" x="733" y="-512.5" font-family="Sans" font-size="10.00" fill="#ffffff">DistanceSensor</text>
</g>
<!-- DistanceSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge18" class="edge">
<title>DistanceSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M686.6,-507.12C674.53,-505.02 661.19,-502.71 648.09,-500.43"/>
<polygon fill="black" stroke="black" points="648.59,-496.96 638.14,-498.7 647.39,-503.86 648.59,-496.96"/>
</g>
<!-- Energenie -->
<g id="node35" class="node">
<title>Energenie</title>
<polygon fill="#2980b9" stroke="#2980b9" points="441.5,-668 376.5,-668 376.5,-632 441.5,-632 441.5,-668"/>
<text text-anchor="middle" x="409" y="-647.5" font-family="Sans" font-size="10.00" fill="#ffffff">Energenie</text>
</g>
<!-- Energenie&#45;&gt;SourceMixin -->
<g id="edge20" class="edge">
<title>Energenie&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M376.47,-638.61C365.1,-634.16 352.29,-628.74 341,-623 323.46,-614.08 304.84,-602.72 289.38,-592.72"/>
<polygon fill="black" stroke="black" points="290.97,-589.58 280.68,-587.03 287.13,-595.43 290.97,-589.58"/>
</g>
<!-- Energenie&#45;&gt;Device -->
<g id="edge19" class="edge">
<title>Energenie&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M376.47,-653.18C326.5,-658.21 229.38,-667.99 176.48,-673.32"/>
<polygon fill="black" stroke="black" points="175.81,-669.87 166.21,-674.36 176.51,-676.84 175.81,-669.87"/>
</g>
<!-- FishDish -->
<g id="node36" class="node">
<title>FishDish</title>
<polygon fill="#2980b9" stroke="#2980b9" points="604.5,-722 546.5,-722 546.5,-686 604.5,-686 604.5,-722"/>
<text text-anchor="middle" x="575.5" y="-701.5" font-family="Sans" font-size="10.00" fill="#ffffff">FishDish</text>
</g>
<!-- FishDish&#45;&gt;CompositeOutputDevice -->
<g id="edge21" class="edge">
<title>FishDish&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M546.22,-713.28C526.6,-719.73 499.63,-728.58 474.87,-736.71"/>
<polygon fill="black" stroke="black" points="473.56,-733.45 465.15,-739.9 475.74,-740.1 473.56,-733.45"/>
</g>
<!-- JamHat -->
<g id="node37" class="node">
<title>JamHat</title>
<polygon fill="#2980b9" stroke="#2980b9" points="602.5,-668 548.5,-668 548.5,-632 602.5,-632 602.5,-668"/>
<text text-anchor="middle" x="575.5" y="-647.5" font-family="Sans" font-size="10.00" fill="#ffffff">JamHat</text>
</g>
<!-- JamHat&#45;&gt;CompositeOutputDevice -->
<g id="edge27" class="edge">
<title>JamHat&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M548.43,-657.7C536.73,-662.06 523.27,-668.38 513,-677 490.91,-695.54 499.38,-712.8 477,-731 475.47,-732.25 473.87,-733.44 472.22,-734.59"/>
<polygon fill="black" stroke="black" points="470.28,-731.67 463.62,-739.91 473.96,-737.63 470.28,-731.67"/>
</g>
<!-- LED -->
<g id="node38" class="node">
<title>LED</title>
<polygon fill="#2980b9" stroke="#2980b9" points="760,-1168 706,-1168 706,-1132 760,-1132 760,-1168"/>
<text text-anchor="middle" x="733" y="-1147.5" font-family="Sans" font-size="10.00" fill="#ffffff">LED</text>
</g>
<!-- LED&#45;&gt;DigitalOutputDevice -->
<g id="edge28" class="edge">
<title>LED&#45;&gt;DigitalOutputDevice</title>
<path fill="none" stroke="black" d="M705.97,-1147.66C688.88,-1146.12 665.68,-1144.03 643.64,-1142.04"/>
<polygon fill="black" stroke="black" points="643.89,-1138.55 633.62,-1141.14 643.27,-1145.53 643.89,-1138.55"/>
</g>
<!-- LEDBarGraph -->
<g id="node39" class="node">
<title>LEDBarGraph</title>
<polygon fill="#2980b9" stroke="#2980b9" points="773.5,-776 692.5,-776 692.5,-740 773.5,-740 773.5,-776"/>
<text text-anchor="middle" x="733" y="-755.5" font-family="Sans" font-size="10.00" fill="#ffffff">LEDBarGraph</text>
</g>
<!-- LEDBarGraph&#45;&gt;LEDCollection -->
<g id="edge29" class="edge">
<title>LEDBarGraph&#45;&gt;LEDCollection</title>
<path fill="none" stroke="black" d="M692.36,-758C672.72,-758 648.76,-758 627.75,-758"/>
<polygon fill="black" stroke="black" points="627.7,-754.5 617.7,-758 627.7,-761.5 627.7,-754.5"/>
</g>
<!-- LEDBoard -->
<g id="node40" class="node">
<title>LEDBoard</title>
<polygon fill="#2980b9" stroke="#2980b9" points="765,-668 701,-668 701,-632 765,-632 765,-668"/>
<text text-anchor="middle" x="733" y="-647.5" font-family="Sans" font-size="10.00" fill="#ffffff">LEDBoard</text>
</g>
<!-- LEDBoard&#45;&gt;LEDCollection -->
<g id="edge30" class="edge">
<title>LEDBoard&#45;&gt;LEDCollection</title>
<path fill="none" stroke="black" d="M714.22,-668.21C696.22,-685.91 666.98,-712.73 638,-731 634.45,-733.24 630.68,-735.38 626.83,-737.41"/>
<polygon fill="black" stroke="black" points="625.13,-734.35 617.74,-741.93 628.25,-740.61 625.13,-734.35"/>
</g>
<!-- LEDCharDisplay -->
<g id="node41" class="node">
<title>LEDCharDisplay</title>
<polygon fill="#2980b9" stroke="#2980b9" points="780.5,-830 685.5,-830 685.5,-794 780.5,-794 780.5,-830"/>
<text text-anchor="middle" x="733" y="-809.5" font-family="Sans" font-size="10.00" fill="#ffffff">LEDCharDisplay</text>
</g>
<!-- LEDCharDisplay&#45;&gt;LEDCollection -->
<g id="edge31" class="edge">
<title>LEDCharDisplay&#45;&gt;LEDCollection</title>
<path fill="none" stroke="black" d="M685.34,-795.8C666.99,-789.42 645.86,-782.09 627.13,-775.58"/>
<polygon fill="black" stroke="black" points="628.17,-772.24 617.58,-772.27 625.88,-778.85 628.17,-772.24"/>
</g>
<!-- LEDMultiCharDisplay -->
<g id="node42" class="node">
<title>LEDMultiCharDisplay</title>
<polygon fill="#2980b9" stroke="#2980b9" points="635,-1046 516,-1046 516,-1010 635,-1010 635,-1046"/>
<text text-anchor="middle" x="575.5" y="-1025.5" font-family="Sans" font-size="10.00" fill="#ffffff">LEDMultiCharDisplay</text>
</g>
<!-- LEDMultiCharDisplay&#45;&gt;CompositeOutputDevice -->
<g id="edge33" class="edge">
<title>LEDMultiCharDisplay&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M522.02,-1009.79C518.65,-1007.23 515.58,-1004.31 513,-1001 453.24,-924.18 537.93,-860.89 477,-785 476.5,-784.38 475.98,-783.77 475.45,-783.17"/>
<polygon fill="black" stroke="black" points="477.51,-780.31 467.75,-776.2 472.81,-785.5 477.51,-780.31"/>
</g>
<!-- LedBorg -->
<g id="node43" class="node">
<title>LedBorg</title>
<polygon fill="#2980b9" stroke="#2980b9" points="603.5,-1208 547.5,-1208 547.5,-1172 603.5,-1172 603.5,-1208"/>
<text text-anchor="middle" x="575.5" y="-1187.5" font-family="Sans" font-size="10.00" fill="#ffffff">LedBorg</text>
</g>
<!-- RGBLED -->
<g id="node44" class="node">
<title>RGBLED</title>
<polygon fill="#2980b9" stroke="#2980b9" points="437,-884 381,-884 381,-848 437,-848 437,-884"/>
<text text-anchor="middle" x="409" y="-863.5" font-family="Sans" font-size="10.00" fill="#ffffff">RGBLED</text>
</g>
<!-- LedBorg&#45;&gt;RGBLED -->
<g id="edge34" class="edge">
<title>LedBorg&#45;&gt;RGBLED</title>
<path fill="none" stroke="black" d="M547.31,-1183.47C535.36,-1179.36 522.04,-1172.91 513,-1163 478.9,-1125.62 493.45,-1102.85 477,-1055 457.24,-997.52 433.27,-930.54 420.02,-893.75"/>
<polygon fill="black" stroke="black" points="423.27,-892.43 416.58,-884.2 416.68,-894.8 423.27,-892.43"/>
</g>
<!-- RGBLED&#45;&gt;SourceMixin -->
<g id="edge78" class="edge">
<title>RGBLED&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M380.95,-861.33C367.09,-857.57 351.06,-850.86 341,-839 293.3,-782.74 328.76,-746.82 305,-677 295.3,-648.49 280.32,-617.51 269.19,-596.07"/>
<polygon fill="black" stroke="black" points="272.28,-594.44 264.53,-587.22 266.09,-597.7 272.28,-594.44"/>
</g>
<!-- RGBLED&#45;&gt;Device -->
<g id="edge77" class="edge">
<title>RGBLED&#45;&gt;Device</title>
<path fill="none" stroke="black" d="M380.79,-856.99C368.29,-852.37 353.5,-846.19 341,-839 271.9,-799.27 201.8,-736.55 165.44,-701.97"/>
<polygon fill="black" stroke="black" points="167.85,-699.42 158.21,-695.03 163,-704.48 167.85,-699.42"/>
</g>
<!-- LightSensor -->
<g id="node45" class="node">
<title>LightSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="770,-479 696,-479 696,-443 770,-443 770,-479"/>
<text text-anchor="middle" x="733" y="-458.5" font-family="Sans" font-size="10.00" fill="#ffffff">LightSensor</text>
</g>
<!-- LightSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge35" class="edge">
<title>LightSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M695.93,-467.26C681.74,-469.73 664.92,-472.65 648.45,-475.51"/>
<polygon fill="black" stroke="black" points="647.52,-472.12 638.26,-477.28 648.72,-479.01 647.52,-472.12"/>
</g>
<!-- LineSensor -->
<g id="node46" class="node">
<title>LineSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="768,-425 698,-425 698,-389 768,-389 768,-425"/>
<text text-anchor="middle" x="733" y="-404.5" font-family="Sans" font-size="10.00" fill="#ffffff">LineSensor</text>
</g>
<!-- LineSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge36" class="edge">
<title>LineSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M697.96,-421.41C689.93,-425.19 681.53,-429.49 674,-434 656.84,-444.28 655.27,-450.91 638,-461 635.5,-462.46 632.9,-463.89 630.26,-465.29"/>
<polygon fill="black" stroke="black" points="628.49,-462.26 621.12,-469.87 631.62,-468.52 628.49,-462.26"/>
</g>
<!-- LoadAverage -->
<g id="node47" class="node">
<title>LoadAverage</title>
<polygon fill="#2980b9" stroke="#2980b9" points="917,-36 837,-36 837,0 917,0 917,-36"/>
<text text-anchor="middle" x="877" y="-15.5" font-family="Sans" font-size="10.00" fill="#ffffff">LoadAverage</text>
</g>
<!-- LoadAverage&#45;&gt;PolledInternalDevice -->
<g id="edge37" class="edge">
<title>LoadAverage&#45;&gt;PolledInternalDevice</title>
<path fill="none" stroke="black" d="M841.91,-36.06C837.15,-38.9 832.38,-41.92 828,-45 803.77,-62 778.48,-84.08 760.24,-100.89"/>
<polygon fill="black" stroke="black" points="757.81,-98.37 752.88,-107.74 762.58,-103.49 757.81,-98.37"/>
</g>
<!-- MCP3001 -->
<g id="node48" class="node">
<title>MCP3001</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1363 846,-1363 846,-1327 908,-1327 908,-1363"/>
<text text-anchor="middle" x="877" y="-1342.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3001</text>
</g>
<!-- MCP3001&#45;&gt;MCP30xx -->
<g id="edge38" class="edge">
<title>MCP3001&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M845.89,-1345C824.99,-1345 796.92,-1345 774.13,-1345"/>
<polygon fill="black" stroke="black" points="774.07,-1341.5 764.07,-1345 774.07,-1348.5 774.07,-1341.5"/>
</g>
<!-- MCP3002 -->
<g id="node49" class="node">
<title>MCP3002</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1309 846,-1309 846,-1273 908,-1273 908,-1309"/>
<text text-anchor="middle" x="877" y="-1288.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3002</text>
</g>
<!-- MCP3002&#45;&gt;MCP30xx -->
<g id="edge39" class="edge">
<title>MCP3002&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M845.89,-1302.45C824.8,-1310.47 796.42,-1321.26 773.51,-1329.97"/>
<polygon fill="black" stroke="black" points="772.17,-1326.74 764.07,-1333.56 774.66,-1333.28 772.17,-1326.74"/>
</g>
<!-- MCP3002&#45;&gt;MCP3xx2 -->
<g id="edge40" class="edge">
<title>MCP3002&#45;&gt;MCP3xx2</title>
<path fill="none" stroke="black" d="M845.89,-1286.76C824.99,-1283.82 796.92,-1279.86 774.13,-1276.65"/>
<polygon fill="black" stroke="black" points="774.46,-1273.16 764.07,-1275.24 773.49,-1280.1 774.46,-1273.16"/>
</g>
<!-- MCP3004 -->
<g id="node50" class="node">
<title>MCP3004</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1471 846,-1471 846,-1435 908,-1435 908,-1471"/>
<text text-anchor="middle" x="877" y="-1450.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3004</text>
</g>
<!-- MCP3004&#45;&gt;MCP30xx -->
<g id="edge41" class="edge">
<title>MCP3004&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M845.99,-1437.33C839.9,-1433.82 833.64,-1429.95 828,-1426 803.77,-1409 778.48,-1386.92 760.24,-1370.11"/>
<polygon fill="black" stroke="black" points="762.58,-1367.51 752.88,-1363.26 757.81,-1372.63 762.58,-1367.51"/>
</g>
<!-- MCP3008 -->
<g id="node51" class="node">
<title>MCP3008</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1417 846,-1417 846,-1381 908,-1381 908,-1417"/>
<text text-anchor="middle" x="877" y="-1396.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3008</text>
</g>
<!-- MCP3008&#45;&gt;MCP30xx -->
<g id="edge42" class="edge">
<title>MCP3008&#45;&gt;MCP30xx</title>
<path fill="none" stroke="black" d="M845.89,-1387.55C824.8,-1379.53 796.42,-1368.74 773.51,-1360.03"/>
<polygon fill="black" stroke="black" points="774.66,-1356.72 764.07,-1356.44 772.17,-1363.26 774.66,-1356.72"/>
</g>
<!-- MCP3201 -->
<g id="node52" class="node">
<title>MCP3201</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1093 846,-1093 846,-1057 908,-1057 908,-1093"/>
<text text-anchor="middle" x="877" y="-1072.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3201</text>
</g>
<!-- MCP3201&#45;&gt;MCP32xx -->
<g id="edge44" class="edge">
<title>MCP3201&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M845.55,-1088.41C839.22,-1092.16 832.97,-1096.7 828,-1102 802.72,-1128.98 818.3,-1151.01 792,-1177 786.68,-1182.26 780.14,-1186.62 773.39,-1190.19"/>
<polygon fill="black" stroke="black" points="771.69,-1187.13 764.16,-1194.58 774.7,-1193.45 771.69,-1187.13"/>
</g>
<!-- MCP3202 -->
<g id="node53" class="node">
<title>MCP3202</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1255 846,-1255 846,-1219 908,-1219 908,-1255"/>
<text text-anchor="middle" x="877" y="-1234.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3202</text>
</g>
<!-- MCP3202&#45;&gt;MCP32xx -->
<g id="edge45" class="edge">
<title>MCP3202&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M845.89,-1230C824.89,-1225.12 796.67,-1218.56 773.82,-1213.25"/>
<polygon fill="black" stroke="black" points="774.6,-1209.84 764.07,-1210.99 773.02,-1216.66 774.6,-1209.84"/>
</g>
<!-- MCP3202&#45;&gt;MCP3xx2 -->
<g id="edge46" class="edge">
<title>MCP3202&#45;&gt;MCP3xx2</title>
<path fill="none" stroke="black" d="M845.89,-1244.21C824.89,-1249.24 796.67,-1255.99 773.82,-1261.47"/>
<polygon fill="black" stroke="black" points="772.98,-1258.07 764.07,-1263.8 774.61,-1264.88 772.98,-1258.07"/>
</g>
<!-- MCP3204 -->
<g id="node54" class="node">
<title>MCP3204</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1201 846,-1201 846,-1165 908,-1165 908,-1201"/>
<text text-anchor="middle" x="877" y="-1180.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3204</text>
</g>
<!-- MCP3204&#45;&gt;MCP32xx -->
<g id="edge47" class="edge">
<title>MCP3204&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M845.89,-1187.45C824.99,-1190.54 796.92,-1194.69 774.13,-1198.07"/>
<polygon fill="black" stroke="black" points="773.45,-1194.63 764.07,-1199.55 774.48,-1201.55 773.45,-1194.63"/>
</g>
<!-- MCP3208 -->
<g id="node55" class="node">
<title>MCP3208</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1147 846,-1147 846,-1111 908,-1111 908,-1147"/>
<text text-anchor="middle" x="877" y="-1126.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3208</text>
</g>
<!-- MCP3208&#45;&gt;MCP32xx -->
<g id="edge48" class="edge">
<title>MCP3208&#45;&gt;MCP32xx</title>
<path fill="none" stroke="black" d="M845.74,-1145.92C839.85,-1149.25 833.72,-1152.72 828,-1156 811.93,-1165.21 808.41,-1168.42 792,-1177 785.98,-1180.15 779.53,-1183.33 773.2,-1186.35"/>
<polygon fill="black" stroke="black" points="771.62,-1183.23 764.06,-1190.65 774.6,-1189.56 771.62,-1183.23"/>
</g>
<!-- MCP3301 -->
<g id="node56" class="node">
<title>MCP3301</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1525 846,-1525 846,-1489 908,-1489 908,-1525"/>
<text text-anchor="middle" x="877" y="-1504.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3301</text>
</g>
<!-- MCP3301&#45;&gt;MCP33xx -->
<g id="edge50" class="edge">
<title>MCP3301&#45;&gt;MCP33xx</title>
<path fill="none" stroke="black" d="M845.89,-1512.73C824.99,-1516.7 796.92,-1522.04 774.13,-1526.37"/>
<polygon fill="black" stroke="black" points="773.24,-1522.98 764.07,-1528.28 774.55,-1529.85 773.24,-1522.98"/>
</g>
<!-- MCP3302 -->
<g id="node57" class="node">
<title>MCP3302</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1633 846,-1633 846,-1597 908,-1597 908,-1633"/>
<text text-anchor="middle" x="877" y="-1612.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3302</text>
</g>
<!-- MCP3302&#45;&gt;MCP33xx -->
<g id="edge51" class="edge">
<title>MCP3302&#45;&gt;MCP33xx</title>
<path fill="none" stroke="black" d="M845.76,-1598.05C839.87,-1594.72 833.74,-1591.26 828,-1588 809.92,-1577.72 789.92,-1566.25 773.04,-1556.53"/>
<polygon fill="black" stroke="black" points="774.43,-1553.29 764.02,-1551.34 770.94,-1559.36 774.43,-1553.29"/>
</g>
<!-- MCP3304 -->
<g id="node58" class="node">
<title>MCP3304</title>
<polygon fill="#2980b9" stroke="#2980b9" points="908,-1579 846,-1579 846,-1543 908,-1543 908,-1579"/>
<text text-anchor="middle" x="877" y="-1558.5" font-family="Sans" font-size="10.00" fill="#ffffff">MCP3304</text>
</g>
<!-- MCP3304&#45;&gt;MCP33xx -->
<g id="edge52" class="edge">
<title>MCP3304&#45;&gt;MCP33xx</title>
<path fill="none" stroke="black" d="M845.89,-1555.27C824.99,-1551.3 796.92,-1545.96 774.13,-1541.63"/>
<polygon fill="black" stroke="black" points="774.55,-1538.15 764.07,-1539.72 773.24,-1545.02 774.55,-1538.15"/>
</g>
<!-- MotionSensor -->
<g id="node59" class="node">
<title>MotionSensor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="774.5,-587 691.5,-587 691.5,-551 774.5,-551 774.5,-587"/>
<text text-anchor="middle" x="733" y="-566.5" font-family="Sans" font-size="10.00" fill="#ffffff">MotionSensor</text>
</g>
<!-- MotionSensor&#45;&gt;SmoothedInputDevice -->
<g id="edge56" class="edge">
<title>MotionSensor&#45;&gt;SmoothedInputDevice</title>
<path fill="none" stroke="black" d="M691.19,-551.32C685.32,-548.4 679.43,-545.25 674,-542 656.84,-531.72 655.27,-525.09 638,-515 635.5,-513.54 632.9,-512.11 630.26,-510.71"/>
<polygon fill="black" stroke="black" points="631.62,-507.48 621.12,-506.13 628.49,-513.74 631.62,-507.48"/>
</g>
<!-- Motor -->
<g id="node60" class="node">
<title>Motor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="436,-344 382,-344 382,-308 436,-308 436,-344"/>
<text text-anchor="middle" x="409" y="-323.5" font-family="Sans" font-size="10.00" fill="#ffffff">Motor</text>
</g>
<!-- Motor&#45;&gt;SourceMixin -->
<g id="edge58" class="edge">
<title>Motor&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M381.81,-330.66C367.86,-334.44 351.47,-341.16 341,-353 299.86,-399.51 329.7,-431.03 305,-488 296.68,-507.19 284.29,-527.15 273.86,-542.45"/>
<polygon fill="black" stroke="black" points="270.83,-540.68 267.99,-550.89 276.58,-544.68 270.83,-540.68"/>
</g>
<!-- Motor&#45;&gt;CompositeDevice -->
<g id="edge57" class="edge">
<title>Motor&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M381.91,-333.05C368.81,-337.42 353.18,-343.95 341,-353 311.08,-375.24 285.65,-410.2 270.26,-434.29"/>
<polygon fill="black" stroke="black" points="267.19,-432.6 264.87,-442.94 273.13,-436.31 267.19,-432.6"/>
</g>
<!-- PWMLED -->
<g id="node61" class="node">
<title>PWMLED</title>
<polygon fill="#2980b9" stroke="#2980b9" points="763,-1060 703,-1060 703,-1024 763,-1024 763,-1060"/>
<text text-anchor="middle" x="733" y="-1039.5" font-family="Sans" font-size="10.00" fill="#ffffff">PWMLED</text>
</g>
<!-- PWMOutputDevice -->
<g id="node62" class="node">
<title>PWMOutputDevice</title>
<polygon fill="#2980b9" stroke="#2980b9" points="629.5,-1100 521.5,-1100 521.5,-1064 629.5,-1064 629.5,-1100"/>
<text text-anchor="middle" x="575.5" y="-1079.5" font-family="Sans" font-size="10.00" fill="#ffffff">PWMOutputDevice</text>
</g>
<!-- PWMLED&#45;&gt;PWMOutputDevice -->
<g id="edge61" class="edge">
<title>PWMLED&#45;&gt;PWMOutputDevice</title>
<path fill="none" stroke="black" d="M702.75,-1049.52C684.9,-1054.12 661.37,-1060.17 639.46,-1065.8"/>
<polygon fill="black" stroke="black" points="638.35,-1062.48 629.54,-1068.36 640.09,-1069.26 638.35,-1062.48"/>
</g>
<!-- PWMOutputDevice&#45;&gt;OutputDevice -->
<g id="edge62" class="edge">
<title>PWMOutputDevice&#45;&gt;OutputDevice</title>
<path fill="none" stroke="black" d="M522.02,-1063.79C518.65,-1061.23 515.58,-1058.31 513,-1055 453.24,-978.18 537.93,-914.89 477,-839 472.41,-833.29 466.43,-828.77 459.92,-825.21"/>
<polygon fill="black" stroke="black" points="461.35,-822.01 450.81,-820.92 458.37,-828.35 461.35,-822.01"/>
</g>
<!-- PhaseEnableMotor -->
<g id="node63" class="node">
<title>PhaseEnableMotor</title>
<polygon fill="#2980b9" stroke="#2980b9" points="462.5,-614 355.5,-614 355.5,-578 462.5,-578 462.5,-614"/>
<text text-anchor="middle" x="409" y="-593.5" font-family="Sans" font-size="10.00" fill="#ffffff">PhaseEnableMotor</text>
</g>
<!-- PhaseEnableMotor&#45;&gt;SourceMixin -->
<g id="edge64" class="edge">
<title>PhaseEnableMotor&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M355.17,-586.71C338.08,-583.7 319.23,-580.39 302.51,-577.44"/>
<polygon fill="black" stroke="black" points="302.86,-573.95 292.4,-575.67 301.65,-580.85 302.86,-573.95"/>
</g>
<!-- PhaseEnableMotor&#45;&gt;CompositeDevice -->
<g id="edge63" class="edge">
<title>PhaseEnableMotor&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M355.37,-577.89C350.31,-575.25 345.43,-572.29 341,-569 311.08,-546.76 285.65,-511.8 270.26,-487.71"/>
<polygon fill="black" stroke="black" points="273.13,-485.69 264.87,-479.06 267.19,-489.4 273.13,-485.69"/>
</g>
<!-- PhaseEnableRobot -->
<g id="node64" class="node">
<title>PhaseEnableRobot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="462.5,-452 355.5,-452 355.5,-416 462.5,-416 462.5,-452"/>
<text text-anchor="middle" x="409" y="-431.5" font-family="Sans" font-size="10.00" fill="#ffffff">PhaseEnableRobot</text>
</g>
<!-- PhaseEnableRobot&#45;&gt;SourceMixin -->
<g id="edge66" class="edge">
<title>PhaseEnableRobot&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M355.37,-452.11C350.31,-454.75 345.43,-457.71 341,-461 311.08,-483.24 285.65,-518.2 270.26,-542.29"/>
<polygon fill="black" stroke="black" points="267.19,-540.6 264.87,-550.94 273.13,-544.31 267.19,-540.6"/>
</g>
<!-- PhaseEnableRobot&#45;&gt;CompositeDevice -->
<g id="edge65" class="edge">
<title>PhaseEnableRobot&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M355.17,-443.29C342.25,-445.56 328.32,-448.01 315.07,-450.35"/>
<polygon fill="black" stroke="black" points="314.33,-446.92 305.09,-452.1 315.55,-453.82 314.33,-446.92"/>
</g>
<!-- PiHutXmasTree -->
<g id="node65" class="node">
<title>PiHutXmasTree</title>
<polygon fill="#2980b9" stroke="#2980b9" points="922.5,-776 831.5,-776 831.5,-740 922.5,-740 922.5,-776"/>
<text text-anchor="middle" x="877" y="-755.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiHutXmasTree</text>
</g>
<!-- PiHutXmasTree&#45;&gt;LEDBoard -->
<g id="edge67" class="edge">
<title>PiHutXmasTree&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M841.91,-739.94C837.15,-737.1 832.38,-734.08 828,-731 803.77,-714 778.48,-691.92 760.24,-675.11"/>
<polygon fill="black" stroke="black" points="762.58,-672.51 752.88,-668.26 757.81,-677.63 762.58,-672.51"/>
</g>
<!-- PiLiter -->
<g id="node66" class="node">
<title>PiLiter</title>
<polygon fill="#2980b9" stroke="#2980b9" points="904,-722 850,-722 850,-686 904,-686 904,-722"/>
<text text-anchor="middle" x="877" y="-701.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiLiter</text>
</g>
<!-- PiLiter&#45;&gt;LEDBoard -->
<g id="edge68" class="edge">
<title>PiLiter&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M849.96,-694.1C828.91,-686.09 798.92,-674.69 774.72,-665.48"/>
<polygon fill="black" stroke="black" points="775.67,-662.1 765.08,-661.82 773.18,-668.64 775.67,-662.1"/>
</g>
<!-- PiLiterBarGraph -->
<g id="node67" class="node">
<title>PiLiterBarGraph</title>
<polygon fill="#2980b9" stroke="#2980b9" points="923.5,-830 830.5,-830 830.5,-794 923.5,-794 923.5,-830"/>
<text text-anchor="middle" x="877" y="-809.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiLiterBarGraph</text>
</g>
<!-- PiLiterBarGraph&#45;&gt;LEDBarGraph -->
<g id="edge69" class="edge">
<title>PiLiterBarGraph&#45;&gt;LEDBarGraph</title>
<path fill="none" stroke="black" d="M830.29,-794.62C815.39,-788.95 798.78,-782.64 783.61,-776.87"/>
<polygon fill="black" stroke="black" points="784.48,-773.45 773.89,-773.17 781.99,-779.99 784.48,-773.45"/>
</g>
<!-- PiStop -->
<g id="node68" class="node">
<title>PiStop</title>
<polygon fill="#2980b9" stroke="#2980b9" points="1027.5,-722 973.5,-722 973.5,-686 1027.5,-686 1027.5,-722"/>
<text text-anchor="middle" x="1000.5" y="-701.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiStop</text>
</g>
<!-- TrafficLights -->
<g id="node69" class="node">
<title>TrafficLights</title>
<polygon fill="#2980b9" stroke="#2980b9" points="914.5,-668 839.5,-668 839.5,-632 914.5,-632 914.5,-668"/>
<text text-anchor="middle" x="877" y="-647.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficLights</text>
</g>
<!-- PiStop&#45;&gt;TrafficLights -->
<g id="edge70" class="edge">
<title>PiStop&#45;&gt;TrafficLights</title>
<path fill="none" stroke="black" d="M973.44,-692.42C959.1,-686.04 940.88,-677.95 924.21,-670.54"/>
<polygon fill="black" stroke="black" points="925.18,-667.14 914.62,-666.28 922.34,-673.54 925.18,-667.14"/>
</g>
<!-- TrafficLights&#45;&gt;LEDBoard -->
<g id="edge96" class="edge">
<title>TrafficLights&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M839.43,-650C819.84,-650 795.63,-650 775.35,-650"/>
<polygon fill="black" stroke="black" points="775.15,-646.5 765.15,-650 775.15,-653.5 775.15,-646.5"/>
</g>
<!-- PiTraffic -->
<g id="node70" class="node">
<title>PiTraffic</title>
<polygon fill="#2980b9" stroke="#2980b9" points="1028,-668 973,-668 973,-632 1028,-632 1028,-668"/>
<text text-anchor="middle" x="1000.5" y="-647.5" font-family="Sans" font-size="10.00" fill="#ffffff">PiTraffic</text>
</g>
<!-- PiTraffic&#45;&gt;TrafficLights -->
<g id="edge71" class="edge">
<title>PiTraffic&#45;&gt;TrafficLights</title>
<path fill="none" stroke="black" d="M972.84,-650C958.85,-650 941.31,-650 925.13,-650"/>
<polygon fill="black" stroke="black" points="924.74,-646.5 914.74,-650 924.74,-653.5 924.74,-646.5"/>
</g>
<!-- Pibrella -->
<g id="node71" class="node">
<title>Pibrella</title>
<polygon fill="#2980b9" stroke="#2980b9" points="602.5,-992 548.5,-992 548.5,-956 602.5,-956 602.5,-992"/>
<text text-anchor="middle" x="575.5" y="-971.5" font-family="Sans" font-size="10.00" fill="#ffffff">Pibrella</text>
</g>
<!-- Pibrella&#45;&gt;CompositeOutputDevice -->
<g id="edge72" class="edge">
<title>Pibrella&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M548.39,-968.39C535.95,-964.42 521.88,-957.81 513,-947 466.17,-890.02 524.7,-841.26 477,-785 476.38,-784.27 475.74,-783.55 475.07,-782.86"/>
<polygon fill="black" stroke="black" points="477.11,-780 467.24,-776.14 472.55,-785.31 477.11,-780"/>
</g>
<!-- PingServer -->
<g id="node72" class="node">
<title>PingServer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="911.5,-252 842.5,-252 842.5,-216 911.5,-216 911.5,-252"/>
<text text-anchor="middle" x="877" y="-231.5" font-family="Sans" font-size="10.00" fill="#ffffff">PingServer</text>
</g>
<!-- PingServer&#45;&gt;PolledInternalDevice -->
<g id="edge73" class="edge">
<title>PingServer&#45;&gt;PolledInternalDevice</title>
<path fill="none" stroke="black" d="M842.42,-216.25C837.49,-213.31 832.54,-210.19 828,-207 803.77,-190 778.48,-167.92 760.24,-151.11"/>
<polygon fill="black" stroke="black" points="762.58,-148.51 752.88,-144.26 757.81,-153.63 762.58,-148.51"/>
</g>
<!-- PololuDRV8835Robot -->
<g id="node73" class="node">
<title>PololuDRV8835Robot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="635.5,-398 515.5,-398 515.5,-362 635.5,-362 635.5,-398"/>
<text text-anchor="middle" x="575.5" y="-377.5" font-family="Sans" font-size="10.00" fill="#ffffff">PololuDRV8835Robot</text>
</g>
<!-- PololuDRV8835Robot&#45;&gt;PhaseEnableRobot -->
<g id="edge75" class="edge">
<title>PololuDRV8835Robot&#45;&gt;PhaseEnableRobot</title>
<path fill="none" stroke="black" d="M519.27,-398.13C504.12,-403.1 487.59,-408.53 472.08,-413.62"/>
<polygon fill="black" stroke="black" points="470.99,-410.29 462.58,-416.74 473.18,-416.95 470.99,-410.29"/>
</g>
<!-- PumpkinPi -->
<g id="node74" class="node">
<title>PumpkinPi</title>
<polygon fill="#2980b9" stroke="#2980b9" points="911,-614 843,-614 843,-578 911,-578 911,-614"/>
<text text-anchor="middle" x="877" y="-593.5" font-family="Sans" font-size="10.00" fill="#ffffff">PumpkinPi</text>
</g>
<!-- PumpkinPi&#45;&gt;LEDBoard -->
<g id="edge76" class="edge">
<title>PumpkinPi&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M842.71,-608.66C822.38,-616.39 796.23,-626.33 774.68,-634.53"/>
<polygon fill="black" stroke="black" points="773.24,-631.33 765.14,-638.16 775.73,-637.88 773.24,-631.33"/>
</g>
<!-- RotaryEncoder -->
<g id="node75" class="node">
<title>RotaryEncoder</title>
<polygon fill="#2980b9" stroke="#2980b9" points="619.5,-236 531.5,-236 531.5,-200 619.5,-200 619.5,-236"/>
<text text-anchor="middle" x="575.5" y="-215.5" font-family="Sans" font-size="10.00" fill="#ffffff">RotaryEncoder</text>
</g>
<!-- RotaryEncoder&#45;&gt;EventsMixin -->
<g id="edge82" class="edge">
<title>RotaryEncoder&#45;&gt;EventsMixin</title>
<path fill="none" stroke="black" d="M531.28,-232.19C508.54,-239.65 480.62,-248.82 457.3,-256.47"/>
<polygon fill="black" stroke="black" points="456.03,-253.21 447.62,-259.65 458.21,-259.86 456.03,-253.21"/>
</g>
<!-- RotaryEncoder&#45;&gt;CompositeDevice -->
<g id="edge81" class="edge">
<title>RotaryEncoder&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M531.36,-210.78C480.5,-204.78 395.96,-203 341,-245 280.85,-290.96 262.41,-385.38 256.85,-432.68"/>
<polygon fill="black" stroke="black" points="253.35,-432.52 255.77,-442.84 260.31,-433.26 253.35,-432.52"/>
</g>
<!-- RyanteckRobot -->
<g id="node76" class="node">
<title>RyanteckRobot</title>
<polygon fill="#2980b9" stroke="#2980b9" points="621,-560 530,-560 530,-524 621,-524 621,-560"/>
<text text-anchor="middle" x="575.5" y="-539.5" font-family="Sans" font-size="10.00" fill="#ffffff">RyanteckRobot</text>
</g>
<!-- RyanteckRobot&#45;&gt;Robot -->
<g id="edge83" class="edge">
<title>RyanteckRobot&#45;&gt;Robot</title>
<path fill="none" stroke="black" d="M529.98,-542C503.67,-542 470.79,-542 446.1,-542"/>
<polygon fill="black" stroke="black" points="446.07,-538.5 436.07,-542 446.07,-545.5 446.07,-538.5"/>
</g>
<!-- SnowPi -->
<g id="node77" class="node">
<title>SnowPi</title>
<polygon fill="#2980b9" stroke="#2980b9" points="904,-560 850,-560 850,-524 904,-524 904,-560"/>
<text text-anchor="middle" x="877" y="-539.5" font-family="Sans" font-size="10.00" fill="#ffffff">SnowPi</text>
</g>
<!-- SnowPi&#45;&gt;LEDBoard -->
<g id="edge89" class="edge">
<title>SnowPi&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M849.77,-555.52C842.53,-559.57 834.81,-564.22 828,-569 803.77,-586 778.48,-608.08 760.24,-624.89"/>
<polygon fill="black" stroke="black" points="757.81,-622.37 752.88,-631.74 762.58,-627.49 757.81,-622.37"/>
</g>
<!-- StatusBoard -->
<g id="node78" class="node">
<title>StatusBoard</title>
<polygon fill="#2980b9" stroke="#2980b9" points="613.5,-938 537.5,-938 537.5,-902 613.5,-902 613.5,-938"/>
<text text-anchor="middle" x="575.5" y="-917.5" font-family="Sans" font-size="10.00" fill="#ffffff">StatusBoard</text>
</g>
<!-- StatusBoard&#45;&gt;CompositeOutputDevice -->
<g id="edge90" class="edge">
<title>StatusBoard&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M537.46,-909.61C528.49,-905.63 519.6,-900.24 513,-893 478.9,-855.62 511.66,-821.86 477,-785 476.11,-784.05 475.17,-783.13 474.21,-782.24"/>
<polygon fill="black" stroke="black" points="476.27,-779.42 466.23,-776.05 471.98,-784.95 476.27,-779.42"/>
</g>
<!-- StatusZero -->
<g id="node79" class="node">
<title>StatusZero</title>
<polygon fill="#2980b9" stroke="#2980b9" points="912,-506 842,-506 842,-470 912,-470 912,-506"/>
<text text-anchor="middle" x="877" y="-485.5" font-family="Sans" font-size="10.00" fill="#ffffff">StatusZero</text>
</g>
<!-- StatusZero&#45;&gt;LEDBoard -->
<g id="edge91" class="edge">
<title>StatusZero&#45;&gt;LEDBoard</title>
<path fill="none" stroke="black" d="M841.96,-503.46C836.86,-506.77 831.99,-510.62 828,-515 801.49,-544.14 814.88,-563.93 792,-596 784.51,-606.5 774.73,-616.55 765.34,-625.08"/>
<polygon fill="black" stroke="black" points="762.81,-622.63 757.6,-631.85 767.43,-627.9 762.81,-622.63"/>
</g>
<!-- TimeOfDay -->
<g id="node80" class="node">
<title>TimeOfDay</title>
<polygon fill="#2980b9" stroke="#2980b9" points="913,-198 841,-198 841,-162 913,-162 913,-198"/>
<text text-anchor="middle" x="877" y="-177.5" font-family="Sans" font-size="10.00" fill="#ffffff">TimeOfDay</text>
</g>
<!-- TimeOfDay&#45;&gt;PolledInternalDevice -->
<g id="edge92" class="edge">
<title>TimeOfDay&#45;&gt;PolledInternalDevice</title>
<path fill="none" stroke="black" d="M840.9,-166.65C825.93,-160.96 808.08,-154.17 791.29,-147.78"/>
<polygon fill="black" stroke="black" points="792.14,-144.37 781.55,-144.08 789.66,-150.91 792.14,-144.37"/>
</g>
<!-- TonalBuzzer -->
<g id="node81" class="node">
<title>TonalBuzzer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="446.5,-506 371.5,-506 371.5,-470 446.5,-470 446.5,-506"/>
<text text-anchor="middle" x="409" y="-485.5" font-family="Sans" font-size="10.00" fill="#ffffff">TonalBuzzer</text>
</g>
<!-- TonalBuzzer&#45;&gt;SourceMixin -->
<g id="edge94" class="edge">
<title>TonalBuzzer&#45;&gt;SourceMixin</title>
<path fill="none" stroke="black" d="M371.32,-501.44C361.33,-505.46 350.61,-510.11 341,-515 323.46,-523.92 304.84,-535.28 289.38,-545.28"/>
<polygon fill="black" stroke="black" points="287.13,-542.57 280.68,-550.97 290.97,-548.42 287.13,-542.57"/>
</g>
<!-- TonalBuzzer&#45;&gt;CompositeDevice -->
<g id="edge93" class="edge">
<title>TonalBuzzer&#45;&gt;CompositeDevice</title>
<path fill="none" stroke="black" d="M371.23,-481.53C354.47,-478.58 334.17,-475.01 315.23,-471.68"/>
<polygon fill="black" stroke="black" points="315.64,-468.2 305.18,-469.92 314.43,-475.09 315.64,-468.2"/>
</g>
<!-- TrafficHat -->
<g id="node82" class="node">
<title>TrafficHat</title>
<polygon fill="#2980b9" stroke="#2980b9" points="607,-884 544,-884 544,-848 607,-848 607,-884"/>
<text text-anchor="middle" x="575.5" y="-863.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficHat</text>
</g>
<!-- TrafficHat&#45;&gt;CompositeOutputDevice -->
<g id="edge95" class="edge">
<title>TrafficHat&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M543.77,-856.49C533.27,-852.26 521.93,-846.5 513,-839 490.91,-820.46 499.38,-803.2 477,-785 475.47,-783.75 473.87,-782.56 472.22,-781.41"/>
<polygon fill="black" stroke="black" points="473.96,-778.37 463.62,-776.09 470.28,-784.33 473.96,-778.37"/>
</g>
<!-- TrafficLightsBuzzer -->
<g id="node83" class="node">
<title>TrafficLightsBuzzer</title>
<polygon fill="#2980b9" stroke="#2980b9" points="629.5,-830 521.5,-830 521.5,-794 629.5,-794 629.5,-830"/>
<text text-anchor="middle" x="575.5" y="-809.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficLightsBuzzer</text>
</g>
<!-- TrafficLightsBuzzer&#45;&gt;CompositeOutputDevice -->
<g id="edge97" class="edge">
<title>TrafficLightsBuzzer&#45;&gt;CompositeOutputDevice</title>
<path fill="none" stroke="black" d="M521.09,-794.47C506.39,-789.64 490.29,-784.36 475.01,-779.34"/>
<polygon fill="black" stroke="black" points="475.71,-775.89 465.12,-776.09 473.53,-782.54 475.71,-775.89"/>
</g>
<!-- TrafficpHat -->
<g id="node84" class="node">
<title>TrafficpHat</title>
<polygon fill="#2980b9" stroke="#2980b9" points="1035,-614 966,-614 966,-578 1035,-578 1035,-614"/>
<text text-anchor="middle" x="1000.5" y="-593.5" font-family="Sans" font-size="10.00" fill="#ffffff">TrafficpHat</text>
</g>
<!-- TrafficpHat&#45;&gt;TrafficLights -->
<g id="edge98" class="edge">
<title>TrafficpHat&#45;&gt;TrafficLights</title>
<path fill="none" stroke="black" d="M965.98,-610.9C953.08,-616.63 938.12,-623.28 924.23,-629.45"/>
<polygon fill="black" stroke="black" points="922.54,-626.37 914.83,-633.63 925.39,-632.77 922.54,-626.37"/>
</g>
</g>
</svg>
