<snapdata remixID="14940128"><project name="ehurlburt12_U3L2R" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="ehurlburt12_U3L2R"><notes></notes><hidden> receiveCondition reportJSFunction reportPipe receiveUserEdit getPosition reportMousePosition doDefineBlock doSetBlockAttribute doDeleteBlock reportBlockAttribute reportEnvironment reportNewCostumeSkewed reportAtan2 reportVariadicMin reportVariadicMax receiveSlotEvent doSetSlot receiveConditionEvent reportColor reportColorAttribute reportNewColor reportPoll</hidden><headers></headers><code></code><blocks><block-definition s="Hummingbird %&apos;sensor&apos; %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">Light<options>Distance (cm)&#xD;Dial&#xD;Light&#xD;Sound&#xD;Other (V)</options></input><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3</options></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Other (V)</l></list></block><script><block s="doSetVar"><l>sensor</l><l>Other</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Distance (cm)</l></list></block><script><block s="doSetVar"><l>sensor</l><l>Distance</l></block></script><list></list></block><block s="doSetVar"><l>value</l><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/</l><block var="sensor"/><l>/</l><block var="port"/></list></block></block></block><block s="doIfElse"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="value"/><l>Not Connected</l></list></block></block><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Distance</l></list></block><script><block s="doReport"><block s="reportRound"><block s="reportVariadicProduct"><list><l>1.17</l><block var="value"/></list></block></block><comment w="90" collapsed="false">117/100 Scaling factor</comment></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Other</l></list></block><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportVariadicProduct"><list><block s="reportVariadicProduct"><list><l>0.01294</l><block var="value"/></list></block><l>100</l></list></block></block><l>100</l></block><comment w="102" collapsed="false">3.3/255 scale factor</comment></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Sound</l></list><comment w="155" collapsed="true">If connected, adjust sound level</comment></block><script><block s="doReport"><block s="reportRound"><block s="reportVariadicProduct"><list><l>0.784</l><block var="value"/></list><comment w="140" collapsed="false">200/255 Scaling factor</comment></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Light</l></list></block><script><block s="doReport"><block s="reportRound"><block s="reportVariadicProduct"><list><l>0.392</l><block var="value"/></list><comment w="140" collapsed="false">100/255 Scaling factor</comment></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="sensor"/><l>Dial</l></list></block><script><block s="doReport"><block s="reportRound"><block s="reportVariadicProduct"><list><l>0.435</l><block var="value"/></list><comment w="140" collapsed="false">100/230 Scaling factor</comment></block></block></block></script><list></list></block></script><script><block s="doReport"><l>Not Connected</l></block></script></block></script></block-definition><block-definition s="Hummingbird Play Note %&apos;note&apos; for %&apos;beats&apos; beats" type="command" category="sound"><header></header><code></code><translations>ko:Hummingbird _ 번 음을 _ 박자로 연주하기&#xD;de:Hummingbird Spiele Note _ für _ Schläge&#xD;pt:Hummingbird Toque Notas _ por _ Batidas&#xD;fr:Hummingbird Jouer la note _ pour _ battement(s)&#xD;nl:Hummingbird Speel Noot _ voor _ Beats&#xD;zh_CN:Hummingbird 演奏 音阶 _ 于 _ 拍&#xD;zh_TW:Hummingbird 演奏 音階 _ 於 _ 拍&#xD;ar:Hummingbird تشغيل الموسيقى  _ _&#xD;dk:Hummingbird Spil tone _ i _ slag&#xD;he:Hummingbird נגן תו   _  במשך  _   פעימות&#xD;es:Hummingbird Emitir un sonido _ por _ pulsos&#xD;ca:Hummingbird Toca nota _ durant _ temps&#xD;fi:Hummingbird Soita sävel _  _ iskun ajan&#xD;sv:Hummingbird Spela not _ _&#xD;</translations><inputs><input type="%n">60</input><input type="%n">0.5</input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="note"/><l>135</l></list></block><script><block s="doSetVar"><l>note</l><l>135</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><l>32</l><block var="note"/></list></block><script><block s="doSetVar"><l>note</l><l>32</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="beats"/><l>16</l></list></block><script><block s="doSetVar"><l>beats</l><l>16</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><l>0</l><block var="beats"/></list></block><script><block s="doSetVar"><l>beats</l><l>0</l></block></script><list></list></block><block s="doSetVar"><l>beats</l><block s="reportRound"><block s="reportVariadicProduct"><list><block s="reportQuotient"><l>60000</l><block s="getTempo"></block></block><block var="beats"/></list></block><comment w="242" collapsed="false">BPM = tempo&#xD;60 * 1000/BPM = BPMS  beats per millisecond&#xD;beats = Duration in ms  = BPMS * number of beats</comment></block></block><block s="doRun"><block s="reifyReporter"><autolambda><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/playnote/</l><block var="note"/><l>/</l><block var="beats"/></list></block></block></autolambda><list></list></block><list></list></block><block s="doWait"><block s="reportQuotient"><block var="beats"/><l>1000</l></block><comment w="205" collapsed="false">block for number of seconds</comment></block></script></block-definition><block-definition s="micro:bit %&apos;device&apos; %&apos;dim&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">Accelerometer (m/s²)<options>Accelerometer (m/s²)&#xD;Magnetometer (µT)</options></input><input type="%txt" readonly="true">X<options>X&#xD;Y&#xD;Z</options></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="device"/><l>Accelerometer (m/s²)</l></list></block><script><block s="doSetVar"><l>device</l><l>Accelerometer</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="device"/><l>Magnetometer (µT)</l></list></block><script><block s="doSetVar"><l>device</l><l>Magnetometer</l></block></script><list></list></block><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/</l><block var="device"/><l>/</l><block var="dim"/></list></block></block></block></script></block-definition><block-definition s="micro:bit Button %&apos;button&apos;" type="predicate" category="sensing"><header></header><code></code><translations>ko:micro:bit 버튼 _&#xD;de:micro:bit Knopf _&#xD;pt:micro:bit Tecla _&#xD;fr:micro:bit Bouton _&#xD;nl:micro:bit Knop _&#xD;zh_CN:micro:bit 按钮 _&#xD;zh_TW:micro:bit 按鈕 _&#xD;ar:micro:bit زر _&#xD;dk:micro:bit Knap _&#xD;he:micro:bit לחצן  _&#xD;es:micro:bit Pulsador _&#xD;ca:micro:bit Botó _&#xD;fi:micro:bit Painike _&#xD;sv:micro:bit Knapp _&#xD;</translations><inputs><input type="%txt" readonly="true">A<options>A&#xD;B</options></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/button/</l><block var="button"/></list></block></block><l>true</l></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="micro:bit Compass" type="reporter" category="sensing"><header></header><code></code><translations>ko:micro:bit 나침반 센서&#xD;de:micro:bit Kompass&#xD;pt:micro:bit Bússola&#xD;fr:micro:bit Compas&#xD;nl:micro:bit Kompas&#xD;zh_CN:micro:bit 指南针&#xD;zh_TW:micro:bit 指南針&#xD;ar:micro:bit بوصلة&#xD;dk:micro:bit Kompas&#xD;he:micro:bit מצפן&#xD;es:micro:bit Brujula&#xD;ca:micro:bit Brúixola&#xD;fi:micro:bit Kompassi&#xD;sv:micro:bit Kompass&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/</l><l>Compass</l></list></block></block></block></script></block-definition><block-definition s="micro:bit %&apos;dim&apos;" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">Screen Up<options>Screen Up&#xD;Screen Down&#xD;Tilt Left&#xD;Tilt Right&#xD;Logo Up&#xD;Logo Down&#xD;Shake</options></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/orientation/</l><block var="dim"/></list></block></block><l>true</l></list></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block-definition><block-definition s="stop all" type="command" category="control"><header></header><code></code><translations>ko:모두 멈추기&#xD;de:stoppe alles&#xD;pt:pare todos&#xD;fr:stop tout&#xD;nl:stop alle&#xD;zh_CN:停止 全部&#xD;zh_TW:停止 全部&#xD;ar:توقف الكل&#xD;dk:stop alle&#xD;he:להפסיק הכל&#xD;es:detener todo&#xD;ca:atura tot&#xD;fi:pysäytä kaikki&#xD;sv:stop allt&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/stopall</l></list></block></block></block></script></block-definition><block-definition s="Hummingbird Position Servo %&apos;port&apos; %&apos;position&apos; °" type="command" category="motion"><header></header><code></code><translations>ko:Hummingbird 위치 제어 서보 _ _ °&#xD;de:Hummingbird Position Servo _ _ °&#xD;pt:Hummingbird Posição do Servo _ _ °&#xD;fr:Hummingbird Position Servo _ _ °&#xD;nl:Hummingbird Positie-Servo _ _ °&#xD;zh_CN:Hummingbird 位置伺服 _ _ °&#xD;zh_TW:Hummingbird 位置伺服 _ _ °&#xD;ar:Hummingbird موقف محرك سيرفو المؤازر  _ _&#xD;dk:Hummingbird Positionsservo _ _ °&#xD;he:Hummingbird סרוו כיוון     _ _&#xD;es:Hummingbird Servo de posicion _ _ °&#xD;ca:Hummingbird Servo posicional _ _ °&#xD;fi:Hummingbird Asentoservo _ _ °&#xD;sv:Hummingbird Positionsservo _ _ °&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3&#xD;4</options></input><input type="%n">90</input></inputs><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="position"/><l>0</l></list></block><script><block s="doSetVar"><l>position</l><l>0</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="position"/><l>180</l></list></block><script><block s="doSetVar"><l>position</l><l>180</l></block></script><list></list></block><block s="doSetVar"><l>position</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="position"/><l>1.41</l></list></block></block><comment w="228" collapsed="false">254/180 Scaling Factor</comment></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>position</l></list><l>var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.servos === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.servos = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setServoAngle: function (port, angle) {&#xD;            function callback() {&#xD;                if (window.birdbrain.servos[port] === angle) {&#xD;                    delete window.birdbrain.servos[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.servos.setServoAngle(port, window.birdbrain.servos[port]);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;         &#xD;            var thisURL = "http://127.0.0.1:30061/hummingbird/out/servo/" + actualPort + "/" + angle;&#xD;            //console.log("thisURL: " + thisURL);&#xD;            xhr.open("GET", thisURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);          &#xD;            &#xD;        }&#xD;    };&#xD;}&#xD;&#xD;//var realAngle = Math.floor(ang*1.25);&#xD;&#xD;//realAngle = Math.max(Math.min(realAngle,225.0),0.0);&#xD;&#xD;if (window.birdbrain.servos[realPort] === undefined) {&#xD;    window.birdbrain.servos.setServoAngle(realPort, position);&#xD;}&#xD;&#xD;window.birdbrain.servos[realPort] = position;</l></block><list><block var="port"/><block var="position"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="187.14285714285717" y="82.28571428571428"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/servo/</l><l></l><l>/</l><l></l></list></block></block></block></script></scripts></block-definition><block-definition s="Hummingbird Rotation Servo %&apos;port&apos; %&apos;speed&apos; %" type="command" category="motion"><header></header><code></code><translations>ko:Hummingbird 회전속도 제어 서보 _ _ %&#xD;de:Hummingbird Drehung Servo _ _ %&#xD;pt:Hummingbird Rotação do Servo _ _ %&#xD;fr:Hummingbird Rotation Servo _ _ %&#xD;nl:Hummingbird Draai-Servo _ _ %&#xD;zh_CN:Hummingbird 旋转伺服 _ _ %&#xD;zh_TW:Hummingbird 旋轉伺服 _ _ %&#xD;ar:Hummingbird فتحة دوران المحرك المؤازر  _ _&#xD;dk:Hummingbird Rotationsservo _ _ %&#xD;he:Hummingbird סרוו סיבובים    _ _ %&#xD;es:Hummingbird Servo de rotacion _ _ %&#xD;ca:Hummingbird Servo rotacional _ _ %&#xD;fi:Hummingbird Kiertoservo _ _ %&#xD;sv:Hummingbird Rotationsservo _ _ %&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3&#xD;4</options></input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="speed"/><l>-100</l></list></block><script><block s="doSetVar"><l>speed</l><l>-100</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="speed"/><l>100</l></list></block><script><block s="doSetVar"><l>speed</l><l>100</l></block></script><list></list></block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicGreaterThan"><list><block var="speed"/><l>-10</l></list></block><block s="reportVariadicLessThan"><list><block var="speed"/><l>10</l></list></block></list></block><script><block s="doSetVar"><l>speed</l><l>255</l></block></script><script><block s="doSetVar"><l>speed</l><block s="reportRound"><block s="reportVariadicSum"><list><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="speed"/><l>23</l></list></block><l>100</l></block><l>122</l></list></block></block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>speed</l></list><l>var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.rotationServos === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.rotationServos = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setServoSpeed: function (port, speed) {&#xD;            function callback() {&#xD;                if (window.birdbrain.rotationServos[port] === speed) {&#xD;                    delete window.birdbrain.rotationServos[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.rotationServos.setServoSpeed(port, window.birdbrain.rotationServos[port]);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;         &#xD;            var thisURL = "http://127.0.0.1:30061/hummingbird/out/rotation/" + actualPort + "/" + speed;&#xD;            //console.log("thisURL: " + thisURL);&#xD;            xhr.open("GET", thisURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);          &#xD;            &#xD;        }&#xD;    };&#xD;}&#xD;&#xD;if (window.birdbrain.rotationServos[realPort] === undefined) {&#xD;    window.birdbrain.rotationServos.setServoSpeed(realPort, speed);&#xD;}&#xD;&#xD;window.birdbrain.rotationServos[realPort] = speed;</l></block><list><block var="port"/><block var="speed"/></list></block></script></block-definition><block-definition s="Hummingbird LED %&apos;port&apos; %&apos;intensity&apos; %" type="command" category="looks"><header></header><code></code><translations>ko:Hummingbird LED _ _ %&#xD;de:Hummingbird LED _ _ %&#xD;pt:Hummingbird LED _ _ %&#xD;fr:Hummingbird LED _ _ %&#xD;nl:Hummingbird LED _ _ %&#xD;zh_CN:Hummingbird LED _ _ %&#xD;zh_TW:Hummingbird LED _ _ %&#xD;ar:Hummingbird ضوء _ _&#xD;dk:Hummingbird LED _ _ %&#xD;he:Hummingbird לד   % _ _&#xD;es:Hummingbird LED _ _ %&#xD;ca:Hummingbird LED _ _ %&#xD;fi:Hummingbird LED _ _ %&#xD;sv:Hummingbird LED _ _ %&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3</options></input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="intensity"/><l>0</l></list></block><script><block s="doSetVar"><l>intensity</l><l>0</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="intensity"/><l>100</l></list></block><script><block s="doSetVar"><l>intensity</l><l>100</l></block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum,intensitynum</l></list><l>//var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.LEDs === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.LEDs = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setLEDIntensity: function(port, intensity) {&#xD;            function callback() {&#xD;                if (window.birdbrain.LEDs[port] === intensity) {&#xD;                    delete window.birdbrain.LEDs[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.LEDs.setLEDIntensity(port, window.birdbrain.LEDs[port]);&#xD;                }&#xD;            }&#xD;            /*&#xD;            var report = {&#xD;                message:"L".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                intensity: intensity&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;            */&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;&#xD;            var ledURL = "http://127.0.0.1:30061/hummingbird/out/led/" + actualPort + "/" + intensity;&#xD;            xhr.open("GET", ledURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var realIntensity = Math.floor(intensitynum*2.55);&#xD;&#xD;realIntensity = Math.max(Math.min(realIntensity,255.0),0.0);&#xD;&#xD;if (window.birdbrain.LEDs[realPort] === undefined) {&#xD;  window.birdbrain.LEDs.setLEDIntensity(realPort, realIntensity);&#xD;}&#xD;&#xD;window.birdbrain.LEDs[realPort] = realIntensity;</l></block><list><block var="port"/><block var="intensity"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="396.42857142857144" y="46.57142857142853"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/led/</l><block var="port"/><l>/</l><block var="intensity"/></list></block></block></block></script><script x="396.42857142857144" y="100.28571428571436"><block s="doSetVar"><l>intensity</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="intensity"/><l>2.55</l></list><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block></script></scripts></block-definition><block-definition s="Hummingbird Tri-LED %&apos;port&apos; R %&apos;redLED&apos; % G %&apos;greenLED&apos; % B %&apos;blueLED&apos; %" type="command" category="looks"><header></header><code></code><translations>ko:Hummingbird 삼색 LED _ 빨강 _ % 초록 _ % 파랑 _ %&#xD;de:Hummingbird Dreifarben-LED _ R _ % G _ % B _ %&#xD;pt:Hummingbird LED Tricolor _ R _ % G _ % B _ %&#xD;fr:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;nl:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;zh_CN:Hummingbird 三色LED _ 红 _ % 绿 _ % 蓝 _ %&#xD;zh_TW:Hummingbird 三色LED _ 紅 _ % 綠 _ % 藍 _ %&#xD;ar:Hummingbird ضوء الصمام الثلاثي  _ _ _ _&#xD;dk:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;he:Hummingbird לד שלושה צבעים       % _ R   _   %  G _  %   B  _&#xD;es:Hummingbird Led tricolor _ R _ % G _ % B _ %&#xD;ca:Hummingbird Tri-LED _ vermell _ % verd _ % blau _ %&#xD;fi:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;sv:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2</options></input><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="redLED"/><l>0</l></list></block><script><block s="doSetVar"><l>redLED</l><l>0</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="redLED"/><l>100</l></list></block><script><block s="doSetVar"><l>redLED</l><l>100</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="greenLED"/><l>0</l></list></block><script><block s="doSetVar"><l>greenLED</l><l>0</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="greenLED"/><l>100</l></list></block><script><block s="doSetVar"><l>greenLED</l><l>100</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="blueLED"/><l>0</l></list></block><script><block s="doSetVar"><l>blueLED</l><l>0</l></block></script><list></list></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="blueLED"/><l>100</l></list></block><script><block s="doSetVar"><l>blueLED</l><l>100</l></block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>rednum</l><l>greennum</l><l>bluenum</l></list><l>var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.triLEDs === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.triLEDs = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setLEDIntensities: function(port, intensities) {&#xD;            function callback() {&#xD;                if (JSON.stringify(window.birdbrain.triLEDs[port]) === JSON.stringify(intensities)) {&#xD;                    delete window.birdbrain.triLEDs[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.triLEDs.setLEDIntensities(port, window.birdbrain.triLEDs[port]);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;&#xD;            /*  Note RGB:&#xD;                red: intensities[0],&#xD;                green: intensities[1],&#xD;                blue: intensities[2]  &#xD;            */&#xD;            &#xD;            var thisURL = "http://127.0.0.1:30061/hummingbird/out/triled/" + actualPort + "/" + intensities[0] + "/" + intensities[1] + "/" + intensities[2];&#xD;            //console.log("thisURL: " + thisURL);&#xD;            xhr.open("GET", thisURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var realIntensities = [rednum, greennum, bluenum].map(function(intensity) {&#xD;    return Math.floor(Math.max(Math.min(intensity*2.55, 255), 0));&#xD;});&#xD;&#xD;if (window.birdbrain.triLEDs[realPort] === undefined) {&#xD;    window.birdbrain.triLEDs.setLEDIntensities(realPort, realIntensities);&#xD;}&#xD;&#xD;window.birdbrain.triLEDs[realPort] = realIntensities;&#xD;</l></block><list><block var="port"/><block var="redLED"/><block var="greenLED"/><block var="blueLED"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="251.42857142857144" y="108.85714285714293"><block s="doSetVar"><l>redLED</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="redLED"/><l>2.55</l></list><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block><block s="doSetVar"><l>blueLED</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="blueLED"/><l>2.55</l></list><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block><block s="doSetVar"><l>greenLED</l><block s="reportRound"><block s="reportVariadicProduct"><list><block var="greenLED"/><l>2.55</l></list><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/triled/</l><l></l><l>/</l><l></l><l>/</l><l></l><l>/</l><l></l></list></block></block></block></script></scripts></block-definition><block-definition s="micro:bit Print %&apos;string&apos;" type="command" category="looks"><header></header><code></code><translations>ko:micro:bit 출력 _&#xD;de:micro:bit Drucke _&#xD;pt:micro:bit Imprimir _&#xD;fr:micro:bit Imprimer _&#xD;nl:micro:bit Schrijf _&#xD;zh_CN:micro:bit 打印 _&#xD;zh_TW:micro:bit 打印 _&#xD;ar:micro:bit طباعة _&#xD;dk:micro:bit Vis _&#xD;he:micro:bit הדפס  _&#xD;es:micro:bit Imprimir _&#xD;ca:micro:bit Escriu _&#xD;fi:micro:bit Näytä teksti _&#xD;sv:micro:bit Visa text _&#xD;</translations><inputs><input type="%txt">Hello</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>string</l></list><l>////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;// Encode any special characters in the URL&#xD;string = encodeURIComponent(string);&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.printObj === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.printObj = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        printString: function(string) {&#xD;            function callback() {&#xD;                if (window.birdbrain.printObj.stringToPrint === string) {&#xD;                    delete window.birdbrain.printObj.stringToPrint;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.printObj.printString(window.birdbrain.printObj.stringToPrint);&#xD;                }&#xD;            }&#xD;            /*&#xD;            var report = {&#xD;                message:"L".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                intensity: intensity&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;            */&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var printURL = "http://127.0.0.1:30061/hummingbird/out/print/" + string;&#xD;            xhr.open("GET", printURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;//TODO Turn &apos;/&apos; chars into % &#xD;&#xD;if (window.birdbrain.printObj.stringToPrint === undefined) {&#xD;  window.birdbrain.printObj.printString(string);&#xD;}&#xD;&#xD;window.birdbrain.printObj.stringToPrint = string;</l></block><list><block var="string"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="310.9999990000001" y="47"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/print/</l><block var="string"/></list></block></block></block></script><script x="335" y="1024.8333343333334"><block var="intensity"/></script></scripts></block-definition><block-definition s="micro:bit Display $nl %&apos;r1c1&apos; %&apos;r1c2&apos; %&apos;r1c3&apos; %&apos;r1c4&apos; %&apos;r1c5&apos; $nl %&apos;r2c1&apos; %&apos;r2c2&apos; %&apos;r2c3&apos; %&apos;r2c4&apos; %&apos;r2c5&apos; $nl %&apos;r3c1&apos; %&apos;r3c2&apos; %&apos;r3c3&apos; %&apos;r3c4&apos; %&apos;r3c5&apos; $nl %&apos;r4c1&apos; %&apos;r4c2&apos; %&apos;r4c3&apos; %&apos;r4c4&apos; %&apos;r4c5&apos; $nl %&apos;r5c1&apos; %&apos;r5c2&apos; %&apos;r5c3&apos; %&apos;r5c4&apos; %&apos;r5c5&apos;" type="command" category="looks"><header></header><code></code><translations>ko:micro:bit 보이기 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;de:micro:bit LED Anzeige _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;pt:micro:bit Visor _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;fr:micro:bit Display _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;nl:micro:bit Scherm _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;zh_CN:micro:bit 显示 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;zh_TW:micro:bit 顯示 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;ar:micro:bit عرض _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;dk:micro:bit Display _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;he:micro:bit מסך _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;es:micro:bit Monitor _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;ca:micro:bit Pantalla _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;fi:micro:bit Näytä _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;sv:micro:bit Skärm _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;</translations><inputs><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>r1c1, r1c2, r1c3, r1c4, r1c5, r2c1, r2c2, r2c3, r2c4, r2c5, r3c1, r3c2, r3c3, r3c4, r3c5, r4c1, r4c2, r4c3, r4c4, r4c5, r5c1, r5c2, r5c3, r5c4, r5c5 </l></list><l>////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;// Create url representation from inputs&#xD;var symbolString =  r1c1 + "\/"+ r1c2 + "\/"+ r1c3 + "\/"+ r1c4 + "\/"+ r1c5 + "\/" +&#xD;                    r2c1 + "\/"+ r2c2 + "\/"+ r2c3 + "\/"+ r2c4 + "\/"+ r2c5 + "\/" +&#xD;                    r3c1 + "\/"+ r3c2 + "\/"+ r3c3 + "\/"+ r3c4 + "\/"+ r3c5 + "\/" +&#xD;                    r4c1 + "\/"+ r4c2 + "\/"+ r4c3 + "\/"+ r4c4 + "\/"+ r4c5 + "\/" +&#xD;                    r5c1 + "\/"+ r5c2 + "\/"+ r5c3 + "\/"+ r5c4 + "\/"+ r5c5 ;&#xD;&#xD;//r1c1, r1c2, r1c3, r1c4, r1c5, r2c1, r2c2, r2c3, r2c4, r2c5, r3c1, r3c2, r3c3, r3c4, r3c5, r4c1, r4c2, r4c3, r4c4, r4c5, r5c1, r5c2, r5c3, r5c4, r5c5 &#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.symbolObj === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.symbolObj = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        printSymbol: function(symbol) {&#xD;            function callback() {&#xD;                if (window.birdbrain.symbolObj.symbolToPrint === symbol) {  // Check if arrays are equal&#xD;                    delete window.birdbrain.symbolObj.symbolToPrint;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.symbolObj.printSymbol(window.birdbrain.symbolObj.symbolToPrint);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var symbolURL = "http://127.0.0.1:30061/hummingbird/out/symbol/A/" + symbol;&#xD;            xhr.open("GET", symbolURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;if (window.birdbrain.symbolObj.symbolToPrint === undefined) {&#xD;  window.birdbrain.symbolObj.printSymbol(symbolString);&#xD;}&#xD;&#xD;window.birdbrain.symbolObj.symbolToPrint = symbolString;&#xD;&#xD;&#xD;</l></block><list><block var="r1c1"/><block var="r1c2"/><block var="r1c3"/><block var="r1c4"/><block var="r1c5"/><block var="r2c1"/><block var="r2c2"/><block var="r2c3"/><block var="r2c4"/><block var="r2c5"/><block var="r3c1"/><block var="r3c2"/><block var="r3c3"/><block var="r3c4"/><block var="r3c5"/><block var="r4c1"/><block var="r4c2"/><block var="r4c3"/><block var="r4c4"/><block var="r4c5"/><block var="r5c1"/><block var="r5c2"/><block var="r5c3"/><block var="r5c4"/><block var="r5c5"/></list></block><block s="doWait"><l></l></block></script><scripts><script x="731" y="16"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/symbol/A/</l><block var="11"/><l>/</l><block var="12"/><l>/</l><block var="r1c3"/><l>/</l><block var="r1c4"/><l>/</l><block var="r1c5"/><l>/</l><block var="r2c1"/><l>/</l><block var="r2c2"/><l>/</l><block var="r2c3"/><l>/</l><block var="r2c4"/><l>/</l><block var="25"/><l>/</l><block var="31"/><l>/</l><block var="r3c2"/><l>/</l><block var="33"/><l>/</l><block var="34"/><l>/</l><block var="35"/><l>/</l><block var="41"/><l>/</l><block var="42"/><l>/</l><block var="43"/><l>/</l><block var="44"/><l>/</l><block var="45"/><l>/</l><block var="51"/><l>/</l><block var="52"/><l>/</l><block var="53"/><l>/</l><block var="54"/><l>/</l><block var="55"/></list></block></block></block></script></scripts></block-definition></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="868"><pentrails>data:image/png;base64,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</pentrails><costumes><list struct="atomic" id="869"></list></costumes><sounds><list struct="atomic" id="870"></list></sounds><variables></variables><blocks></blocks><scripts><script x="10" y="13"><block s="receiveInteraction"><l><option>stopped</option></l></block><custom-block s="stop all"></custom-block></script></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="878"><costumes><list struct="atomic" id="879"></list></costumes><sounds><list struct="atomic" id="880"></list></sounds><blocks></blocks><variables></variables><scripts><script x="20" y="98"><block s="receiveGo"></block><block s="doUntil"><block s="reportBoolean"><l><bool>false</bool></l></block><script><block s="doSetVar"><l>list</l><block s="reportNewList"><list><block s="reportNewList"><list><l>Aditya</l><l>no lights</l></list></block><block s="reportNewList"><list><l>Ritvik</l><l>1</l></list></block><block s="reportNewList"><list><l>Gurpaij</l><l>2</l></list></block><block s="reportNewList"><list><l>Arnav</l><l>3</l></list></block><block s="reportNewList"><list><l>Leo</l><l>1 and 2</l></list></block><block s="reportNewList"><list><l>Neha</l><l>2 and 3</l></list></block><block s="reportNewList"><list><l>William</l><l>1 and 3</l></list></block></list></block></block><block s="doSetVar"><l>Values</l><block s="reportNewList"><list><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block><custom-block s="Hummingbird %txt %n"><l>Light</l><l>2</l></custom-block><custom-block s="Hummingbird %txt %n"><l>Light</l><l>3</l></custom-block></list></block></block><custom-block s="Hummingbird LED %n %n %"><l>1</l><l>100</l></custom-block><custom-block s="Hummingbird LED %n %n %"><l>2</l><l>100</l></custom-block><custom-block s="Hummingbird LED %n %n %"><l>3</l><l>100</l></custom-block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>3</l></custom-block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block></list></block><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block></list></block></list></block></list></block><script><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>90</l></custom-block><block s="doSayFor"><l>Access Denied</l><l>2</l></block></script><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><custom-block s="Hummingbird %txt %n"><l>Light</l><l>3</l></custom-block><l>5</l></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block><l>5</l></list></block><block s="reportVariadicLessThan"><list><custom-block s="Hummingbird %txt %n"><l>Light</l><l>2</l></custom-block><l>5</l></list></block></list></block></list></block><script><block s="doBroadcast"><l>no lights</l><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block></list></block><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block></list></block></list></block><script><block s="doBroadcast"><l>1 and 3</l><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>3</l></custom-block></list></block><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>2</l></custom-block></list></block></list></block><script><block s="doBroadcast"><l>2 and 3</l><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block></list></block><script><block s="doBroadcast"><l>Card combo (1)</l><list></list></block></script><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>2</l></custom-block></list></block><script><block s="doBroadcast"><l>Card combo (2)</l><list></list></block></script><script><block s="doIf"><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>3</l></custom-block></list></block><script><block s="doBroadcast"><l>Card Combo (3)</l><list></list></block></script><list></list></block></script></block></script></block></script></block></script></block></script></block></script></block></script></block></script><script x="20" y="1037.0000000000018"><block s="receiveMessage"><l>no lights</l><list></list></block><block s="doSayFor"><l>Access granted for Aditya</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>0</l></custom-block></script><script x="20" y="1110.0000000000007"><block s="receiveMessage"><l>Card combo (2)</l><list></list></block><block s="doSayFor"><l>Access granted for Gurpaij</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>0</l></custom-block></script><script x="20" y="1183.0000000000018"><block s="receiveMessage"><l>2 and 3</l><list></list></block><block s="doSayFor"><l>Access granted for Neha</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>0</l></custom-block></script><script x="20" y="1256.000000000001"><block s="receiveMessage"><l>Card combo (1)</l><list></list></block><block s="doSayFor"><l>Access granted for Ritvik</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>0</l></custom-block></script><script x="10" y="10"><block s="reportNot"><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>3</l></custom-block></list></block><block s="reportVariadicAnd"><list><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>1</l></custom-block></list></block><block s="reportVariadicLessThan"><list><l>5</l><custom-block s="Hummingbird %txt %n"><l>Light</l><l>2</l></custom-block></list></block></list></block></list></block></block></script><script x="291.99999999999966" y="1077.0000000000027"><block s="receiveMessage"><l>1 and 3</l><list></list></block><block s="doSayFor"><l>Access granted for William</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>0</l></custom-block></script><script x="21" y="1408.9999999999964"><block s="receiveMessage"><l>1 and 2</l><list></list></block><block s="doSayFor"><l>Access granted for Leo</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>0</l></custom-block></script><script x="19" y="1332.9999999999977"><block s="receiveMessage"><l>Card Combo (3)</l><list></list></block><block s="doSayFor"><l>Access denied</l><l>2</l></block><custom-block s="Hummingbird Position Servo %n %n °"><l>1</l><l>90</l></custom-block></script></scripts></sprite><watcher var="list" style="normal" x="10.000000000000227" y="10" color="243,118,29" extX="129" extY="137"/><watcher var="Values" style="normal" x="14" y="185.000002" color="243,118,29" extX="79.99999999999977" extY="70"/></sprites></stage><variables><variable name="list"><list id="1281"><item><list struct="atomic" id="1282">Mihir,no lights</list></item><item><list struct="atomic" id="1283">Aryan,1</list></item><item><list struct="atomic" id="1284">Likitha,2</list></item><item><list struct="atomic" id="1285">Nivi,3</list></item><item><list struct="atomic" id="1286">Sri,1 and 2</list></item><item><list struct="atomic" id="1287">Pablo,2 and 3</list></item><item><list struct="atomic" id="1288">Jiei,1 and 3</list></item></list></variable><variable name="Values"><list struct="atomic" id="1289">1,8,18</list></variable></variables></scene></scenes></project><media name="ehurlburt12_U3L2R" app="Snap! 11.0.8, https://snap.berkeley.edu" version="2"></media></snapdata>