<snapdata remixID="13465009"><project name="digi4all-L1-star-art-2" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="digi4all-L1-star-art-2"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="%&apos;attribute&apos; of sound %&apos;sound&apos;" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">duration<options>name&#xD;duration&#xD;length&#xD;number of channels&#xD;sample rate&#xD;samples</options></input><input type="%obj"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="attribute"/><l>name</l></list></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return sound.name;</l></block><list><block var="sound"/></list></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="attribute"/><l>samples</l></list></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>audioBuffer</l></list><l>var result, i;&#xD;if (audioBuffer.numberOfChannels &gt; 1) {&#xD;    result = new List();&#xD;    for (i = 0; i &lt; audioBuffer.numberOfChannels; i += 1) {&#xD;        result.add(new List(audioBuffer.getChannelData(i)));&#xD;    }&#xD;    return result;&#xD;}&#xD;return new List(audioBuffer.getChannelData(0));</l></block><list><custom-block s="%s of sound %obj"><l></l><block var="sound"/></custom-block></list></block></block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>sound</l></list><l>var base64, binaryString, len, bytes, i,&#xD;    arrayBuffer, audioCtx;&#xD;if (sound.audioBuffer) {&#xD;    return;&#xD;}&#xD;base64 = sound.audio.src.split(&apos;,&apos;)[1];&#xD;binaryString =  window.atob(base64);&#xD;len = binaryString.length;&#xD;bytes = new Uint8Array(len);&#xD;for (i = 0; i &lt; len; i += 1)        {&#xD;  bytes[i] = binaryString.charCodeAt(i);&#xD;}&#xD;arrayBuffer = bytes.buffer;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;audioCtx.decodeAudioData(arrayBuffer, function(buffer) {&#xD;   sound.audioBuffer = buffer;&#xD;});</l></block><list><block var="sound"/></list></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l></list><l>return !isNil(sound.audioBuffer);</l></block><list><block var="sound"/></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sound</l><l>choice</l></list><l>switch (choice) {&#xD;case &apos;sample rate&apos;:&#xD;    return sound.audioBuffer.sampleRate;&#xD;case &apos;duration&apos;:&#xD;    return sound.audioBuffer.duration;&#xD;case &apos;length&apos;:&#xD;    return sound.audioBuffer.length;&#xD;case &apos;number of channels&apos;:&#xD;    return sound.audioBuffer.numberOfChannels;&#xD;default:&#xD;    return sound.audioBuffer;&#xD;}</l></block><list><block var="sound"/><block var="attribute"/></list></block></block></script></block-definition><block-definition s="turbo %&apos;action&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>begin</l></list></block><block s="doSetVar"><l>begin</l><block s="reportGlobalFlag"><l><option>turbo mode</option></l></block></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><l><bool>true</bool></l></block><block s="doRun"><block var="action"/><list></list></block><block s="doSetGlobalFlag"><l><option>turbo mode</option></l><block var="begin"/></block></script></block-definition><block-definition s="play %&apos;samples&apos; at %&apos;sampleRate&apos; Hz" type="command" category="sound"><comment x="0" y="0" w="164" collapsed="false">play back a sound, a list of samples (single channel), or a list of lists (multiple channels) at the given sample rate.&#xD;for demo purposes this block also fast-plots the samples on the stage</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="samples"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="samples"/></custom-block></block></script><list></list></block><block s="doRun"><block s="reportJSFunction"><list><l>samples</l><l>rate</l></list><l>var audioCtx, channels, frameCount, arrayBuffer, i, source;&#xD;Note.prototype.setupContext();&#xD;audioCtx = Note.prototype.audioContext;&#xD;channels = (samples.at(1) instanceof List) ? samples.length() : 1; &#xD;frameCount = (channels === 1) ? samples.length() : samples.at(1).length(); &#xD;arrayBuffer = audioCtx.createBuffer(channels, frameCount, rate);&#xD;if (!arrayBuffer.copyToChannel) {&#xD;    arrayBuffer.copyToChannel = function (src, channel) {&#xD;        var buffer = this.getChannelData(channel);&#xD;        for (i = 0; i &lt; src.length; i += 1) {&#xD;            buffer[i] = src[i];&#xD;        }&#xD;    }&#xD;}&#xD;if (channels === 1) {&#xD;    arrayBuffer.copyToChannel(Float32Array.from(samples.asArray()), 0, 0);&#xD;} else {&#xD;    for (i = 0; i &lt; channels; i += 1) {&#xD;        arrayBuffer.copyToChannel(Float32Array.from(samples.at(i + 1).asArray()), i, 0);&#xD;    }&#xD;}&#xD;source = audioCtx.createBufferSource();&#xD;source.buffer = arrayBuffer;&#xD;source.connect(audioCtx.destination);&#xD;source.start();&#xD;source.pause = source.stop;&#xD;this.parentThatIsA(StageMorph).activeSounds.push(source);</l></block><list><block var="samples"/><block var="sampleRate"/></list></block><custom-block s="plot sound %obj"><block var="samples"/></custom-block></script></block-definition><block-definition s="%&apos;frequency&apos; Hz for %&apos;duration&apos; secs at %&apos;sample rate&apos; Hz sample rate" type="reporter" category="sound"><comment x="0" y="0" w="205" collapsed="false">generate a list of samples representing a sine wave at the given frequency, duration and sample rate</comment><header></header><code></code><translations></translations><inputs><input type="%n">440<options>a 55=55&#xD;a 110=110&#xD;a 220=220&#xD;a 440=440&#xD;a 880=880&#xD;a 1760=1760&#xD;a 3520=3520</options></input><input type="%n">1</input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doDeclareVariables"><list><l>output</l><l>sample period</l><l>duration in samples</l><l>time</l></list></block><block s="doSetVar"><l>sample period</l><block s="reportQuotient"><l>1</l><block var="sample rate"/></block></block><block s="doSetVar"><l>duration in samples</l><block s="reportMonadic"><l><option>ceiling</option></l><block s="reportVariadicProduct"><list><block var="duration"/><block var="sample rate"/></list></block></block></block><block s="doSetVar"><l>time</l><l>0</l></block><block s="doSetVar"><l>output</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doRepeat"><block var="duration in samples"/><script><block s="doAddToList"><block s="reportMonadic"><l><option>sin</option></l><custom-block s="degrees %n"><block s="reportVariadicProduct"><list><l>2</l><block s="reportVariadicProduct"><list><custom-block s="PI"></custom-block><block s="reportVariadicProduct"><list><block var="frequency"/><block var="time"/></list></block></list></block></list></block></custom-block></block><block var="output"/></block><block s="doChangeVar"><l>time</l><block var="sample period"/></block></script></block></script></block><block s="doReport"><block var="output"/></block></script></block-definition><block-definition s="PI" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definition s="degrees %&apos;radians&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="radians"/><l>180</l></list></block><custom-block s="PI"></custom-block></block></block></script></block-definition><block-definition s="find first in %&apos;list&apos; such that %&apos;test&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doIf"><block s="reportVariadicEquals"><list><block var="list"/><block s="reportNewList"><list></list></block></list></block><script><custom-block s="error %s"><l>item not found in list</l></custom-block></script><list></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list><block s="reportListItem"><l>1</l><block var="list"/></block></list></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script><list></list></block><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportCDR"><block var="list"/></block><block var="test"/></custom-block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg)</l></block><list><block var="msg"/></list></block></script></block-definition><block-definition s="sound named %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="find first in %l such that %predRing"><block s="reportGet"><l><option>sounds</option></l></block><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><custom-block s="%s of sound %obj"><l>name</l><block var="sound"/></custom-block><block var="name"/></list></block></autolambda><list><l>sound</l></list></block></custom-block></block></script></block-definition><block-definition s="plot sound %&apos;sound&apos;" type="command" category="pen"><comment x="0" y="0" w="164" collapsed="false">quickly plot the samples of a sound, a list of samples (single channel), or a list of lists (multiple channels) to the stage at a lower resolution.</comment><header></header><code></code><translations></translations><inputs><input type="%obj"></input></inputs><script><block s="doDeclareVariables"><list><l>samples</l><l>step</l><l>offset</l><l>i</l><l>stage height</l></list></block><block s="doSetVar"><l>stage height</l><custom-block s="stage height"></custom-block></block><block s="doIfElse"><block s="reportIsA"><block var="sound"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><custom-block s="%s of sound %obj"><l>samples</l><block var="sound"/></custom-block></block><block s="doSetVar"><l>step</l><block s="reportQuotient"><custom-block s="%s of sound %obj"><l>length</l><block var="sound"/></custom-block><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block></block></block></script><script><block s="doSetVar"><l>samples</l><block var="sound"/></block></script></block><block s="clear"></block><block s="up"></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="samples"/></block><l><option>list</option></l></block><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block s="reportListItem"><l>1</l><block var="samples"/></block></block><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block></block></block><block s="doSetVar"><l>offset</l><block s="reportQuotient"><block var="stage height"/><l>4</l></block></block><custom-block s="for each %upvar of %l %cs"><l>channel</l><block var="samples"/><script><block s="doSetVar"><l>i</l><l>0</l></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><block var="offset"/></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="xPosition"></block><l>0.5</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="channel"/></block><block s="reportQuotient"><block var="stage height"/><l>6.4</l></block></list></block><block var="offset"/></list></block></block></script></block></script></custom-block><block s="up"></block><block s="doChangeVar"><l>offset</l><block s="reportQuotient"><custom-block s="stage height"></custom-block><l>-2</l></block></block></script></custom-block></script><script><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportListAttribute"><l><option>length</option></l><block var="samples"/></block><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block></block></block><block s="gotoXY"><block s="reportQuotient"><custom-block s="stage width"></custom-block><l>-2</l></block><l>0</l></block><block s="down"></block><block s="setSize"><l>1</l></block><custom-block s="turbo %cs"><script><block s="doRepeat"><block s="reportVariadicProduct"><list><custom-block s="stage width"></custom-block><l>2</l></list></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportVariadicSum"><list><block s="xPosition"></block><l>0.5</l></list></block><block s="reportVariadicProduct"><list><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="samples"/></block><block s="reportQuotient"><block var="stage height"/><l>3.2</l></block></list></block></block></script></block></script></custom-block><block s="up"></block></script></block></script></block-definition><block-definition s="stage width" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.x;</l></block><list></list></block></block></script></block-definition><block-definition s="stage height" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return StageMorph.prototype.dimensions.y;</l></block><list></list></block></block></script></block-definition><block-definition s="$circleSolid-1-255-0-0 record" type="reporter" category="sensing"><comment x="0" y="0" w="192" collapsed="false">records an audio snippet and reports it as a new sound, or zero if the user cancels</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>test</l><l>pic</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var soundRecorder,&#xD;    result = false;&#xD;&#xD;soundRecorder = new SoundRecorderDialogMorph(&#xD;    function (audio) {&#xD;        if (audio) {&#xD;            result = new Sound(audio, &apos;recording&apos;);&#xD;        } else {&#xD;            result = null;&#xD;            this.destroy();&#xD;        }&#xD;    }&#xD;);&#xD;&#xD;soundRecorder.cancel = function () {&#xD;    result = null;&#xD;    this.destroy();&#xD;};&#xD;&#xD;soundRecorder.key = &apos;microphone&apos;;&#xD;soundRecorder.popUp(this.world());&#xD;return function () {return result; };</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reifyScript"><script><block s="doSetVar"><l>pic</l><block s="evaluate"><block var="test"/><list></list></block></block><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></block></script><list></list></block><list></list></block></block><block s="doReport"><block var="pic"/></block></script></block-definition><block-definition s="loudness" type="reporter" category="sensing"><header></header><code></code><translations>ca:volum del so&#xD;es:volumen del sonido&#xD;</translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter == &apos;undefined&apos;</l></block><list></list></block><script><block s="doRun"><block s="reportJSFunction"><list></list><l>navigator.getUserMedia = ( navigator.getUserMedia ||&#xD;                       navigator.webkitGetUserMedia ||&#xD;                       navigator.mozGetUserMedia ||&#xD;                       navigator.msGetUserMedia);&#xD;&#xD;var audioContext = new AudioContext();&#xD;&#xD;/*&#xD;The MIT License (MIT)&#xD;&#xD;Copyright (c) 2014 Chris Wilson&#xD;&#xD;Permission is hereby granted, free of charge, to any person obtaining a copy&#xD;of this software and associated documentation files (the "Software"), to deal&#xD;in the Software without restriction, including without limitation the rights&#xD;to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&#xD;copies of the Software, and to permit persons to whom the Software is&#xD;furnished to do so, subject to the following conditions:&#xD;&#xD;The above copyright notice and this permission notice shall be included in all&#xD;copies or substantial portions of the Software.&#xD;&#xD;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&#xD;IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&#xD;FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&#xD;AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&#xD;LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&#xD;OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&#xD;SOFTWARE.&#xD;*/&#xD;&#xD;function createAudioMeter (audioContext,clipLevel,averaging,clipLag) {&#xD;	 var processor = audioContext.createScriptProcessor(512);&#xD;	 processor.onaudioprocess = volumeAudioProcess;&#xD;	 processor.clipping = false;&#xD;	 processor.lastClip = 0;&#xD;	 processor.volume = 0;&#xD;	 processor.clipLevel = clipLevel || 0.98;&#xD;	 processor.averaging = averaging || 0.95;&#xD;	 processor.clipLag = clipLag || 750;&#xD; 	processor.connect(audioContext.destination);&#xD; 	return processor;&#xD;};&#xD;&#xD;function volumeAudioProcess (event) {&#xD;  var buf = event.inputBuffer.getChannelData(0),&#xD;      bufLength = buf.length,&#xD; 	    sum = 0,&#xD;      x;&#xD;  for (var i=0; i&lt;bufLength; i++) {&#xD;   	x = buf[i];&#xD;   	if (Math.abs(x)&gt;=this.clipLevel) {&#xD;    		this.clipping = true;&#xD;    		this.lastClip = window.performance.now();&#xD;   	}&#xD;   	sum += x * x;&#xD;  }&#xD;  var rms =  Math.sqrt(sum / bufLength);&#xD;  this.volume = Math.max(rms, this.volume*this.averaging);&#xD;};&#xD;&#xD;function gotStream (stream) {&#xD;  mediaStreamSource = audioContext.createMediaStreamSource(stream);&#xD;  window.meter = createAudioMeter(audioContext);&#xD;  mediaStreamSource.connect(meter);&#xD;};&#xD;&#xD;navigator.getUserMedia(&#xD;  {&#xD;    "audio": {&#xD;      "mandatory": {&#xD;        "googEchoCancellation": "false",&#xD;        "googAutoGainControl": "false",&#xD;        "googNoiseSuppression": "false",&#xD;        "googHighpassFilter": "false"&#xD;      },&#xD;      "optional": []&#xD;    },&#xD;  }, gotStream, nop);</l></block><list></list></block></script><list></list></block><block s="doWaitUntil"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return typeof meter != &apos;undefined&apos;</l></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Math.floor(meter.volume * 100);</l></block><list></list></block></block></script></block-definition><block-definition s="$flash map %&apos;fn&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicMap(fn, data);</l></block><list><block var="fn"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash keep %&apos;test&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicKeep(fn, data);</l></block><list><block var="test"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash combine %&apos;fn&apos; with %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>fn</l><l>data</l><l>proc</l></list><l>return proc.reportAtomicCombine(fn, data);</l></block><list><block var="fn"/><block var="data"/></list></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; by %&apos;fn&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>data</l><l>fn</l><l>proc</l></list><l>return proc.reportAtomicSort(data, fn);</l></block><list><block var="data"/><block var="fn"/></list></block></block></script></block-definition><block-definition s="$flash reverse %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>list</l></list><l>return new List(list.asArray().slice().reverse());</l></block><list><block var="list"/></list></block></block></script></block-definition><block-definition s="Leap number of hands" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).hands.length;</l></block><list></list></block></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; position of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">x<options>x&#xD;y&#xD;z</options></input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var a = {x:0, y:1, z:2}[pos]; return window.controller.frame(0).hands[num-1].stabilizedPalmPosition[a];</l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; rotation of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">yaw<options>yaw&#xD;pitch&#xD;roll</options></input><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var f = window.controller.frame(0);&#xD;switch (pos){&#xD;  case "yaw":&#xD;    return f.hands[num-1].yaw();&#xD;  case "pitch":&#xD;    return f.hands[num-1].pitch();&#xD;  case "roll":&#xD;    return f.hands[num-1].roll();&#xD;};&#xD;            &#xD;        </l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap %&apos;pos&apos; position of finger %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">x<options>x&#xD;y&#xD;z</options></input><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).fingers.length;</l></block><list></list></block></list></block></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>pos</l><l>num</l></list><l>var a = {x:0, y:1, z:2}[pos]; return window.controller.frame(0).fingers[num-1].stabilizedTipPosition[a];</l></block><list><block var="pos"/><block var="num"/></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap hand %&apos;num&apos; is pinching" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><block s="evaluate"><block s="reportJSFunction"><list><l>num</l></list><l>return window.controller.frame(0).hands[num-1].pinchStrength;</l></block><list><block var="num"/></list></block><l>0.75</l></list></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="Leap pinch strength of hand %&apos;num&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">1</input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="num"/><custom-block s="Leap number of hands"></custom-block></list></block></block><script><block s="doReport"><block s="reportVariadicProduct"><list><block s="evaluate"><block s="reportJSFunction"><list><l>num</l></list><l>return window.controller.frame(0).hands[num-1].pinchStrength;</l></block><list><block var="num"/></list></block><l>100</l></list></block></block></script><script><block s="doReport"><l>0</l></block></script></block></script></block-definition><block-definition s="Leap $flag" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller !== undefined</l></block><list></list></block><script><block s="doStopThis"><l><option>this block</option></l></block></script><list></list></block><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>var leapScript,&#xD;    done = false;&#xD;leapScript = document.createElement(&apos;script&apos;),&#xD;leapScript.onload = function () {&#xD;    done = true;&#xD;    console.log(&apos;leap is ready&apos;);&#xD;};&#xD;document.head.appendChild(leapScript);&#xD;leapScript.src = &apos;https://js.leapmotion.com/leap-0.6.4.min.js&apos;;&#xD;return function () {return done; }</l></block><list></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="test"/><list></list></block></block><block s="doRun"><block s="reportJSFunction"><list></list><l>window.controller = new Leap.Controller({enableGestures: true, background: true}); window.controller.connect();</l></block><list></list></block></script></block-definition><block-definition s="square %&apos;side&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doRepeat"><l>4</l><script><block s="forward"><block var="side"/></block><block s="turn"><l>90</l></block></script></block></script></block-definition><block-definition s="polygon corner: %&apos;corner&apos; side: %&apos;side&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doRepeat"><block var="corner"/><script><block s="forward"><block var="side"/></block><block s="turn"><l>45</l></block></script></block></script><scripts><script x="186.7744160625" y="106.000002"><block s="reportQuotient"><l></l><l></l></block></script></scripts></block-definition><block-definition s="label %&apos;text&apos; of size %&apos;size&apos;" type="command" category="pen"><comment x="0" y="0" w="90" collapsed="false">LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.</comment><header></header><code></code><translations>de:drucke _ in Größe _&#xD;ca:etiqueta _ de mida _&#xD;es:etiqueta _ de tamaño _&#xD;fr:étiquette _ d&apos;une taille de _&#xD;</translations><inputs><input type="%txt">Hello!</input><input type="%n">12</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>text</l><l>size</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    context = stage.penTrails().getContext(&apos;2d&apos;),&#xD;    rotation = radians(this.direction() - 90),&#xD;    trans = new Point(&#xD;      this.center().x - stage.left(),&#xD;      this.center().y - stage.top()&#xD;    ),&#xD;    isWarped = this.Warped,&#xD;    len,&#xD;    pos;&#xD;&#xD;if (isWarped) {endWarp(); }&#xD;context.save();&#xD;context.font = size + &apos;px monospace&apos;;&#xD;context.textAlign = &apos;left&apos;;&#xD;context.textBaseline = &apos;alphabetic&apos;;&#xD;context.fillStyle = this.color.toString();&#xD;len = context.measureText(text).width;&#xD;trans = trans.multiplyBy(1 / stage.scale);&#xD;context.translate(trans.x, trans.y);&#xD;context.rotate(rotation);&#xD;context.fillText(text, 0, 0);&#xD;context.translate(-trans.x, -trans.y);&#xD;context.restore();&#xD;pos = new Point(&#xD;  len * Math.sin(radians(this.direction())),&#xD;  len * Math.cos(radians(this.direction())));&#xD;pos = pos.add(new Point(this.xPosition(), this.yPosition()));&#xD;this.gotoXY(pos.x, pos.y, false);&#xD;this.changed();&#xD;if (isWarped) {this.startWarp(); }&#xD;stage.changed();</l></block><list><block var="text"/><block var="size"/></list></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations>de:ist _ leer?&#xD;ca:_ buida?&#xD;es:_ vacía?&#xD;fr:_ vide?&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><block var="data"/><block s="reportNewList"><list></list></block></list></block></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:behalte Elemente, die _ aus _&#xD;ca:manté els elements on _ de _&#xD;es:mantener los elementos donde _ de _&#xD;fr:garder les items tels que _ de _&#xD;</translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from %l"><block var="pred"/><block s="reportCDR"><block var="data"/></block></custom-block></block></script></block></script></block-definition><block-definition s="combine with %&apos;function&apos; items of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:kombiniere mit _ die Elemente von _&#xD;ca:combina amb _ els elements de _&#xD;es:combinar con _ los elementos de _&#xD;fr:combine avec _ les items de _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="data"/></block></block></script><list></list></block><block s="doReport"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="combine with %repRing items of %l"><block var="function"/><block s="reportCDR"><block var="data"/></block></custom-block></list></block></block></script></block-definition><block-definition s="if %&apos;test&apos; then %&apos;true&apos; else %&apos;false&apos;" type="reporter" category="control"><header></header><code></code><translations>de:wenn _ dann _ sonst _&#xD;ca:si _ llavors _ si no _&#xD;es:si _ entonces _ sino _&#xD;fr:si _ alors _ sinon _&#xD;</translations><inputs><input type="%b"></input><input type="%anyUE"></input><input type="%anyUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doReport"><block s="evaluate"><block var="true"/><list></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="false"/><list></list></block></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _&#xD;ca:per _ = _ fins _ _&#xD;es:para _ = _ hasta _ _&#xD;fr:pour _ allant de _ à _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportVariadicGreaterThan"><list><block var="start"/><block var="end"/></list></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:füge Wörter zusammen _&#xD;ca:uneix les paraules _&#xD;es:unir las palabras _&#xD;fr:fusionne les mots _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block s="reportCDR"><block var="words"/></block></custom-block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></list></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Satz _&#xD;ca:llista $arrowRight frase _&#xD;es:lista $arrowRight frase _&#xD;fr:liste $arrowRight phrase _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="join words %mult%txt"><block var="data"/></custom-block></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Satz $arrowRight Liste _&#xD;ca:frase $arrowRight llista _&#xD;es:frase $arrowRight lista _&#xD;fr:phrase $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doRun"><block var="action"/><list></list></block></script><list><l>cont</l></list></block></block><custom-block s="ignore %s"><l>3</l></custom-block></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _&#xD;ca:llança _&#xD;es:lanzar _&#xD;fr:lance _&#xD;</translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doRun"><block var="cont"/><list></list></block></script></block-definition><block-definition s="catch %&apos;tag&apos; %&apos;value&apos;" type="reporter" category="control"><header></header><code></code><translations>de:fange _ _&#xD;ca:agafa _ _&#xD;es:atrapar _ _&#xD;fr:attrape _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doSetVar"><l>tag</l><block var="cont"/></block><block s="doReport"><block s="evaluate"><block var="value"/><list></list></block></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="throw %&apos;tag&apos; %&apos;value&apos;" type="command" category="control"><header></header><code></code><translations>de:wirf _ _&#xD;ca:llança _ _&#xD;es:lanzar _ _&#xD;fr:lance _ _&#xD;</translations><inputs><input type="%s">catchtag</input><input type="%s"></input></inputs><script><block s="doRun"><block var="tag"/><list><block var="value"/></list></block></script></block-definition><block-definition s="for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations>de:für jedes _ von _ _&#xD;ca:per cada _ de _ _&#xD;es:para cada _ de _ _&#xD;fr:pour chaque _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%l"></input><input type="%cs"></input></inputs><script><block s="doUntil"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><l>1</l><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="doSetVar"><l>data</l><block s="reportCDR"><block var="data"/></block></block></script></block></script></block-definition><block-definition s="if %&apos;test&apos; do %&apos;action&apos; and pause all $pause-1-255-220-0" type="command" category="control"><header></header><code></code><translations>de:falls _ dann _ und pause $pause-1-255-220-0&#xD;ca:si _ fes _ i atura-ho tot $pause-1-255-220-0&#xD;es:si _ haz _ y páralo todo $pause-1-255-220-0&#xD;fr:si _ faire _ et mettre tout en pause $pause-1-255-220-0&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>breakpoint</l></list></block><block s="doIf"><block s="evaluate"><block var="test"/><list></list></block><script><block s="doSetVar"><l>breakpoint</l><block var="test"/></block><block s="doShowVar"><l>breakpoint</l></block><block s="doRun"><block var="action"/><list></list></block><block s="doPauseAll"></block><block s="doHideVar"><l></l></block></script><list></list></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Wort $arrowRight Liste _&#xD;ca:paraula $arrowRight llista _&#xD;es:palabra $arrowRight lista _&#xD;fr:mot $arrowRight liste _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><header></header><code></code><translations>de:Liste $arrowRight Wort _&#xD;ca:llista $arrowRight paraula _&#xD;es:lista $arrowRight palabra _&#xD;fr:liste $arrowRight mot _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="numbers from %&apos;from&apos; to %&apos;to&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:Zahlen von _ bis _&#xD;ca:nombres des de _ a _&#xD;es:números de _ a _&#xD;fr:nombres de _ à _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="from"/><block var="to"/></list></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block var="from"/><custom-block s="numbers from %n to %n"><block s="reportVariadicSum"><list><block var="from"/><l>1</l></list></block><block var="to"/></custom-block></block></block></script></block-definition><block-definition s="map %&apos;func&apos; over %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:wende _ an auf _&#xD;ca:mapeja _ sobre _&#xD;es:mapear _ sobre _&#xD;fr:appliquer _ à _&#xD;</translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="empty? %l"><block var="data"/></custom-block><script><block s="doReport"><block var="data"/></block></script><list></list></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="func"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><custom-block s="map %repRing over %l"><block var="func"/><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block-definition></blocks><stage name="Bühne" 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="1470"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAkiElEQVR4Ae3dC7SdVX0g8L3PuTeBiCQ88iRgSG7CIz4GQhHrEzvWWuu0ti6Xq0rVKstxpmVsXVodKz4YtK22jvUxOtOWWbWFypQl6tAZ1zhGcUqh8qhogCQ3EF553BswIAGSe87Z8z83JCbhhvs6r+T+vrVu7jnf+fbrd9D/3fvb394pOQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgaBcoZ+w8vawYXnO0t1P7OifQ17milESAAIEjU6Cc+cBJqfbkZ1POj0QLLjoyW6HWvSZQ6bUKqQ8BAgR6SWA0+NZnfT6lyktTatzYS3VTlyNbQAA+sr8/tSdAoI0C+4Nvo8yK4HtralTvaWNxsp5hAoagZ9gXrrkECExM4ODg2/eelOq3p0reNrHUriIwvoAe8PhGriBAYIYJHBR8q/V3pZJzSmVeSruHZhiF5rZRQABuI66sCRA48gQODb55w5Id0ftdEC0ZTumU+HEQaI2AANwaR7kQIHAUCIwdfKNhlfrilPLaPJh3HwXN1IQeERCAe+SLUA0CBLorcNjg26xWriyLf29rvnQQaJWAANwqSfkQIHDECjxj8B1tVVkTQXjDEdtAFe9JAQG4J78WlSJAoFMC4wXfkkpfKunFqdS3dqpOypkZAgLwzPietZLAlATK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mE+dJtBRAQG4o9wKI0CgXQJ5w8K7Y5OGyyL//1BWr5s1djnVc1I1Pzj2Z84S6KyAANxZb6URINBOgf7ZV8VQ9OvT7gXPPbSYsvzhuXH/98LUKDZhOBTH+64ICMBdYVcoAQLtEMh3nnBvDEPHjOjGe8vAxtkHlZFr8/e+P27ooPPeEOiSgADcJXjFEiDQLoG+q6MX/OrUOO75B5dQFkYPeF0aPO7hg897R6A7AgJwd9yVSoBAmwTyppPuj6UmP54q1ffv3fv3qYJyXhKvbhrdyKFNZcuWwGQEBODJaLmWAIEjQyD3XRMVfWnqP/YF+ytcGmfEI0g373/vBYEuCwjAXf4CFE+AQOsFYo3omOlcPhZD0R8qy8oxe0vI56RG477WlyZHAlMTEICn5iYVAQK9LjBSuTalyppUHTq3LL3/2Oj9XpgqfVt7vdrqN3MEBOCZ811rKYEZJZDvnb81Ft34aDwb/JH0rMppcV/4hAjIZkDPqP8KeruxAnBvfz9qR4DAdATqT3wzer5npfqs10Q2O1Lt0R3TyU5aAgQIECBAYIICZeXQ28rA0P3xc/UEk7iMQEcE9IA7wqwQAgS6JlCOvS7F7KtUKXd2rQ4KJjCGgAA8BopTBAgcPQJ58NnDsTrWpXE/+J+PnlZpCQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIJDS/weDocGZ27MIiAAAAABJRU5ErkJggg==</pentrails><costumes><list id="1471"><item><ref mediaID="Bühne_cst_Unbenannt"></ref></item></list></costumes><sounds><list struct="atomic" id="1472"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Stift" idx="1" x="24.99999999999727" y="25.000000001190585" heading="119.99999999996157" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="255,36,233,1" pen="tip" id="1477"><costumes><list struct="atomic" id="1478"></list></costumes><sounds><list struct="atomic" id="1479"></list></sounds><blocks></blocks><variables></variables><scripts><script x="93.6666666666668" y="45"><block s="receiveGo"></block><block s="setColor"><color>255,36,233,1</color></block><block s="down"></block><block s="doSetVar"><l>seitenlänge</l><l>110</l></block><block s="doSetVar"><l>seitenzahl</l><l>5</l></block><block s="doForever"><script><block s="clear"></block><block s="doWarp"><script><block s="doRepeat"><block var="seitenzahl"/><script><block s="forward"><block var="seitenlänge"/></block><block s="turn"><block s="reportQuotient"><l>720</l><block var="seitenzahl"/></block></block></script></block></script></block><block s="turn"><l>3</l></block></script></block></script></scripts></sprite><watcher var="seitenlänge" style="normal" x="10" y="10" color="243,118,29"/><watcher var="seitenzahl" style="normal" x="10" y="31.000001999999995" color="243,118,29"/><watcher scope="Stift" s="getPenDown" style="normal" x="10" y="52.00000399999999" color="0,161,120" hidden="true"/></sprites></stage><variables><variable name="seitenlänge"><l>110</l></variable><variable name="seitenzahl"><l>5</l></variable></variables></scene></scenes></project><media name="digi4all-L1-star-art-2" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="Unbenannt" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAOjklEQVR4Ae3VwQnAMAwEQcX995zk4Rq0nzH4fTAI9pmZ9/8eAQIECBAgsChwFrdMESBAgAABAldAgJ0CAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEBNgNECBAgACBQECAA3STBAgQIEBAgN0AAQIECBAIBAQ4QDdJgAABAgQE2A0QIECAAIFAQIADdJMECBAgQECA3QABAgQIEAgEBDhAN0mAAAECBATYDRAgQIAAgUBAgAN0kwQIECBAQIDdAAECBAgQCAQEOEA3SYAAAQIEPrsvA8+MDc1EAAAAAElFTkSuQmCC" mediaID="Bühne_cst_Unbenannt"/></media></snapdata>