<snapdata remixID="14107901"><project name="Bluekeys" app="Snap! 10.1-dev, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Bluekeys"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="is socket.io installed" type="predicate" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof io === "function"</l></block><list></list></block></block></script></block-definition><block-definition s="init" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="safely try %cs then if %upvar %cs"><script><custom-block s="install socket.io"><comment w="90" collapsed="true">Install it first!</comment></custom-block><custom-block s="connect to socket"><comment w="167" collapsed="true">Connect to the socket(required too)</comment></custom-block></script><l>error</l><script><block s="doSayFor"><block var="error"/><l>2</l></block><block s="bubble"><l>Please double click the green flag.Will reboot in 1 second.</l></block><block s="fork"><block s="reifyScript"><script><block s="doWait"><l>1</l></block><block s="doBroadcast"><l><option>__shout__go__</option></l><list></list></block></script><list></list></block><list></list></block><block s="doStopThis"><l><option>this block</option></l></block></script><comment w="90" collapsed="true">Delete this and it will throw an error!</comment></custom-block></script><scripts><script x="66" y="264.1666666666668"><block s="fork"><block s="reifyScript"><script><block s="doForever"><script><block s="doRun"><block s="reportJSFunction"><list><l>event</l></list><l>socket.emit("*", "tick");</l></block><list><l>tick</l></list></block></script></block></script><list></list></block><list></list></block></script></scripts></block-definition><block-definition s="connect to socket" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><custom-block s="is socket.io installed"></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>socketURL</l></list><l>window.socket = io(socketURL);</l></block><list><l>https://SnapMeshes.18001767679.repl.co</l></list></block></script><list></list></block></script></block-definition><block-definition s="install socket.io" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if(typeof io !== "function") {&#xD;const ioScript = document.createElement(&apos;script&apos;);&#xD;ioScript.src = &apos;https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.1/socket.io.js&apos;;&#xD;document.head.appendChild(ioScript);&#xD;console.log(&apos;Socket.io was installed.&apos;);&#xD;}</l></block><list></list></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;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="let %upvar be %s"><l>reset</l><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>var oldHandleError = proc.handleError,&#xD;    oldCatchingErrors = proc.isCatchingErrors;&#xD;&#xD;return function(){&#xD; proc.handleError = oldHandleError;&#xD; proc.isCatchingErrors = oldCatchingErrors;&#xD;}</l></block><list></list></block></custom-block><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reportJSFunction"><list><l>reset</l><l>action</l><l>handler</l><l>proc</l></list><l>proc.isCatchingErrors = true;&#xD;proc.handleError = function(error, element){&#xD; reset();&#xD; proc.context = handler;&#xD; proc.context.variables.setVar("error", error);&#xD;}&#xD;&#xD;try{&#xD; proc.evaluate(action, new List(), true);&#xD;}&#xD;catch(e){&#xD; proc.handleError(e, null);&#xD;} </l></block><list><block var="reset"/><block var="action"/><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doRun"><block var="handler"/><list></list></block><block s="doRun"><block var="return"/><list></list></block></script><list></list></block><list></list></block></script><list></list></block></list></block></script><list><l>return</l></list></block></block><block s="doRun"><block var="reset"/><list></list></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="183.33333333333334" collapsed="false">LET (FOO) BE (5)&#xD;is equivalent to&#xD;SCRIPT VARIABLES (FOO)&#xD;SET (FOO) TO (5)</comment><header></header><code></code><translations>pt:cria a variável de guião _ com valor _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><block-definition s="socket id %&apos;id&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>k</l></list><l>window.sockid=k</l></block><list><block var="id"/></list></block></script></block-definition><block-definition s="when event occurs do %&apos;data&apos; %&apos;callback&apos;" type="command" category="other"><comment x="0" y="0" w="90" collapsed="false">Executes a callback whenever a event is smitted by the server. Turns JSON/object data to a 2d list. Do not rename the upvar or you will not be able to use the event data.</comment><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>event</l><l>callback</l><l>proc</l></list><l>socket.on(event, function(eventData) {&#xD;if(eventData.type!==sockid){return}&#xD;eventData=eventData.content&#xD;if(typeof eventData === "object") {&#xD;eventData = [];&#xD;Object.keys(eventData).forEach(item =&gt; {&#xD;eventData.push([item, eventData[item]])&#xD;});&#xD;}&#xD;proc.homeContext.variables.setVar(&apos;data&apos;,eventData);&#xD;proc.evaluate(callback, new List(), true);&#xD;});</l></block><list><l>*</l><block var="callback"/></list></block></script></block-definition><block-definition s="emit event with data %&apos;data&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><custom-block s="is socket.io installed"></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>event</l></list><l>socket.emit("*", {type:sockid,content:event});</l></block><list><block var="data"/></list></block></script><list></list></block></script></block-definition></blocks><primitives></primitives><stage name="" width="480" height="360" costume="1" 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="215"><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 id="216"><item><ref mediaID="_cst_"></ref></item></list></costumes><sounds><list struct="atomic" id="217"></list></sounds><variables></variables><blocks></blocks><scripts><script x="30" y="30"><block s="receiveGo"></block><custom-block s="init"></custom-block><custom-block s="socket id %s"><l>bluekeys</l></custom-block><custom-block s="emit event with data %s"><l>bluetooth keys</l></custom-block><block s="doForever"><script><block s="doIfElse"><block s="reportKeyPressed"><l><option>left arrow</option></l></block><script><custom-block s="emit event with data %s"><l>leftkey</l></custom-block></script><script><custom-block s="emit event with data %s"><l>null</l></custom-block></script></block><block s="doIfElse"><block s="reportKeyPressed"><l><option>right arrow</option></l></block><script><custom-block s="emit event with data %s"><l>rightkey</l></custom-block></script><script><custom-block s="emit event with data %s"><l>null</l></custom-block></script></block><block s="doIfElse"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><script><custom-block s="emit event with data %s"><l>upkey</l></custom-block></script><script><custom-block s="emit event with data %s"><l>null</l></custom-block></script></block><block s="doIfElse"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><script><custom-block s="emit event with data %s"><l>downkey</l></custom-block></script><script><custom-block s="emit event with data %s"><l>null</l></custom-block></script></block></script></block></script></scripts><sprites select="0"></sprites></stage><variables></variables></scene></scenes></project><media name="Bluekeys" app="Snap! 10.1-dev, https://snap.berkeley.edu" version="2"><costume name="" center-x="125" center-y="114.5" image="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHNuYXA9Imh0dHA6Ly9zbmFwLmJlcmtlbGV5LmVkdS9ydW4iIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSBtZWV0IiB2aWV3Qm94PSIzNDMgMTc0IDI1MCAyMjkiIHdpZHRoPSIyNTAiIGhlaWdodD0iMjI5Ij48cGF0aCBzdHJva2U9Im5vbmUiIGZpbGw9InJnYigzMiwxMTQsMjU1KSIgcHJvdG90eXBlPSJWZWN0b3JQb2x5Z29uIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiIGQ9Ik0zNDMgMTc0IEwgMzUzIDE4NSBMIDM1OCAxOTQgTCAzNjEgMTk5IEwgMzYyIDIwMSBMIDM2NCAyMDMgTCAzNzUgMjE2IEwgMzgwIDIyMyBMIDM4NCAyMzAgTCAzODcgMjMzIEwgMzkwIDIzNyBMIDM5MSAyNDEgTCAzOTEgMjQzIEwgNDAzIDI2MSBMIDQyMSAyODMgTCA0MzEgMjk0IEwgNDM1IDI5NyBMIDQzOCAzMDEgTCA0NDAgMzA1IEwgNDQwIDMwNiBMIDQ0NyAzMTggTCA0NTcgMzM5IEwgNDYxIDM0NyBMIDQ2NyAzNTkgTCA0NzAgMzY0IEwgNDcwIDM2OSBMIDQ3MiAzNjkgTCA0NzUgMzczIEwgNDgxIDM3OSBMIDQ4NSAzODUgTCA0OTEgMzg4IEwgNDk0IDM5MyBMIDQ5NyAzOTUgTCA0OTkgMzk3IEwgNTAxIDM5OSBMIDUwMyA0MDEgTCA1MDQgNDAyIEwgNTA1IDQwMyBMIDUwNyA0MDMgTCA1MTAgNDAzIEwgNTEzIDQwMyBMIDUxNSA0MDMgTCA1MTggNDAzIEwgNTIwIDQwMyBMIDUyMyA0MDMgTCA1MjkgNDAyIEwgNTMzIDQwMCBMIDUzNSA0MDAgTCA1MzggMzk5IEwgNTQxIDM5OCBMIDU0NiAzOTUgTCA1NTIgMzkxIEwgNTU0IDM5MSBMIDU1NSAzOTAgTCA1NTkgMzg3IEwgNTYzIDM4MyBMIDU2NyAzNzcgTCA1NzQgMzcwIEwgNTc5IDM2NCBMIDU3OSAzNjMgTCA1ODAgMzYxIEwgNTgxIDM2MCBMIDU4MiAzNTggTCA1ODMgMzUyIEwgNTgzIDM1MCBMIDU4MyAzNDYgTCA1ODUgMzM3IEwgNTg3IDMzMyBMIDU4NyAzMzEgTCA1ODkgMzI1IEwgNTg5IDMyNCBMIDU4OSAzMjMgTCA1ODkgMzIwIEwgNTg5IDMxOSBMIDU4OSAzMTUgTCA1ODkgMzE0IEwgNTg5IDMxMiBMIDU4OCAzMDYgTCA1ODYgMzA2IEwgNTg2IDMwNSBMIDU4NiAzMDMgTCA1ODYgMzAyIEwgNTg1IDMwMSBMIDU4MyAyOTYgTCA1ODIgMjk2IEwgNTgxIDI5NSBMIDU3OCAyOTUgTCA1NzcgMjk1IEwgNTczIDI5MyBMIDU3MCAyOTMgTCA1NjggMjkyIEwgNTY0IDI5MSBMIDU2MCAyOTAgTCA1NTkgMjkwIEwgNTU1IDI4OSBMIDU1NCAyODggTCA1NDcgMjg4IEwgNTQxIDI4NiBMIDUzNiAyODUgTCA1MzEgMjg1IEwgNTI4IDI4NCBMIDUyMiAyODMgTCA1MTkgMjgzIEwgNTE3IDI4MyBMIDUxNCAyODMgTCA1MTIgMjgzIEwgNTEwIDI4MyBMIDUwOCAyODMgTCA1MDcgMjgzIEwgNTA3IDI4NyBMIDUwNyAyOTEgTCA1MDcgMjkzIEwgNTA3IDI5NCBMIDUwNyAyOTcgTCA1MDcgMzAwIEwgNTA3IDMwNCBMIDUwNyAzMDUgTCA1MDcgMzA2IEwgNTA3IDMwNyBMIDUxMSAzMDcgTCA1MTQgMzA3IEwgNTE2IDMwNyBMIDUyMCAzMDcgTCA1MjMgMzA3IEwgNTI4IDMwNyBMIDUzMCAzMDcgTCA1MzIgMzA3IEwgNTMzIDMwNyBMIDU0MCAzMDggTCA1NDIgMzA4IEwgNTQzIDMwOCBMIDU0NiAzMTEgTCA1NTEgMzEyIEwgNTUzIDMxMiBMIDU1NCAzMTMgTCA1NTYgMzE0IEwgNTU4IDMxNCBMIDU2MiAzMTkgTCA1NjUgMzIyIEwgNTY1IDMyNCBMIDU2NSAzMjUgTCA1NjMgMzMwIEwgNTYxIDMzMyBMIDU1OSAzMzcgTCA1NTggMzQyIEwgNTU2IDM0NSBMIDU1NCAzNDkgTCA1NTEgMzUzIEwgNTQ5IDM1NSBMIDU0OCAzNTcgTCA1NDggMzU4IEwgNTQ0IDM2MSBMIDU0MCAzNjYgTCA1MzcgMzY5IEwgNTMxIDM3MiBMIDUyNyAzNzQgTCA1MjUgMzc1IEwgNTIyIDM3NiBMIDUyMSAzNzcgTCA1MjAgMzc4IEwgNTE5IDM3OCBMIDUxOCAzNzkgTCA1MTcgMzc5IEwgNTE2IDM3OSBMIDUxMiAzNzkgTCA1MTEgMzc5IEwgNTExIDM3MiBMIDUxMSAzNjQgTCA1MTEgMzYwIEwgNTExIDM1NyBMIDUxMSAzNTEgTCA1MTAgMzQzIEwgNTEwIDMzMiBMIDUxMCAzMjUgTCA1MTAgMzE5IEwgNTEwIDMxNiBMIDUxMCAzMTAgTCA1MTAgMzA3IEwgNTEwIDMwMyBMIDUxMCAyOTkgTCA1MTAgMjk3IEwgNTEwIDI5NSBMIDUxMCAyOTIgTCA1MDkgMjkxIEwgNTA5IDI4OSBMIDUwOSAyODUgTCA1MDkgMjgzIEwgNTA5IDI4MiBMIDUwOSAyODEgTCA1MDkgMjgwIEwgNTA5IDI3OSBMIDUwOSAyNzggTCA1MDkgMjc3IEwgNTA5IDI3OCBMIDUwOSAyNzkgTCA1MDkgMjgwIEwgNTA5IDI4MSBMIDUwOSAyODIgTCA1MDkgMjgzIEwgNTExIDI4MyBMIDUxOSAyODIgTCA1MjYgMjc5IEwgNTMwIDI3OSBMIDUzMSAyNzkgTCA1MzcgMjc3IEwgNTQwIDI3NyBMIDU0NSAyNzQgTCA1NDggMjcyIEwgNTUxIDI3MiBMIDU1NCAyNjggTCA1NTYgMjY2IEwgNTYwIDI2NCBMIDU2NSAyNTkgTCA1NjggMjU3IEwgNTcyIDI1MyBMIDU3NSAyNDkgTCA1NzggMjQ1IEwgNTgwIDI0MCBMIDU4MSAyMzggTCA1ODMgMjM3IEwgNTgzIDIzNCBMIDU4NiAyMjYgTCA1ODggMjE5IEwgNTg4IDIxOCBMIDU4OCAyMTcgTCA1OTEgMjEwIEwgNTkyIDIwNSBMIDU5MiAyMDMgTCA1OTIgMjAyIEwgNTkzIDIwMiBMIDU5MyAxOTggTCA1OTIgMTk0IEwgNTg5IDE4OSBMIDU4OCAxODUgTCA1ODcgMTgyIEwgNTg2IDE4MCBMIDU4NiAxNzkgTCA1ODQgMTc5IEwgNTgyIDE3OCBMIDU4MSAxNzcgTCA1NzcgMTc3IEwgNTc0IDE3NyBMIDU3MSAxNzcgTCA1NjYgMTc3IEwgNTYwIDE3NyBMIDU1NSAxNzYgTCA1NTEgMTc2IEwgNTUwIDE3NiBMIDU0MiAxNzYgTCA1MzUgMTc2IEwgNTMwIDE3NiBMIDUyNSAxNzYgTCA1MjAgMTc2IEwgNTE3IDE3NiBMIDUxMiAxNzYgTCA1MTAgMTc2IEwgNTA4IDE3NiBMIDUwNyAxNzYgTCA1MDYgMTc2IEwgNTA2IDE3OCBMIDUwNiAxODAgTCA1MDYgMTgyIEwgNTA2IDE4NSBMIDUwNiAxODggTCA1MDYgMTkwIEwgNTA2IDE5MiBMIDUwNiAxOTMgTCA1MDYgMTk0IEwgNTA2IDE5NSBMIDUwOSAxOTUgTCA1MTIgMTk1IEwgNTE3IDE5NSBMIDUyMiAxOTUgTCA1MjggMTk1IEwgNTMyIDE5NSBMIDUzNSAxOTUgTCA1NDAgMTk1IEwgNTQzIDE5NSBMIDU0NiAxOTUgTCA1NDcgMTk1IEwgNTUwIDE5NSBMIDU1NCAxOTggTCA1NTYgMTk4IEwgNTU3IDE5OSBMIDU1NyAyMDAgTCA1NTggMjAxIEwgNTU5IDIwMSBMIDU2MCAyMDIgTCA1NjIgMjA1IEwgNTYyIDIwOCBMIDU2MiAyMTEgTCA1NjIgMjE0IEwgNTYyIDIxNiBMIDU2MiAyMTcgTCA1NjIgMjIxIEwgNTYyIDIyNCBMIDU2MiAyMjggTCA1NjEgMjMxIEwgNTU4IDIzNSBMIDU1NyAyMzggTCA1NTYgMjQwIEwgNTUyIDI0NSBMIDU1MCAyNDggTCA1NDggMjUwIEwgNTQ3IDI1MSBMIDU0MSAyNTIgTCA1MzYgMjU1IEwgNTMxIDI1NiBMIDUyOCAyNTcgTCA1MjUgMjU4IEwgNTIzIDI1OSBMIDUyMSAyNjAgTCA1MjAgMjYwIEwgNTE5IDI2MCBMIDUxOCAyNjAgTCA1MTcgMjYwIEwgNTE1IDI2MCBMIDUxNCAyNjAgTCA1MTQgMjU3IEwgNTE0IDI1MyBMIDUxNCAyNDkgTCA1MTQgMjQ1IEwgNTE0IDI0MSBMIDUxNCAyMzcgTCA1MTMgMjMyIEwgNTEyIDIyNiBMIDUxMSAyMjIgTCA1MTAgMjE5IEwgNTEwIDIxNyBMIDUxMCAyMTMgTCA1MTAgMjA5IEwgNTEwIDIwNiBMIDUxMCAyMDIgTCA1MDggMjAwIEwgNTA4IDE5NSBMIDUwNyAxOTMgTCA1MDcgMTkwIEwgNTA3IDE4OCBMIDUwNyAxODcgTCA1MDcgMTg2IEwgNTA3IDE4MyBMIDUwNyAxODAgTCA1MDcgMTc5IEwgNTA3IDE3OCBMIDUwNyAxNzcgTCA1MDcgMTc2IEwgMzQzIDE3NCIvPjwvc3ZnPg==" mediaID="_cst_"/></media></snapdata>