<snapdata remixID="13259323"><project name="t9 input" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><notes>press the number keys repeatedly&#xD;press right arrow key to fix a letter&#xD;press up and down for caps and lowercase&#xD;you can also type on the normal letters if youre boring</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAEQElEQVR4Xu2dO3JTQRBFJarMssgI2ItTMkIyUvZC4Ix1wEbsKoxlXNiyPp5R98zt7jnOqJrXn9PH855GEt7+vv91v+EHAiICWwQUkSftIwEERIRnArt74XYuEATc4/3u4V9/3p6AYFBvF5VzBQLmnFuZql8IuNt7eT1SZrJJGmEHTDKoqmUiYKnJBruLNTwrI2ApAfM1g4D5Zlaq4j0Bb+/uDpp7f3VVquHUzexOiHYnRYV+9gS8/vp58+Pnzf/2Pn34uPn+5VuhdmklGgFuwdEmslg9CKgaeMMrRFVpM/Mi4Eza5DoggIBIISWAgFL8JEdAHJASQEApfpIjIA5ICSCgFD/JERAHpARqC8hhr1SuluS1BWwhwBopAQSU4rcnb/walT3RoAgIOAgsYdsIIGAbJ1YNIjBYwDM3iIIfrhw0o9JhDwXklWPpgUdrbvAOGK1d6olG4KyAbIanxwUbH5XZAX04EuVCAgh4ITgu8yFQWkBukz6SjIxSWsDz4IL9NxYjp6yI3XjMtrCAiqmQ8zUBBIzqxLHnh4LPFAgYVcBF6kLASwddcDe6FIXlOgS00ONaMwEENCMkgIUAAlroca2ZQGwBec4yDzh6gNgCRqdXqj7NwTwCTpdIM+jpbTYmRMBGUCwbQwABx3AlaiMBBGwExbIxBHwEbPzkw5gWiJqZgI+AmQkcrZ0XCsewjDgVQ8Byvzy5GhILyE6TSxf/asUC+jdExFwEEDDXvMpVi4DlRpqrIQTMNa9y1SJguZF2NiQ+w0XAznmx3JcAAvryJFonAQTsBMZyXwII6MuTaJ0EELATGMt9CSCgL0+idRJAwE5gLPclMFdA8ZmTLzqieRCYK6BHxa9iZP9DLQOQOIWcQza9gE60CSMigIAi8KT9RwABMUFKAAGl+EkeT8AR33xhzmEJxBOwARWONkBKsiSlgEnYUmYDAQRsgMSScQQQcBzb58i8A3SSMgLOEJAcCKhyYM4bWqru7HnZAe0MiWAgMF9AnocM46p36XwB6zHc64hbbt+AEbCPF6udCSCgM1DC9RFAwD5erHYmgIDOQAnXRwAB+3ix2pkAAjoDJVwfAQTs48VqZwK+AnLI7Dye+uF8BazPiw6dCSCgM1DC9RFAwD5e66ye9DiFgE9K8T0Tze8WAmq4k/WJwNoCTrrNYNtpAmsLiBlyAi8E5O+2mafxuKPCsYcjO2APrYO1fPzUhO/hYqOADMA6gNWvNwq4Oj76txJAQCtBrjcRQEATvpoXzzyUR8CaDqXpCgHTjKpmoQhYc65pukLANKOqWegRATnJrznqmF2xA8acyzJVIeAyo47ZaHABeasvpjZ+VQUX0K9RIsUkgIAx57JMVQi4zKhjNhpawJnvScYcT/2qQgtYHz8dIiAOSAmEEJDDFqkD0uQhBJQSILmUQEkB2VGlTnUlLylgFwEWSwkgoBQ/yf8CKqH8UPS0TxUAAAAASUVORK5CYII=</thumbnail><scenes select="1"><scene name="t9 input"><notes>press the number keys repeatedly&#xD;press right arrow key to fix a letter&#xD;press up and down for caps and lowercase&#xD;you can also type on the normal letters if youre boring</notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="costume from text %&apos;text&apos; size %&apos;size&apos;" type="reporter" category="looks"><header></header><code></code><translations>de:Kostüm aus Text _ Größe _&#xD;pt:um traje com o texto _ de tamanho _&#xD;ca:vestit amb el text _ i mida _&#xD;</translations><inputs><input type="%s">A</input><input type="%n">72</input></inputs><script><block s="doDeclareVariables"><list><l>costume</l><l>x</l><l>y</l><l>dir</l><l>cst</l><l>trails</l><l>pen state</l></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>cst</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="setHeading"><l>90</l></block><block s="doSwitchToCostume"><l><option>Turtle</option></l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="write"><block var="text"/><block var="size"/></block><block s="gotoXY"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><l>0</l></block><block s="doSetVar"><l>costume</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="costume"/><block s="reportJoinWords"><list><block var="text"/></list></block></list></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="doIf"><block var="pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="costume %&apos;cst&apos; with background RGBA %&apos;rgb&apos; padding %&apos;padding&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%n">200</input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>old</l><l>clr</l><l>new</l><l>x</l><l>y</l><l>dir</l><l>trails</l><l>flat</l><l>old size</l><l>old pen state</l></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>y</l><block s="yPosition"></block></block><block s="doSetVar"><l>dir</l><block s="direction"></block></block><block s="doSetVar"><l>old</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSetVar"><l>clr</l><block s="getPenAttribute"><l><option>r-g-b-a</option></l></block></block><block s="doSetVar"><l>flat</l><block s="reportGlobalFlag"><l><option>flat line ends</option></l></block></block><block s="doSetVar"><l>old size</l><block s="getPenAttribute"><l><option>size</option></l></block></block><block s="doSetVar"><l>old pen state</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSetVar"><l>trails</l><block s="reportPenTrailsAsCostume"></block></block><block s="clear"></block><block s="gotoXY"><block s="reportMonadic"><l><option>neg</option></l><block s="reportVariadicSum"><list><block s="reportQuotient"><block s="reportGetImageAttribute"><l><option>width</option></l><block var="cst"/></block><l>2</l></block><block var="padding"/></list></block></block><l>0</l></block><block s="setHeading"><l>90</l></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><l><bool>true</bool></l></block><block s="setSize"><block s="reportVariadicSum"><list><block s="reportGetImageAttribute"><l><option>height</option></l><block var="cst"/></block><block s="reportVariadicProduct"><list><block var="padding"/><l>2</l></list></block></list></block></block><block s="setPenColorDimension"><l><option>r-g-b(-a)</option></l><block var="rgb"/></block><block s="down"></block><block s="setXPosition"><block s="reportMonadic"><l><option>neg</option></l><block s="xPosition"></block></block></block><block s="up"></block><block s="doSwitchToCostume"><block var="cst"/></block><block s="doGotoObject"><l><option>center</option></l></block><block s="gotoXY"><block s="reportMonadic"><l><option>neg</option></l><block s="reportGet"><l><option>center x</option></l></block></block><block s="reportMonadic"><l><option>neg</option></l><block s="reportGet"><l><option>center y</option></l></block></block></block><block s="doStamp"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSetVar"><l>new</l><block s="reportPenTrailsAsCostume"></block></block><block s="doApplyExtension"><l>obj_name(obj, name)</l><list><block var="new"/><block s="reportIfElse"><block s="reportListContainsItem"><block s="reportTextSplit"><block s="reportAttributeOf"><l><option>costume name</option></l><l>Sprite</l></block><l><option>word</option></l></block><l>button</l></block><block s="reportAttributeOf"><l><option>costume name</option></l><l>Sprite</l></block><block s="reportJoinWords"><list><block s="reportAttributeOf"><l><option>costume name</option></l><l>Sprite</l></block><l> button</l></list></block></block></list></block><block s="clear"></block><block s="doGotoObject"><l><option>center</option></l></block><block s="doSwitchToCostume"><block var="trails"/></block><block s="doStamp"></block><block s="doSwitchToCostume"><block var="old"/></block><block s="gotoXY"><block var="x"/><block var="y"/></block><block s="setHeading"><block var="dir"/></block><block s="setPenColorDimension"><l><option>r-g-b(-a)</option></l><block var="clr"/></block><block s="doSetGlobalFlag"><l><option>flat line ends</option></l><block var="flat"/></block><block s="setSize"><block var="old size"/></block><block s="doIf"><block var="old pen state"/><script><block s="down"></block></script><list></list></block><block s="doReport"><block var="new"/></block></script><scripts><script x="255" y="186.19999999999996"><custom-block s="costume %s with background RGBA %n padding %n"><custom-block s="costume %s with background RGBA %n padding %n"><custom-block s="costume from text %s size %n"><l>Snap!</l><l>36</l></custom-block><l>200</l><l>10</l></custom-block><l>100</l><l>2</l></custom-block></script><comment x="248.685546875" y="121.03333333333337" w="106" collapsed="false">Use this block to make &quot;clickable&quot; buttons:</comment></scripts></block-definition><block-definition s="multiline %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o texto multilinha _&#xD;ca:multilínia _&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block var="text"/></block></script></block-definition><block-definition s="substring of %&apos;string&apos; before %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="175.33333333333334" collapsed="false">Reports the part of the first string up to the first instance of the second string inside it.  If the second string isn&apos;t found, reports the entire first string.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;ca:part del text _ anterior a _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><block var="string"/><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>1</l></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><l>1</l><block s="reportDifference"><block var="index"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="substring of %&apos;string&apos; after %&apos;marker&apos;" type="reporter" category="operators"><comment x="0" y="0" w="203.33333333333334" collapsed="false">Reports the portion of the first input string starting after the first occurrence of the second string.  If the second string isn&apos;t found in the first string, reports an empty string.</comment><header></header><code></code><translations>pt:o texto de _ depois de _&#xD;ca:part del text _ posterior a _&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>end</l></list></block><block s="doSetVar"><l>index</l><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block></block><block s="doSetVar"><l>end</l><block s="reportVariadicSum"><list><block var="index"/><block s="reportTextAttribute"><l><option>length</option></l><block var="marker"/></block></list></block></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="index"/><l>0</l></list></block><l></l><block s="reportIfElse"><block s="reportVariadicGreaterThan"><list><block var="end"/><block s="reportTextAttribute"><l><option>length</option></l><block var="string"/></block></list></block><l></l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="string"/><block var="end"/><l></l></custom-block></block></block></block></script></block-definition><block-definition s="position of %&apos;small&apos; in %&apos;large&apos;" type="reporter" category="operators"><comment x="0" y="0" w="294" collapsed="false">Reports the character position (starting from 1) of the beginning of the first input string inside the second input string.&#xD;If it&apos;s not found, reports 0.</comment><header></header><code></code><translations>pt:a posição de _ em _&#xD;ca:posició de _ en _&#xD;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportGlobalFlag"><l><option>case sensitivity</option></l></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block var="small"/><block var="large"/></list></block><block s="reportApplyExtension"><l>txt_indexof(sub, txt)</l><list><block s="reportTextAttribute"><l><option>lower case</option></l><block var="small"/></block><block s="reportTextAttribute"><l><option>lower case</option></l><block var="large"/></block></list></block></block></block></script></block-definition><block-definition s="substring of %&apos;str&apos; from position %&apos;start&apos; to position %&apos;end&apos; inclusive" type="reporter" category="operators"><comment w="297.3333333333333" collapsed="false">Reports the portion of the first input (string) starting at the position given by the second input (counting from 1, like LETTER n OF) and ending at the position given by the third input (also counting from 1).  If the third input is empty, reports the portion from the first position to the end of the string.&#xD;If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.</comment><header></header><code></code><translations>pt:o texto de _ entre as posições _ e _ , inclusive&#xD;ca:part del text _ des de la posició _ fins _&#xD;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportVariadicLessThan"><list><block var="end"/><block s="reportDifference"><l>0</l><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></block><l>0</l></list></block><script><block s="doReport"><l></l></block></script><list></list></block><block s="doReport"><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="start"/><l>0</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="start"/><l>1</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></list></block><block var="start"/></block><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="end"/><l>0</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block><block s="reportIfElse"><block s="reportVariadicLessThan"><list><block var="end"/><l>0</l></list></block><block s="reportVariadicSum"><list><block s="reportVariadicSum"><list><block var="end"/><l>1</l></list></block><block s="reportTextAttribute"><l><option>length</option></l><block var="str"/></block></list></block><block var="end"/></block></block></block><block var="str"/></block></block></block></script></block-definition><block-definition s="text %&apos;string&apos; contains %&apos;marker&apos;" type="predicate" category="operators"><comment x="0" y="0" w="218" collapsed="false">Reports True if the first input string contains the second input string, otherwise false.&#xD;&#xD;Comparison is case-independent by default; use USE CASE-INDEPENDENT COMPARISONS to change that.</comment><header></header><code></code><translations>pt:o texto de _ antes de _&#xD;ca:text _ conté _ ?&#xD;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportVariadicGreaterThan"><list><custom-block s="position of %s in %txt"><block var="marker"/><block var="string"/></custom-block><l>0</l></list></block></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="221,255,220,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="526"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAOhUlEQVR4Xu3VwQkAAAjEMN1/abewn7jAQRC64wgQIECAAIF3gX1fNEiAAAECBAiMAHsCAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQIHLFxAWmhEwHPAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="527"></list></costumes><sounds><list struct="atomic" id="528"></list></sounds><variables></variables><blocks></blocks><scripts><script x="168" y="101.16666666666669"><block s="setBackgroundColor"><color>221,255,220,1</color></block></script></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="-230" y="150" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="0,69,12,1" pen="tip" id="535"><wear><ref mediaID="1"></ref></wear><costumes><list struct="atomic" id="536"></list></costumes><sounds><list struct="atomic" id="537"></list></sounds><blocks></blocks><variables></variables><scripts><script x="76" y="35.33333333333334"><block s="doSetVar"><l>editing last char</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script x="37" y="301.8333333333337"><block s="receiveKey"><l><option>any key</option></l><list><l>key</l></list></block><block s="doWarp"><script><block s="doIf"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="key"/></block><l>1</l></list></block><script><block s="doIfElse"><block s="reportVariadicLessThan"><list><l>47</l><block s="reportUnicode"><block var="key"/></block><l>58</l></list></block><script><block s="doIfElse"><block s="reportVariadicAnd"><list><block var="editing last char"/><block s="reportVariadicEquals"><list><block var="key"/><block var="last key"/></list></block></list></block><script><block s="doChangeVar"><l>char index</l><l>1</l></block><block s="doIf"><block s="reportVariadicGreaterThan"><list><block var="char index"/><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><block s="reportVariadicSum"><list><block var="key"/><l>1</l></list></block><block var="keypad"/></block></block></list></block><script><block s="doSetVar"><l>char index</l><l>1</l></block></script><list></list></block><block s="doSetVar"><l>entered text</l><block s="reportJoinWords"><list><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="entered text"/><l>1</l><l>-2</l></custom-block><block s="reportLetter"><block var="char index"/><block s="reportListItem"><block s="reportVariadicSum"><list><block var="key"/><l>1</l></list></block><block var="keypad"/></block></block></list></block></block></script><script><block s="doSetVar"><l>char index</l><l>1</l></block><block s="doSetVar"><l>last key</l><block var="key"/></block><block s="doSetVar"><l>entered text</l><block s="reportJoinWords"><list><block var="entered text"/><block s="reportLetter"><l>1</l><block s="reportListItem"><block s="reportVariadicSum"><list><block var="key"/><l>1</l></list></block><block var="keypad"/></block></block></list></block></block><block s="doSetVar"><l>editing last char</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script><script><block s="doSetVar"><l>editing last char</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>entered text</l><block s="reportJoinWords"><list><block var="entered text"/><block var="key"/></list></block></block></script></block></script><list><block s="reportVariadicOr"><list><block s="reportVariadicEquals"><list><block var="key"/><l>Backspace</l></list></block><block s="reportVariadicEquals"><list><block var="key"/><l>left arrow</l></list></block></list></block><script><block s="doSetVar"><l>entered text</l><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="entered text"/><l>1</l><l>-2</l></custom-block></block><block s="doSetVar"><l>editing last char</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><block s="reportVariadicEquals"><list><block var="key"/><l>right arrow</l></list></block><script><block s="doIfElse"><block var="editing last char"/><script><block s="doSetVar"><l>editing last char</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>entered text</l><block s="reportJoinWords"><list><block var="entered text"/><l> </l></list></block></block></script></block></script><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="key"/><l>up arrow</l></list></block><block var="editing last char"/></list></block><script><block s="doSetVar"><l>entered text</l><block s="reportJoinWords"><list><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="entered text"/><l>1</l><l>-2</l></custom-block><block s="reportTextAttribute"><l><option>upper case</option></l><block s="reportLetter"><l><option>last</option></l><block var="entered text"/></block></block></list></block></block></script><block s="reportVariadicAnd"><list><block s="reportVariadicEquals"><list><block var="key"/><l>down arrow</l></list></block><block var="editing last char"/></list></block><script><block s="doSetVar"><l>entered text</l><block s="reportJoinWords"><list><custom-block s="substring of %txt from position %n to position %n inclusive"><block var="entered text"/><l>1</l><l>-2</l></custom-block><block s="reportTextAttribute"><l><option>lower case</option></l><block s="reportLetter"><l><option>last</option></l><block var="entered text"/></block></block></list></block></block></script></list></block><block s="clear"></block><block s="gotoXY"><l>-230</l><l>150</l></block><block s="write"><block var="entered text"/><l>32</l></block></script></block></script><script x="364" y="10"><block s="doSetVar"><l>keypad</l><block s="reportNewList"><list><l>+0</l><l> ,.?!:;@1</l><l>abc2</l><l>def3</l><l>ghi4</l><l>jkl5</l><l>mno6</l><l>pqrs7</l><l>tuv8</l><l>wxyz9</l></list></block></block></script><script x="301" y="94.16666666666688"><block s="setColor"><color>0,69,12,1</color></block></script><script x="623" y="184.66666666666686"><block s="receiveGo"></block><block s="doSetVar"><l>entered text</l><l></l></block><block s="clear"></block><block s="gotoXY"><l>-230</l><l>150</l></block><block s="doForever"><script><block s="doSwitchToCostume"><custom-block s="costume from text %s size %n"><l>&lt;</l><l>32</l></custom-block></block><block s="doWait"><l>0.1</l></block><block s="doUntil"><block s="reportNot"><block var="editing last char"/></block><script><block s="hide"></block><block s="doWait"><l>0.1</l></block><block s="show"></block><block s="doWait"><l>0.1</l></block></script></block><block s="doSwitchToCostume"><custom-block s="costume from text %s size %n"><l>_</l><l>32</l></custom-block></block><block s="show"></block><block s="doWaitUntil"><block var="editing last char"/></block></script></block></script></scripts></sprite><watcher var="entered text" style="normal" x="10" y="31.000001999999995" color="243,118,29" hidden="true"/><watcher var="keypad" style="normal" x="10" y="52.00000399999999" color="243,118,29" extX="80" extY="70.00000000000003" hidden="true"/><watcher var="char index" style="normal" x="10" y="145.00000599999998" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="entered text"><l></l></variable><variable name="editing last char"><bool>false</bool></variable><variable name="keypad"><list struct="atomic" id="878">+0,&quot; ,.?!:;@1&quot;,abc2,def3,ghi4,jkl5,mno6,pqrs7,tuv8,wxyz9</list></variable><variable name="char index"><l>4</l></variable><variable name="last key"><l>1</l></variable></variables></scene></scenes></project><media name="t9 input" app="Snap! 9.0, https://snap.berkeley.edu" version="2"><costume name="_" center-x="0" center-y="-2" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAADCAYAAABI4YUMAAAAVElEQVQIW0WLsRGAMAwD5dDijoZtaNi/ZwEGoCbh7RDQnWSdJZk2XxRY4ZnuRTwO6PBCHe0w7XP7egVXRyBlkD/LaiGsXEZONnZ9Fdo0wXus/oqZHhDlEwctgiMDAAAAAElFTkSuQmCC" mediaID="1"/></media></snapdata>