<snapdata remixID="11949042"><project name="Versuch" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Versuch"><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="reportEquals"><block var="attribute"/><l>name</l></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></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>samples</l></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></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></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="reportEquals"><block var="list"/><block s="reportNewList"><list></list></block></block><script><custom-block s="error %s"><l>item not found in list</l></custom-block></script></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></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="reportEquals"><custom-block s="%s of sound %obj"><l>name</l><block var="sound"/></custom-block><block var="name"/></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="reportEquals"><block var="pic"/><block s="reportBoolean"><l><bool>false</bool></l></block></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></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="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></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="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></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="reportGreaterThan"><block var="num"/><block s="evaluate"><block s="reportJSFunction"><list></list><l>return window.controller.frame(0).fingers.length;</l></block><list></list></block></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="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></block></block><script><block s="doReport"><block s="reportGreaterThan"><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></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="reportGreaterThan"><block var="num"/><custom-block s="Leap number of hands"></custom-block></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></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="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></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></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></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="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></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="reportGreaterThan"><block var="i"/><block var="end"/></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></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></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></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></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="reportGreaterThan"><block var="from"/><block var="to"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></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></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="1404"><pentrails>data:image/png;base64,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orWyNnmhb3rq6vLqyQ9O/N7z80/ZFQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAI/H+339N6QiPhFgAAAABJRU5ErkJggg==</pentrails><costumes><list id="1405"><item><ref mediaID="Bühne_cst_Unbenannt"></ref></item></list></costumes><sounds><list struct="atomic" id="1406"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Stift" idx="1" x="2.2737367544323206e-13" y="-5.684341886080802e-14" heading="149.99999999996157" scale="1" volume="100" pan="0" rotation="1" draggable="true" hidden="true" costume="0" color="145,26,68,1" pen="tip" id="1411"><costumes><list struct="atomic" id="1412"></list></costumes><sounds><list struct="atomic" id="1413"></list></sounds><blocks></blocks><variables></variables><scripts><script x="199.999999" y="35"><block s="receiveGo"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="doRepeat"><l>40</l><script><block s="setColor"><color>1,245,4,1</color></block><block s="down"></block><block s="write"><l>Hello</l><l>100</l></block><block s="up"></block></script></block><block s="clear"></block><block s="gotoXY"><l>0</l><l>0</l></block><block s="clear"></block><block s="setColor"><color>145,26,68,1</color></block><block s="down"></block><block s="doSetVar"><l>seitenlänge</l><l>20</l></block><block s="doSetVar"><l>seitenzahl</l><l>20</l></block><block s="doRepeat"><l>150</l><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>360</l><block var="seitenzahl"/></block></block></script></block></script></block><block s="turn"><l>10</l></block></script></block></script></scripts></sprite><watcher var="seitenlänge" style="normal" x="9.999999999999432" y="10.000000000000007" color="243,118,29"/><watcher var="seitenzahl" style="normal" x="9.999999999999432" y="31.000001999999995" color="243,118,29"/></sprites></stage><variables><variable name="seitenlänge"><l>20</l></variable><variable name="seitenzahl"><l>20</l></variable></variables></scene></scenes></project><media name="Versuch" app="Snap! 7, 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>