<snapdata remixID="12405655"><project name="multisnap ball 2.0" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes>Online multiplayer bouncing ball game!&#xD;this is an MQTT demo game thing I made one time. if two people open up this project they will connect to eachother.&#xD;if you want to try it out but no one else is playing, just open the project in two seperate windows on your computer.</notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="multisnap ball 2.0"><notes>Online multiplayer bouncing ball game!&#xD;this is an MQTT demo game thing I made one time. if two people open up this project they will connect to eachother.&#xD;if you want to try it out but no one else is playing, just open the project in two seperate windows on your computer.</notes><palette><category name="data" color="0,116,143,1"/><category name="MQTT" color="143,0,100,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="store key: %&apos;key&apos; value: %&apos;value&apos; in browser" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_store(key, val)</l><list><block var="key"/><block var="value"/></list></block></script></block-definition><block-definition s="stored data in browser" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>db_getall</l><list></list></block></block></script></block-definition><block-definition s="remove key: %&apos;key&apos; in browser" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doApplyExtension"><l>db_remove(key)</l><list><block var="key"/></list></block></script></block-definition><block-definition s="clear data in browser" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="get value from key: %&apos;key&apos; in browser" type="reporter" category="other"><comment x="0" y="0" w="199.33333333333334" collapsed="false">Reports the value previously stored under&#xD;the input key in the browser&apos;s local storage.&#xD;Reports False if the key is not found.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>db_get(key)</l><list><block var="key"/></list></block></block></script></block-definition><block-definition s="brodcast %this" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="value from key %&apos;key&apos;" type="reporter" category="data"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="from cloud %s"><block var="key"/></custom-block></block></script><scripts><script x="30" y="120.83333333333337"><block s="doReport"><custom-block s="get value from key: %s in browser"><block var="key"/></custom-block></block></script></scripts></block-definition><block-definition s="set %&apos;key&apos; to %&apos;value&apos;" type="command" category="data"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="send %s as %s to cloud"><block var="key"/><block var="value"/></custom-block></script><scripts><script x="20" y="110.66666666666669"><custom-block s="store key: %s value: %s in browser"><block var="key"/><block var="value"/></custom-block></script></scripts></block-definition><block-definition s="delete %&apos;key&apos;" type="command" category="data"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="delete %s from cloud"><block var="key"/></custom-block></script><scripts><script x="28" y="106.66666666666674"><custom-block s="remove key: %s in browser"><block var="key"/></custom-block></script></scripts></block-definition><block-definition s="send %&apos;VAR&apos; as %&apos;VAL&apos; to cloud" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="ignore %cmdRing"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/set/</l><block s="reportRandom"><l>1</l><l>100000000</l></block><l>/</l><block var="VAR"/><l>/</l><block var="VAL"/></list></block></block></custom-block></script></block-definition><block-definition s="from cloud %&apos;VAR&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>data</l></list></block><block s="doSetVar"><l>data</l><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/get/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block><l>/</l><block var="VAR"/></list></block></block></block><block s="doReport"><block var="data"/></block></script></block-definition><block-definition s="ignore %&apos;SCR&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input></inputs></block-definition><block-definition s="delete %&apos;VAR&apos; from cloud" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><custom-block s="ignore %cmdRing"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/delete/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block><l>/</l><block var="VAR"/></list></block></block></custom-block></script></block-definition><block-definition s="dev: all vars" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="credentials"/><l><option>list</option></l></block><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportTextSplit"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/all/</l><block s="reportListItem"><l>1</l><block var="credentials"/></block><l>/</l><block s="reportListItem"><l>2</l><block var="credentials"/></block><l>/</l><block s="reportRandom"><l>0</l><l>100000</l></block></list></block></block><l>▨</l></block></block><block s="doIfElse"><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="a"/></block><l></l></list></block></block><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="a"/></block><l>Invalid Credentials!</l></list></block><script><block s="doReport"><l>Incorrect Username Or Password</l></block></script><script><block s="doReport"><block var="a"/></block></script></block></script><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block></script><script><block s="doReport"><l>Please Log In</l></block></script></block></script></block-definition><block-definition s="dev: delete all vars" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="credentials"/><l><option>list</option></l></block><script><block s="fork"><block s="reifyScript"><script><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><l>Checking Credentials...</l></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block><block s="doIfElse"><block s="reportVariadicEquals"><list><custom-block s="log in %br username %s %br password %s"><block s="reportListItem"><l>1</l><block var="credentials"/></block><block s="reportListItem"><l>2</l><block var="credentials"/></block></custom-block><l>Inncorect Username Or Password</l></list></block><script><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doStopThis"><l><option>other scripts in sprite</option></l></block></script><list></list></block><list></list></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><l>Incorrect Credentials.</l></block></script><list></list></block><list></list></block></script><script><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doStopThis"><l><option>other scripts in sprite</option></l></block></script><list></list></block><list></list></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><l>TYPE "CONTINUE" WITH ALL CAPS TO CONFIRM DELETION.</l></block></script><list></list></block><list></list></block><block s="doIf"><block s="reportVariadicIsIdentical"><list><block s="getLastAnswer"></block><l>CONTINUE</l></list></block><script><block s="fork"><block s="reifyScript"><script><block s="fork"><block s="reifyScript"><script><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><l>Deleting All Vars. You Will Be Warned When Done.</l></block><block s="doStopThis"><l><option>other scripts in sprite</option></l></block><block s="doAsk"><l>Do NOT Press The Stop Button Or You Will Not Be Warned.</l></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block><block s="doWait"><l>5</l></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doStopThis"><l><option>other scripts in sprite</option></l></block><block s="fork"><block s="reifyScript"><script><block s="doAsk"><l>Do NOT Press The Stop Button Or You Will Not Be Warned.</l></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block><block s="fork"><block s="reifyScript"><script><custom-block s="ignore %cmdRing"><block s="reportURL"><block s="reportJoinWords"><list><l>https://Snap-Extensions.joecooldoo.repl.co/delall/</l><block s="reportListItem"><l>1</l><block var="credentials"/></block><l>/</l><block s="reportListItem"><l>2</l><block var="credentials"/></block><l>/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block></list></block></block></custom-block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doStopThis"><l><option>other scripts in sprite</option></l></block></script><list></list></block><list></list></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><l>All Variables Deleted.</l></block></script><list></list></block><list></list></block></script><list></list></block><list></list></block></script><list></list></block></script></block></script><script><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doAsk"><l>Please Log In.</l></block></script><list></list></block><list></list></block></script></block></script></block-definition><block-definition s="dev: all vars code with values" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>list</l><l>result</l><l>i</l><l>status</l></list></block><block s="doIfElse"><block s="reportIsA"><block var="credentials"/><l><option>list</option></l></block><script><block s="doSetVar"><l>status</l><l>Checking Credentials...</l></block><block s="doShowVar"><l>status</l></block><block s="doSetVar"><l>list</l><custom-block s="dev: all vars"></custom-block></block><block s="doIfElse"><block s="reportIsA"><block var="list"/><l><option>text</option></l></block><script><block s="doHideVar"><l>status</l></block><block s="doReport"><l>Incorrect Username Or Password</l></block></script><script><block s="doSetVar"><l>status</l><l>Getting Data...</l></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="doStopThis"><l><option>other scripts in sprite</option></l></block></script><list></list></block><list></list></block><block s="doForEach"><l>item</l><block var="list"/><script><block s="doSetVar"><l>status</l><block s="reportJoinWords"><list><l>Getting Value </l><block var="i"/><l>/</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>...</l></list></block></block><block s="fork"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>my name</l></list></block><block s="doSetVar"><l>my name</l><block var="item"/></block><block s="doAddToList"><block s="reportNewList"><list><block var="my name"/><custom-block s="from cloud %s"><block var="item"/></custom-block></list></block><block var="result"/></block></script><list></list></block><list></list></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="fork"><block s="reifyScript"><script><block s="doForever"><script><block s="doSetVar"><l>status</l><block s="reportJoinWords"><list><l>Waiting For Results </l><block s="reportListAttribute"><l><option>length</option></l><block var="result"/></block><l>/</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>...</l></list></block></block></script></block></script><list></list></block><list></list></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="result"/></block><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></list></block></block><block s="doHideVar"><l>status</l></block><block s="doReport"><block var="result"/></block></script></block></script><script><block s="doReport"><l>Please Log In</l></block></script></block></script></block-definition><block-definition s="scratch ☁︎ var from id %&apos;ID&apos; var %&apos;VAR&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/scratch/var/</l><block var="ID"/><l>/</l><block var="VAR"/><l>/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block></list></block></block></block></script></block-definition><block-definition s="day of year" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/date/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block></list></block></block></block></script></block-definition><block-definition s="replace %&apos;THING&apos; in %&apos;PHRASE&apos; with %&apos;THAT&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/replace/</l><block var="PHRASE"/><l>/</l><block var="THING"/><l>/</l><block var="THAT"/><l>/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block></list></block></block></block></script></block-definition><block-definition s="log in $nl username %&apos;USER&apos; $nl password %&apos;PASS&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>responce</l></list></block><block s="doSetVar"><l>responce</l><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/login/</l><block var="USER"/><l>/</l><block var="PASS"/><l>/</l><block s="reportRandom"><l>0</l><l>1000000000</l></block></list></block></block></block><block s="doIfElse"><block s="reportVariadicAnd"><list><block s="reportNot"><block s="reportVariadicEquals"><list><block var="responce"/><l>Invalid Credentials!</l></list></block></block><block s="reportNot"><block s="reportVariadicEquals"><list><block var="responce"/><l></l></list></block></block></list></block><script><block s="doSetVar"><l>credentials</l><block s="reportNewList"><list><block var="USER"/><block var="PASS"/></list></block></block><block s="doReport"><l>Logged In</l></block></script><script><block s="doReport"><l>Incorrect Username Or Password</l></block></script></block></script></block-definition><block-definition s="server news" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="credentials"/><l><option>list</option></l></block><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextSplit"><l></l><l>&gt;</l></block></autolambda><list></list></block><block s="reportTextSplit"><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/news/</l><block s="reportListItem"><l>1</l><block var="credentials"/></block><l>/</l><block s="reportListItem"><l>2</l><block var="credentials"/></block><l>/</l><block s="reportRandom"><l>0</l><l>100000</l></block></list></block></block><l><option>line</option></l></block></block></block></script><script><block s="doReport"><l>Please Log In</l></block></script></block></script></block-definition><block-definition s="is %&apos;INPUT&apos; gibberish?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="reportURL"><block s="reportJoinWords"><list><l>https://snap-extensions.joecooldoo.repl.co/gibberish/</l><block var="INPUT"/><l>/</l><block s="reportRandom"><l>1</l><l>1000000000</l></block></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="$cloudOutline MQTT connect to %&apos;broker&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="416.6666666666666" collapsed="false">Connect to a broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. username (some brokers need this)&#xD;2. password (some brokers need this)&#xD;3. keepalive (default time is 60 seconds but some brokers need a shorter time)&#xD;4. connection callback (ringed set of scripts to be run when connection is made or remade)&#xD;&#xD;Note: The connection callback doesn&apos;&apos;t have to be the 4th option - it just has to be the last (or only) option.&#xD;&#xD;ADVANCED: The brokers offered in the menu are accessed using default ports and  basepaths (if needed).  If accessing other brokers, the complete urls should be formed like this:&#xD;&#xD;siteURL:port/basepath &#xD;e.g mqtt.eclipseprojects.io:443/mqtt&#xD;&#xD;It is possible to have more than one connection to the same broker, for instance, using two different user/pass accounts simultaneously. To do this, add a connection id at the end of the broker:&#xD;&#xD;e.g mqtt.eclipseprojects.io:443/mqtt|1&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%mult%s"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportNot"><block s="reportJoinWords"><block var="options"/></block></block><script><block s="doSetVar"><l>options</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doDeclareVariables"><list><l>connection status</l><l>callback</l></list></block><block s="doSetVar"><l>connection status</l><l>connecting</l></block><block s="doSetVar"><l>callback</l><l></l></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l><option>last</option></l><block var="options"/></block><l><option>command</option></l></block><script><block s="doSetVar"><l>callback</l><block s="reportListItem"><l><option>last</option></l><block var="options"/></block></block><block s="doDeleteFromList"><l><option>last</option></l><block var="options"/></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>username</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>password</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>keepalive</l><block s="reportListItem"><l>3</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_connect(broker,callback,options)</l><list><block var="broker"/><block var="callback"/><block var="options"/></list></block><block s="doWaitUntil"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connecting</l></list></block></block></block><block s="doIf"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="connection status"/><l>connected</l></list></block></block><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="connection status"/></list></block></script><list></list></block></script></block-definition><block-definition s="$cloudOutline MQTT publish to %&apos;broker&apos; topic %&apos;topic&apos; payload %&apos;payload&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="200" collapsed="false">Publish a message to an MQTT broker&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1. qos (quality of service 0,1 or 2)&#xD;2. retain flag (boolean)&#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%mlt">hello</input><input type="%mult%s"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportNot"><block s="reportJoinWords"><block var="options"/></block></block><script><block s="doSetVar"><l>options</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>qos</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block><block s="reportNewList"><list><l>retain</l><block s="reportListItem"><l>2</l><block var="options"/></block></list></block></list></block></block></block><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>list</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportListAttribute"><l><option>json</option></l><block var="payload"/></block></block></script><list></list></block><block s="doIf"><block s="reportIsA"><block var="payload"/><l><option>number</option></l></block><script><block s="doSetVar"><l>payload</l><block s="reportJoinWords"><list><block var="payload"/></list></block></block></script><list></list></block><block s="doApplyExtension"><l>mqt_pub(broker,topic,payload,options)</l><list><block var="broker"/><block var="topic"/><block var="payload"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT subscribe to %&apos;broker&apos; topic %&apos;topic&apos; $nl on each message run %&apos;callback&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="239.99999999999977" collapsed="false">Subscribe to a topic on a broker&#xD;&#xD;Make sure you have already run an MQTT connect block before using this one&#xD;&#xD;You should add a script to be run inside he grey ring.&#xD;&#xD;It will be run each time a message is received&#xD;&#xD;If you click on the arrow on the grey ring twice, you can use #1 and #2 inside your script.&#xD;&#xD;#1 will contain the received payload&#xD;&#xD;#2 will contain the received topic name&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;There is only 1 option at present&#xD;1. Binary mode (boolean) If true, payload returned as plain binary byte string.  Default condition (false) it is returned as UTF text string</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%cmdRing"></input><input type="%mult%s"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doIf"><block s="reportNot"><block s="reportJoinWords"><block var="options"/></block></block><script><block s="doSetVar"><l>options</l><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doSetVar"><l>options</l><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="reportNewList"><list><l>mode</l><block s="reportListItem"><l>1</l><block var="options"/></block></list></block></list></block></block></block><block s="doApplyExtension"><l>mqt_sub(broker,topic,callback,options)</l><list><block var="broker"/><block var="topic"/><block var="callback"/><block var="options"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT unsubscribe from %&apos;broker&apos; topic %&apos;topic&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_unsub(broker,topic)</l><list><block var="broker"/><block var="topic"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT disconnect from %&apos;broker&apos;" type="command" category="MQTT"><header></header><code></code><translations></translations><inputs><input type="%s">all<options>all&#xD;broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqtt.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/mqttExtension.js</l></list></block><block s="doApplyExtension"><l>mqt_disconnect(broker)</l><list><block var="broker"/></list></block></script></block-definition><block-definition s="$cloudOutline MQTT response %&apos;broker&apos; topic %&apos;topic&apos; $nl reply %&apos;reply&apos; $nl $options-1-192-192-192 %&apos;$options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="178" collapsed="false">There is only 1 option at present&#xD;1. Binary mode (boolean) If true, payload returned as plain binary byte string.  Default condition (false) it is returned as UTF text string</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name/#</input><input type="%repRing"></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>callbackTopic</l><l>error</l></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="topic"/><block s="reifyScript"><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><l>/@</l><block var="received topic"/></list></block><l>0</l></list></block><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list><block var="received payload"/><block var="received topic"/></list></block></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block s="evaluate"><block var="reply"/><list></list></block></block></script><list></list></block><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block><block s="doSetVar"><l>callbackTopic</l><block s="reportListItem"><l><option>last</option></l><block s="reportTextSplit"><block var="received topic"/><l>@</l></block></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><block var="broker"/><block var="callbackTopic"/><block var="resp"/><list><l></l></list></custom-block></script><list></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><block s="reportListItem"><l>1</l><block var="$options"/></block></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl on response run %&apos;callback&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="command" category="MQTT"><comment x="0" y="0" w="140" collapsed="false">There is only 1 option at present&#xD;1. Binary mode (boolean) If true, payload returned as plain binary byte string.  Default condition (false) it is returned as UTF text string</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%cmdRing"></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>error</l></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list><block var="received payload"/><block var="received topic"/></list></block></script><list></list></block><block s="reifyScript"><script><block s="doRun"><block var="callback"/><list></list></block></script><list></list></block><block var="error"/></list></block></script><list><l>received payload</l><l>received topic</l></list></block><list><block s="reportListItem"><l>1</l><block var="options"/></block></list></custom-block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block><block var="payload"/><list><l></l></list></custom-block></script></block-definition><block-definition s="$cloudOutline MQTT example response reporter payload %&apos;payload&apos; topic %&apos;topic&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="90" collapsed="false">This is a simple echo example.&#xD;Topic can be used to filter the response.</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">hello</input><input type="%txt">name</input></inputs><script><block s="doReport"><block var="payload"/></block></script></block-definition><block-definition s="$cloudOutline MQTT request %&apos;broker&apos; topic %&apos;topic&apos; $nl response topic %&apos;rtopic&apos; payload %&apos;payload&apos; $nl $options-1-192-192-192 %&apos;options&apos;" type="reporter" category="MQTT"><comment x="0" y="0" w="343" collapsed="false">The response topic should be a unique value for each call e.g. use timer&#xD;&#xD;The options are not required but can be filled if needed&#xD;&#xD;1.  Timeout value - default is 3 seconds&#xD;2.  Binary mode (boolean) If true, payload returned as plain binary byte string.  Default condition (false) it is returned as UTF text string</comment><header></header><code></code><translations></translations><inputs><input type="%s">broker.emqx.io<options>broker.emqx.io&#xD;mqtt.eclipseprojects.io&#xD;test.mosquitto.org&#xD;broker.xmqtt.net</options></input><input type="%s">name</input><input type="%s">name2</input><input type="%mlt">hello</input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>resp</l><l>semaphore</l><l>timer0</l><l>timeout</l></list></block><block s="doSetVar"><l>semaphore</l><l>0</l></block><block s="doSetVar"><l>timeout</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="options"/></block><l><option>number</option></l></block><block s="reportListItem"><l>1</l><block var="options"/></block><l>3</l></block></block><block s="doSetVar"><l>resp</l><l>timeout</l></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>resp</l><block var="received payload"/></block><block s="doSetVar"><l>semaphore</l><l>1</l></block></script><list><l>received payload</l><l>received topic</l></list></block><list><block s="reportListItem"><l>2</l><block var="options"/></block></list></custom-block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><block var="broker"/><block s="reportJoinWords"><list><block var="topic"/><l>/</l><block s="reportJoinWords"><list><l>@</l><block var="rtopic"/></list></block></list></block><block var="payload"/><list><l></l></list></custom-block><block s="doSetVar"><l>timer0</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doWaitUntil"><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="semaphore"/><l>1</l></list></block><block s="reportVariadicGreaterThan"><list><block s="reportDifference"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="timer0"/></block><block s="reportVariadicProduct"><list><block var="timeout"/><l>1000</l></list></block></list></block></list></block></block><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><block var="broker"/><block s="reportJoinWords"><list><block var="rtopic"/></list></block></custom-block><block s="doReport"><block var="resp"/></block></script></block-definition><block-definition s="MQTT Extension Examples" type="command" category="MQTT"><comment x="0" y="0" w="277" collapsed="false">Open (edit) this block to look at examples how to use the MQTT Extension blocks&#xD;&#xD;Background documentation:&#xD;https://github.com/pixavier/mqtt4snap&#xD;&#xD;Last source code version (mqtt.xml and mqttExtension.js):&#xD;https://gitlab.com/cymplecy/Snap/-/tree/master/libraries</comment><header></header><code></code><translations></translations><inputs></inputs><scripts><script x="30" y="782.0333333333333"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br on response run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script><comment x="28" y="715.6999999999998" w="247" collapsed="false">Asynchronous client-server Hello World!</comment><comment x="503.9999999999998" y="788.7" w="224" collapsed="false">Step 2 bis: Send a request (timer acts as idCall).</comment><comment x="27.333333333333485" y="433.1999999999993" w="244" collapsed="false">Synchronous client-Server Hello World!</comment><script x="24.333333333333485" y="371.8666666666665"><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><l>hello</l><list><l></l></list></custom-block></script><script x="22.333333333333485" y="271.1999999999999"><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><block s="reifyScript"><script><block s="doSayFor"><block var="payload"/><l>2</l></block></script><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script><script x="20.333333333333485" y="208.2"><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list><l></l></list></custom-block></script><comment x="19.333333333333485" y="151.2" w="240" collapsed="false">PubSub Hello World!</comment><comment x="496.9999999999998" y="213.2" w="223" collapsed="false">Step 0: Connect to the broker</comment><comment x="497.9999999999998" y="291.19999999999976" w="222" collapsed="false">Step 1: Subscribe to a topic</comment><comment x="497.9999999999998" y="370.19999999999976" w="222" collapsed="false">Step 2: Publish a message</comment><comment x="525.9999999999998" y="140.2" w="191" collapsed="false">To execute the examples, single click on blocks, following the corresponding steps.</comment><comment x="503.9999999999998" y="516.6999999999998" w="220" collapsed="false">Step 1: Activate the responder.</comment><comment x="503.9999999999998" y="614.7000000000003" w="220" collapsed="false">Step 2: Send a request (timer acts as idCall).</comment><script x="28.333333333333485" y="615.1999999999994"><block s="doSayFor"><custom-block s="$cloudOutline MQTT request %s topic %s %br response topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name</l><block s="getTimer"></block><l>hello</l><list><l></l></list></custom-block><l>2</l></block></script><script x="24.333333333333485" y="499.2"><custom-block s="$cloudOutline MQTT response %s topic %s %br reply %repRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><l>name/#</l><block s="reifyReporter"><autolambda><custom-block s="$cloudOutline MQTT example response reporter payload %mlt topic %txt"><block var="payload"/><block var="topic"/></custom-block></autolambda><list><l>payload</l><l>topic</l></list></block><list><l></l></list></custom-block></script></scripts></block-definition><block-definition s="%&apos;sender?&apos; do things %&apos;portal?&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%b">true</input><input type="%b">false</input></inputs><script><block s="hide"></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><block var="server"/></list></block><block s="reportListAttribute"><l><option>json</option></l><block s="reportNewList"><list><block s="yPosition"></block><block s="direction"></block><block var="velocity"/><block var="portal?"/></list></block></block><list><l></l></list></custom-block><block s="doWait"><l>0.5</l></block><block s="doWaitUntil"><block var="my turn?"/></block><block s="gotoXY"><block s="reportIfElse"><block var="sender?"/><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><l>Stage</l></block><l>30</l></block><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>30</l></list></block></block><block s="reportListItem"><l>1</l><block var="sent list"/></block></block><block s="setHeading"><block s="reportListItem"><l>2</l><block var="sent list"/></block></block><block s="doSetVar"><l>velocity</l><block s="reportListItem"><l>3</l><block var="sent list"/></block></block><block s="doIfElse"><block s="reportListItem"><l>4</l><block var="sent list"/></block><script><block s="doGotoObject"><l>portal</l></block><block s="show"></block><block s="forward"><block var="velocity"/></block><block s="doWait"><l>0</l></block><block s="forward"><block var="velocity"/></block><block s="doWait"><l>0</l></block><block s="forward"><block var="velocity"/></block><block s="doWait"><l>0</l></block><block s="forward"><block var="velocity"/></block></script><script><block s="show"></block></script></block></script></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;ca:prova de forma segura _ i si _ _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doApplyExtension"><l>err_try(cmd, catch, err)</l><list><block var="action"/><block var="handler"/><block var="error"/></list></block><block s="doApplyExtension"><l>err_reset</l><list></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations>ca:prova de forma segura reportant _ i si _ reportant _&#xD;</translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="ask %&apos;this&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doTellTo"><l>Stage</l><block s="reifyScript"><script><block s="doAsk"><block var="this"/></block></script><list></list></block><list></list></block></script></block-definition></blocks><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="1663"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="1664"></list></costumes><sounds><list struct="atomic" id="1665"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="3"><sprite name="ball" idx="1" x="220.99348848679438" y="124.58283951439513" heading="162.61" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="1670"><costumes><list id="1671"><item><ref mediaID="ball_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="1672"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="10"><block s="doAsk"><l>am i the sender Y/N</l></block></script><script x="10" y="49"><block s="doIfElse"><block s="reportVariadicEquals"><list><block s="getLastAnswer"></block><l>y</l></list></block><script><block s="doBroadcast"><l>sender</l><list></list></block></script><script><block s="doBroadcast"><l>receiver</l><list></list></block></script></block></script><script x="10" y="162.66666666666697"><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block></script><script x="10" y="195.66666666666697"><block s="receiveGo"></block><block s="doSetVar"><l>im searching?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>im responding</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list></list></custom-block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block><block s="reifyScript"><script><block s="bubble"><block s="reportJoinWords"><list><block var="#1"/><l> recieved!</l></list></block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="#1"/><l>search</l></list></block><script><block s="doIfElse"><block s="reportNot"><block var="im searching?"/></block><script><block s="doStopThis"><l><option>other scripts in sprite</option></l></block><block s="doSetVar"><l>im responding</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRandom"><l>0</l><l>9</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><l>10</l></block></block></block><list></list></custom-block></script><script><block s="doStopThis"><l><option>this block</option></l></block></script></block></script><script><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="#1"/><l>here</l></list></block><script><block s="doIfElse"><block s="reportNot"><block var="im responding"/></block><script><block s="doWait"><l>0.5</l></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRandom"><l>0</l><l>9</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><l>10</l></block></block></block><list></list></custom-block><block s="doStopThis"><l><option>other scripts in sprite</option></l></block></script><script><block s="doStopThis"><l><option>this block</option></l></block></script></block></script><script><block s="doIf"><block s="reportIsA"><block var="#1"/><l><option>number</option></l></block><script><block s="doSetVar"><l>server</l><block var="#1"/></block><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block></custom-block><custom-block s="$cloudOutline MQTT disconnect from %s"><l>all</l></custom-block><block s="doBroadcast"><l>private server</l><list></list></block></script><list></list></block></script></block></script></block></script><list><l>#1</l></list></block><list></list></custom-block><block s="doWait"><l>5</l></block><block s="doSetVar"><l>im searching?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doBroadcast"><l>search</l><list></list></block></script><script x="10" y="1189.666666666667"><block s="receiveInteraction"><l><option>stopped</option></l></block></script><script x="10" y="1280.666666666666"><custom-block s="set %s to %s"><l>y pos</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block></custom-block><custom-block s="set %s to %s"><l>dir</l><l>0</l></custom-block><custom-block s="set %s to %s"><l>vel</l><l>0</l></custom-block></script><script x="10" y="1365.6666666666658"><block s="doAsk"><block s="reportNewList"><list><l>am i the sender</l><block s="reportNewList"><list><l>yes</l><l>no</l></list></block></list></block></block></script><script x="10" y="1451.666666666666"><block s="receiveMessage"><l>search</l><list></list></block><block s="doForever"><script><custom-block s="safely try %cs then if %upvar %cs"><script><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><l>serverconnecter</l></list></block><l>search</l><list></list></custom-block></script><l>error</l><script><block s="doStopThis"><l><option>this script</option></l></block></script></custom-block></script></block></script><script x="583" y="756.6666666666672"><custom-block s="store key: %s value: %s in browser"><l>browser message</l><l></l></custom-block><custom-block s="store key: %s value: %s in browser"><l>y pos</l><l>0</l></custom-block><custom-block s="store key: %s value: %s in browser"><l>dir</l><l>0</l></custom-block><custom-block s="store key: %s value: %s in browser"><l>vel</l><l>0</l></custom-block></script><script x="235" y="227"><block s="reportNot"><block var="im responding"/></block></script><script x="393" y="250"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRandom"><l>0</l><l>9</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><l>30</l></block></block></block></script><script x="356" y="209"><block s="reportNot"><block var="im searching?"/></block></script><script x="546" y="614"><block s="doWait"><l>0.5</l></block></script><script x="856.38671875" y="2356.166666666667"><block s="reportBoolean"><l><bool>true</bool></l></block></script><script x="898" y="2549.666666666668"><custom-block s="set %s to %s"><l>y pos</l><block s="yPosition"></block></custom-block><custom-block s="set %s to %s"><l>dir</l><block s="direction"></block></custom-block><custom-block s="set %s to %s"><l>vel</l><block var="velocity"/></custom-block><custom-block s="set %s to %s"><l>browser message</l><l>to receiver</l></custom-block></script><script x="844" y="2399"><block s="forward"><block var="velocity"/></block></script><script x="740.9931640625" y="2593.0000000000014"><custom-block s="value from key %s"><l>y pos</l></custom-block></script><script x="748.89453125" y="2639.0000000000014"><custom-block s="value from key %s"><l>vel</l></custom-block></script><script x="812" y="2686.0000000000014"><custom-block s="set %s to %s"><l>browser message</l><l></l></custom-block></script><script x="853.365234375" y="2493.0000000000014"><custom-block s="value from key %s"><l>dir</l></custom-block></script><script x="20" y="2059.833333333335"><block s="receiveMessage"><l>receiver</l><list></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><block var="server"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>my turn?</l><block s="reportNot"><block var="my turn?"/></block></block><block s="doSetVar"><l>sent list</l><block s="reportTextSplit"><block var="#1"/><l><option>json</option></l></block></block></script><list><l>#1</l></list></block><list></list></custom-block><block s="doSayFor"><l></l><l>0.001</l></block><block s="doSetVar"><l>my turn?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSetVar"><l>velocity</l><l>10</l></block><block s="setHeading"><l><option>random</option></l></block><block s="hide"></block><block s="doWaitUntil"><block var="my turn?"/></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>30</l></list></block><block s="reportListItem"><l>1</l><block var="sent list"/></block></block><block s="setHeading"><block s="reportListItem"><l>2</l><block var="sent list"/></block></block><block s="doSetVar"><l>velocity</l><block s="reportListItem"><l>3</l><block var="sent list"/></block></block><block s="show"></block><block s="doForever"><script><block s="forward"><block var="velocity"/></block><block s="doIfElse"><block s="reportVariadicLessThanOrEquals"><list><block s="xPosition"></block><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>20</l></list></block></list></block><script><custom-block s="%b do things %b"><l><bool>false</bool></l><l><bool>false</bool></l></custom-block></script><script><block s="doIfElse"><block s="reportTouchingObject"><l>portal</l></block><script><custom-block s="%b do things %b"><l><bool>false</bool></l><l><bool>true</bool></l></custom-block></script><script><block s="bounceOffEdge"></block></script></block></script></block></script></block></script><script x="839" y="1705.9999999999995"><custom-block s="set %s to %s"><l>browser message</l><l>to sender</l></custom-block><block s="hide"></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><custom-block s="value from key %s"><l>browser message</l></custom-block><l>to receiver</l></list></block></block></script><script x="555" y="1980.833333333333"><block s="gotoXY"><block s="reportAttributeOf"><l><option>right</option></l><l>Stage</l></block><custom-block s="value from key %s"><l>y pos</l></custom-block></block><block s="setHeading"><custom-block s="value from key %s"><l>dir</l></custom-block></block><block s="doSetVar"><l>velocity</l><custom-block s="value from key %s"><l>vel</l></custom-block></block><block s="show"></block><block s="doForever"><script><block s="forward"><block var="velocity"/></block><block s="doIfElse"><block s="reportVariadicLessThanOrEquals"><list><block s="xPosition"></block><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>20</l></list></block></list></block><script><custom-block s="set %s to %s"><l>y pos</l><block s="yPosition"></block></custom-block><custom-block s="set %s to %s"><l>dir</l><block s="direction"></block></custom-block><custom-block s="set %s to %s"><l>vel</l><block var="velocity"/></custom-block><custom-block s="set %s to %s"><l>browser message</l><l>to sender</l></custom-block><block s="hide"></block><block s="doWaitUntil"><block s="reportVariadicEquals"><list><custom-block s="value from key %s"><l>browser message</l></custom-block><l>to receiver</l></list></block></block><custom-block s="set %s to %s"><l>browser message</l><l></l></custom-block><block s="show"></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>30</l></list></block><custom-block s="value from key %s"><l>y pos</l></custom-block></block><block s="setHeading"><custom-block s="value from key %s"><l>dir</l></custom-block></block><block s="doSetVar"><l>velocity</l><custom-block s="value from key %s"><l>vel</l></custom-block></block></script><script><block s="bounceOffEdge"></block></script></block></script></block></script><script x="407" y="2461.666666666667"><block s="receiveMessage"><l>sender</l><list></list></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><block var="server"/></list></block><block s="reifyScript"><script><block s="doSetVar"><l>my turn?</l><block s="reportNot"><block var="my turn?"/></block></block><block s="doSetVar"><l>sent list</l><block s="reportTextSplit"><block var="#1"/><l><option>json</option></l></block></block></script><list><l>#1</l></list></block><list><l></l></list></custom-block><block s="doSayFor"><l></l><l>0.001</l></block><block s="doSetVar"><l>my turn?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doSetVar"><l>velocity</l><l>10</l></block><block s="setHeading"><l><option>random</option></l></block><block s="show"></block><block s="doForever"><script><block s="forward"><block var="velocity"/></block><block s="doIfElse"><block s="reportVariadicGreaterThanOrEquals"><list><block s="xPosition"></block><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><l>Stage</l></block><l>20</l></block></list></block><script><custom-block s="%b do things %b"><l><bool>true</bool></l><l><bool>false</bool></l></custom-block></script><script><block s="doIfElse"><block s="reportTouchingObject"><l>portal</l></block><script><custom-block s="%b do things %b"><l><bool>true</bool></l><l><bool>true</bool></l></custom-block></script><script><block s="bounceOffEdge"></block></script></block></script></block></script></block></script><script x="609" y="477.8333333333337"><block s="doWait"><l>0.5</l></block></script><script x="46" y="2728.500000000002"><block s="receiveInteraction"><l>clicked</l></block><block s="setHeading"><l><option>random</option></l></block></script><script x="453" y="1108.6666666666665"><block s="receiveMessage"><l>private server</l><list></list></block><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list></list></custom-block><block s="doIfElse"><block var="im searching?"/><script><block s="doBroadcast"><l>sender</l><list></list></block></script><script><block s="doBroadcast"><l>receiver</l><list></list></block></script></block></script><script x="727" y="1324.333333333333"><block s="receiveMessage"><l>receiver</l><list></list></block></script><script x="15" y="1419.666666666666"><custom-block s="store key: %s value: %s in browser"><l>browser message</l><l>to receiver</l></custom-block></script><script x="618" y="1321.000000000001"><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list></list></custom-block></script><script x="416" y="1371"><block s="receiveKey"><l><option>k</option></l><list></list></block><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list></list></custom-block><block s="doSetVar"><l>im searching?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>im responding</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="ask %s"><l>server address? can be anything, preferrably 10 characters long</l></custom-block><block s="doSetVar"><l>server</l><block s="getLastAnswer"></block></block><custom-block s="$cloudOutline MQTT subscribe to %s topic %s %br on each message run %cmdRing %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><block var="server"/></list></block><block s="reifyScript"><script><custom-block s="$cloudOutline MQTT unsubscribe from %s topic %s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><block var="server"/></list></block></custom-block><block s="doBroadcast"><l>sender</l><list></list></block></script><list></list></block><list></list></custom-block></script><script x="162" y="1595.333333333333"><block s="show"></block><block s="goToLayer"><l><option>front</option></l></block><block s="bubble"><l>im receiving!</l></block></script><script x="400" y="1680"><block s="receiveKey"><l><option>j</option></l><list></list></block><custom-block s="$cloudOutline MQTT connect to %s %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><list></list></custom-block><block s="doSetVar"><l>im searching?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>im responding</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="ask %s"><l>enter server address</l></custom-block><block s="doSetVar"><l>server</l><block s="getLastAnswer"></block></block><custom-block s="$cloudOutline MQTT publish to %s topic %s payload %mlt %br $options-1-192-192-192 %mult%s"><l>broker.emqx.io</l><block s="reportJoinWords"><list><l>Starbox614Multisnapball</l><block var="server"/></list></block><l>hello</l><list></list></custom-block><block s="doBroadcast"><l>receiver</l><list></list></block></script></scripts></sprite><watcher var="velocity" style="normal" x="9.999999999998977" y="9.999999999999915" color="243,118,29" hidden="true"/><watcher var="sent list" style="normal" x="20.00000000000034" y="19.999999999999986" color="243,118,29" hidden="true"/><watcher var="server" style="normal" x="10.99999999999909" y="34.999999999999986" color="243,118,29" hidden="true"/><watcher var="my turn?" style="normal" x="11.999999999999773" y="63.99999999999997" color="243,118,29" hidden="true"/><watcher var="im searching?" style="normal" x="5.999999999999432" y="103.00000000000006" color="243,118,29" hidden="true"/><watcher var="im responding" style="normal" x="6.9999999999990905" y="136.00000200000008" color="243,118,29" hidden="true"/><sprite name="portal" idx="2" x="167.19612504444285" y="32.006309390946285" heading="90" scale="0.75" volume="100" pan="0" rotation="1" draggable="true" costume="2" color="96.9,52.32600000000001,0,1" pen="tip" id="2457"><costumes><list id="2458"><item><ref mediaID="portal_cst_Untitled"></ref></item><item><ref mediaID="portal_cst_Untitled(2)"></ref></item></list></costumes><sounds><list struct="atomic" id="2459"></list></sounds><blocks></blocks><variables></variables><scripts><script x="96" y="60"><block s="receiveGo"></block><block s="setScale"><l>75</l></block></script><script x="212" y="167"><block s="receiveMessage"><l>sender</l><list></list></block><block s="setEffect"><l><option>color</option></l><l>10</l></block></script><script x="199" y="280"><block s="receiveMessage"><l>receiver</l><list></list></block><block s="setEffect"><l><option>color</option></l><l>50</l></block></script><script x="15" y="185"><block s="receiveKey"><l><option>space</option></l><list></list></block><block s="doIfElse"><block s="reportShown"></block><script><block s="hide"></block></script><script><block s="show"></block></script></block></script></scripts></sprite><sprite name="Sprite" idx="3" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="1" color="183.6,33.04799999999999,0,1" pen="tip" id="2493"><costumes><list id="2494"><item><ref mediaID="Sprite_cst_Screen Shot 2023-09-27 at 11"></ref></item></list></costumes><sounds><list struct="atomic" id="2495"></list></sounds><blocks></blocks><variables></variables><scripts><script x="201" y="164"><block s="receiveGo"></block><block s="hide"></block></script></scripts></sprite></sprites></stage><variables><variable name="velocity"><l>10</l></variable><variable name="im searching?"><bool>true</bool></variable><variable name="im responding"><bool>false</bool></variable><variable name="server"><l>3507535237</l></variable><variable name="my turn?"><bool>true</bool></variable><variable name="sent list"><list id="2502"><item><l>95.95406432100533</l></item><item><l>162.61</l></item><item><l>10</l></item><item><bool>true</bool></item></list></variable></variables></scene></scenes></project><media name="multisnap ball 2.0" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Untitled" center-x="14" center-y="13" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAaCAYAAACkVDyJAAAAAXNSR0IArs4c6QAAAhJJREFUSEvllj1oFEEUx39vL+4eWviBjSLIlUIIGoS7m2uCWAgiWCgIisVBGhVtxEJQMYKF2AiaRrhCFAQtBBEsVGyylysMGgTLWIg24keh7m5y++T2PjTJJXu4d9v4qmFn3v8383aY/xN6iLzPSEbZizAK5BQ2NNIEvgFzKDN14VnNYTZOTlZaMKZkA58ywilgR5xQa/4dyk3bofJS8LrldAUWPfYhTArkegQtWqbNU5+oZnm6NH8xULFMwFXgXLNiiUKBa67NeYSwrfRHtAm7DZQTYZYnV1yb8Ta0Ayz5XFS43GdYJCdwacphojWGQkDeUlzAGgQQCEPBTNvUBEWKAVWB/IBgkaxCrWpTlELAqKW8GiSsrW0Ju6XkM6FwIQ2gwJUG8I3CSErAWTF+o7zpxf8BnAeGUirqgpiA5yh7UgEKL8R4nEa4kQpQOSPmF9uxmOuDO8TtWQnJRY+38bkLHI3LSDh/z3U4FgHzP9mWyfAWWJ9QdKX07/U6w7W1fOjYU8HjgCU8GoBjhKFycDrL4449tbdVDCiLRibcL5sKVRiv2lSWO37ri/HYj3AH2JSwvF9QjrtZnvyt07VvKf1gqw5xHTjyD7e38TbflwXOTq3j49JNr9ooGZ9hVU4KHELYvOqJlc8KD0W45TrRBewaPXVmh5XMp3l2KuxSJYeyMVITviK8t2BmyxpePxDqcb/hN7VqmOSluZbbAAAAAElFTkSuQmCC" mediaID="ball_cst_Untitled"/><costume name="Untitled" center-x="15" center-y="13" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAaCAYAAACgoey0AAAAAXNSR0IArs4c6QAAAY5JREFUSEvtljtTwkAUhc+CQ4JWpsEAjv4ArQlxRsBGHR+dnZX+Lq3s7HyM2gg4I4Raf4COPKQJlZIwahyQRAgk2awDDabMnnO+5Obm7hJQXvosDBop1wCh0bmK0gb4GwFNmiC7Zl1FOEegOXkdwUkNGzkRVyxQ05OuYbPI43pYxiDYQEAX8PkXoN3LqQiC4Kv3fj94BFATZof3gWkbiLUavY1ngaUWEvkIFNZQGl+qDkkJodTW/oANEF3o/wY0QSwaTkUABEYHPOoSDzRbA2QCweMus1l2Mnng/65mGQp+Pe3R2fmP5SYWslE8+Q1g0WeqWCyE8WzN6nF1t7lRWODEO+J3MbywvAWtZ7WC+dI0yr+bRNcpadjJizijDfKjS9Wwq/A4twaI3Zxs4SAXwZGfUC9tuo7DYgjHzieQ7oqsYSsr4sIrkGY9U8N2gcelXet42Ft5Q/Q2jgpNuJNmrYzY/Qyqw9Y9z8CyjqXsHB78PEDmFcsFDo9uHk+wad4zEDwR8OEWtq9i6pTQnVC/AWH0cjY4veQcAAAAAElFTkSuQmCC" mediaID="portal_cst_Untitled"/><costume name="Untitled(2)" center-x="25" center-y="24" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAxCAYAAACYq/ofAAAAAXNSR0IArs4c6QAABgVJREFUaEPFmlmMFFUUhr9bvc+wJRMBERgwDhggUdnCYBQTQSAEo3HB6KNEfXNJjEbwSTAuicqbCz5qxGgwImF9EBcwDBkhQSJgHIZBQcwkgjK9Tdc1p6tr0l1d3VXVVa0nmcxD33vO+e9Z76mriICGYUIKZsdhugFTFXSZMFFDhwFxEWHCqIIRA65oGDbh0ihcyMNAF1wNq4ZqlYGGVBFuAeYDCzTMBmboChAg04B3VoAouAQMKRgATgI/JeCEgnwrOgUGomFCHnoV3AEsrACZ2Yrwqj3nBQjQr+HbFBxRAa0UCEgW7orBeg3LgSVALCQA5/YS0KfgcAl2ZeBrv/x9AdHQnYe1BmzQsALwtc+vEi7rtIZDwI4U7FEw6MXLU6ERWBaDJ4E1wFQvhhH/LnG0twTvdcAPzXg3BVKEe0x4tgIiYh0DsdtrwNsJ2N9oV0MgOVinYBPQG0hk+xYf0bA1DbvdRLgCycEqBVsrAd0+1YJz7tOwKQ0HnFvrgBRgMfCOhtuDy2n/DgXfA88k4Vi1tBog12BaHN4H1rVfpVASdo/CE53wu82lBkjeioktoUT8d5s3pyz3L9MYEHEpDZ8B3VHpciYBVw2L2wQT5hSj4lzmM6jgQdvFykA0qAJ8DDwSlaihOOzprOV2YxEmlSIF9UkSHlWgy0AKsFTDQWB8VEAuxmGXA0g175UjIMBC0t8KVibhqA1ku4bHQzKt2/5nDAbLTTz0p+u5CxABFIYUfJiEjeoaXB+H/na3H+fjcDlWDygCMHKvWajy8BDwaZhTCbLXtlK1hSIA87AE+QcaNgZRJoq1x1K11gkTMwq2qxwMKJgVhXJBeVSDWZiDxS3dDctZ95y4lg6qQFTrowIi+rQMpLrYVQMLUvj+VyAC4HwCfk00tosE78yidyU/0AEDFT5hXCuQRWwLuNWDRpCaAfpKOr5KjZH966UOjLbutL5cS07/YEe9EDlFJ7kBXXsNZlSUlPT7XQbkv01hreHLIo1ANEqX0pr85ih8U4sghf2ciztGAcITiFvjJ4JvKDV3A3ufjEJUk6lAVCA8gbRatI6m4Xiq3u06TZhSsv4mj1r/oyKJESlDSTeG4sc7x1m/+K28gwnY54gnad2X52B6gGDOKzhb0aqnAKnm1a4gQI5jzXBdSXxeyG9GkaTglppXZGFuwf/5n07Cocr02MfeE9KivKHgef8iGq90iyl79SwZkgVo2cWqYl2hRXlY5JIhbd4a3lRFuNu0LlWhyVmpx8vcs2omLxZZlvN0E06m4HDV/UUOQA6iERmwUmmYVICjQE9YJG4thygkitm0IG/FSzOqtoaP9RJKS8vJMQ+vAJvbAURqx35H8MvpTiuBWxAHtYZMfVLwsg3kZg0HFEwPA6ZRE1gduNX8JRM5wUhysVsXL2touKBgVQp+HitXeXgNeKEdQITncAxOJ2rdzEuWV2wAr6fgReEzBiQHPQp2ALd5CWj0u5+2XACJu12M1TaNTp4+Uu6PGjak4WwNkEqsbADeBSa1AsYPkGq+NiinLImhruZV/y/gqZR18GWq6YQ0pMXFFDwdFojsj2Co4KqGhm3iUgrG8l9dS5eF2Qa8BdwXFIzbUM5vaxNA1hcmPJexvgaPkWtv+g/cGoctqoWpvNu4Z/UIdIefKspwQabwm8dZbVUNNWyyK0Ptl4D7A5xWeanTMhG16zsVvOr8LuIaI06FC1YzKfFyr4auIICqL2RhrrEKhoEvgW1JONFIB8+vulnojsMDJjxWeSDgG499nb2u9XtHvwEfjcLnGY9P1J5ARGsNiTysUSDp+U55quEbTWsLh4BvtPWdfa8CzwjzBcTWJQc3yYMBA1ZrWBL1hLI8MYQ+E/YpOJSGX/yeQyAgNtM8zFPWE45eE+YbMEfDZL9CHWnzsglnDOstinyC7kvBqaC8WgJiC5FRVBLmlWCuAT0mzDBgiiQGDRMNyIhbVipv0YSsgisSwCb8YcCQCWelDSvAqU64GBSAr6wVhGkWZmnojVmZbk4ljgRQuYmXt1rSO8rTJuBMyXrSdCQD54LIabT2X13TBGK5MpllAAAAAElFTkSuQmCC" mediaID="portal_cst_Untitled(2)"/><costume name="Screen Shot 2023-09-27 at 11" center-x="239" center-y="179" image="data:image/png;base64,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" mediaID="Sprite_cst_Screen Shot 2023-09-27 at 11"/></media></snapdata>