<snapdata remixID="9978028"><project name="U3L1-ShoppingList_Empty to Students" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" scheduled="false" id="1"><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="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Add Item" idx="1" x="0" y="50.00000000000003" heading="90" scale="1" volume="100" pan="0" rotation="0" draggable="false" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="shopping-list-button-add-item" center-x="53" center-y="15" image="data:image/png;base64,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" id="10"/></item></list></costumes><sounds><list struct="atomic" id="11"></list></sounds><blocks></blocks><variables></variables><scripts><comment x="78.3701171875" y="250.99999999999991" w="90" collapsed="false">Instead of just appending the item, the code also has functionality for replacing and inserting.</comment><comment x="66" y="525.1666666666666" w="90" collapsed="false">Reads the list</comment><script x="190" y="10"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doAsk"><l>What is the item you would like to add?</l></block><block s="doDeclareVariables"><list><l>itemName</l><l>itemPos</l></list></block><block s="doSetVar"><l>itemName</l><block s="getLastAnswer"></block></block><block s="doAsk"><l>What is the index you would like the item to be placed at? Alternatively, if you want the item added to the end of the list, please enter @.</l></block><block s="doIfElse"><block s="reportEquals"><block s="getLastAnswer"></block><l>@</l></block><script><block s="doAddToList"><block var="itemName"/><block var="list"/></block></script><script><block s="doSetVar"><l>itemPos</l><block s="getLastAnswer"></block></block><block s="doIfElse"><block s="reportListContainsItem"><block var="list"/><block s="reportListItem"><block var="itemPos"/><block var="list"/></block></block><script><block s="doAsk"><block s="reportJoinWords"><list><l>There is already an item at index </l><block var="itemPos"/><l>. Would you like to replace it?</l></list></block></block><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block s="getLastAnswer"></block><l>Yes</l></block><block s="reportEquals"><block s="getLastAnswer"></block><l>Y</l></block></block><script><block s="doReplaceInList"><block var="itemPos"/><block var="list"/><block var="itemName"/></block></script><script><block s="doInsertInList"><block var="itemName"/><block var="itemPos"/><block var="list"/></block></script></block></script><script><block s="doInsertInList"><block var="itemName"/><block var="itemPos"/><block var="list"/></block></script></block></script></block><block s="doAsk"><l>Done! Would you like me to read the list?</l></block><block s="doIf"><block s="reportEquals"><block s="getLastAnswer"></block><l>Yes</l></block><script><block s="doForEach"><l>item</l><block var="list"/><script><block s="doSayFor"><block var="item"/><l>2</l></block></script></block></script></block></script><script x="10" y="23.5"><block s="receiveGo"></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list><l>Bread</l><l>Milk</l><l>Cheese</l><l>Chicken</l><l>Cereal</l></list></block></block><block s="doShowVar"><l>list</l></block></script></scripts></sprite><sprite name="Delete Item" idx="4" x="0" y="-100" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="173.4,31.211999999999993,0,1" pen="tip" id="128"><costumes><list id="129"><item><costume name="shopping-list-button-delete-item" center-x="53" center-y="15" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAAAeCAYAAADEkotAAAAG9UlEQVRoQ+1aaVBTVxQ+QAhJIKzSBSkGDTsoYhREqxWo2+i4lqJFZRmqgNalLAOF2lYqQnEpVRARBG1VcJAyRejUYkdUVgFZSyA2iMpUAVkCCUuCnftm8gYwCQ8Upc67f+Bx7z33O993zrknvCjBGIPNZquBWLxSU1t3OY1Oc+oRCKb3CgTMsfaR8/IZoDMYQjpDvYdCpdR1tLdfF4tEabyHD+8r4kxJ3qShoaGuvp7+wcGBAR9jNhuWfLSMbmNjDcasGaCnpwvKyiqkFhNgYGhIAt3dAujo7IR6bgNUlJWLc3/LUmJqahU/aX3iy+fzq2SZlSmU6SxTNzUaNcllxSpVb28vVStL8wlAIrcQZaCzqwvOpVx4npwQL1ZWUQ6tqqmJGb33BaE4dpxoCoWyNyomhrrkw0VEzyLXvQIGqmvqYLe/34Cwp/fHu+V3g4abHCHUbOvZgVra2hGpF85TUYkjx+tngN/0ALZ+6tbf2dHuVd/YeFGKABfKhMWypalrlFxMS1e1trJ4/QjJE3EGbhcUgd/nPiJRf98MHo/XiiZwoRZwFhS5e3ja7/HfRVI2BRgIDA4Z/CvvemJZWZk/LhSLxTJnqmtU3ykspDCZGlMAJgmhntsIn2xY3/+sq1O3paVFiGWUtZV1xJp164Mjvz9EISmaOgy4uroJK4pLPHjN/CuYUIsWLi76MjjIfsO6tVMHJYkEYk/Gw/mUpJSysjJPTKi5c2y7frmcpmlhbkrSM4UYyL91B4IDAvhFJUUzMaHM2Cbi/IIClXf0p00hmCSUh48ewwpn54G/G7hqSgYGBgy6KrW3pr4eaDS1SWcnMekcRB36DjsnOPxr8PH2nPQz/68H9PX1g7W5Oaj3iTSUWCyWtspz6OA18Qn7s9PXH/Jyc/D18x0Xgf/u3bDY0YGwjW8PHQYDg/fHJdRE9owFaLQvaH1EdAy4uW7Ctq5evQaOREfBbGursUxNyjybZQwSJdCZkFBND5rBZelSkIp77MRPcOXSRcj5PRd0dLQJAZ4I6RPZQwgMACDBli1zwgWS7kNChYaFjSsIiZ5JZN0rFQodiBzlcDhYhqDylnzmDLQ++VduiZNFOgqAyCNReLaiTA0JDQFNJhMLjNEj5eIlnEBk70JSIrbE1NIKtnt4vkC6ImJGC3U5PQPCggJe2CINTnlY6+rqR+xzXrUa9+dqdva4M/OVCyUl3sLCAgL374cfjh/HSEQOhYSEwrr1G0YQJ0soRBYaCfGnsJ9I8MyMDMjJycae5WUUWncjLw8iIw8Da4YRoH/BIAyX0tOwZyJjvBmlCCvCicaO7e5YgCGBLpz/GUzNTMdV6pENXCgrfSuNPkavoJbLBTU1KhGfMPKHl77hGYV+lzYLw4357TsAB/btwf8ki3QEStYorajASqo8oWTdM8hO7OkEWL1yOSGfxiuUIqyxJ+Ow+/djF2ecp4mU7RHNBPLCwtSs/48bN6iG0w0IOaXojiosLoGTsbEQFx+nMJplAd+y1R2cnJ3lRh26CwUCARwMD8WyDQXEnzdvwtXMLOBy6/FMJOTEqEXyhEKYpNUgMCgEamuqsQxXhFXq28sK9bS1DT50cJA0/HOfgn2OcljgwI86epS1ZLEjIR9ldX3oLpF2RsNbcGQQ3TVSZ2VF/zZvH4x8aZksLbiD40BzX+z2wzIKzfv5+kFDXS12D23YtAkXFZGYmX4Z34fuBn9/vzHvhLG6PlRGPbZuwewO727lYUWZJK0oqHtE9xzygclkQtyJY1hgES3H3AYeuG3e3H2vulILE8qeY5+6zctzu7/vTkJCkYteDwOZWdkQExVZUlBYYI8JxTYydp3rYJ+SnnaJ/nogkKcQYeCr8G8k2b9mRFfV1IRiQqGGAvSG2jOzs6kms2YSsUGumWQGenp7wdHeYVAk6LblNTfX4S8O53PmJzi5LPc6EhlBvuqYZBGImI9POPs8NelseXFpMQetx4UyNjZ+V51Gb0pMSaU5LMDmyPGGGEAvDV03bRwUCroX3m9uLhshFHqwNDHz1J6mdzrtyhXCrfob8uWtPfbR4xbw2OHR3/b0aURldWWE1NEXvi5mZ2t3QltXd9epuDg1czOTt5aQqehYYXEpBOzfN9AnEsaV37u3fzhGWV/AVJprMydMPCQJ992zl7LNfYuShrr6VPTrrcHU0MiD5OQU8bWsTMmQWOJb18g9N9o5uV9pnvnBTI7+e/oJQmGvzdr1G5Xt5s1TMTczxT540ulkF/8yUdLV1QUPmh9CZWUV3L6VL6qrqlRhqGuktj1rC+fz+U9k2ZYrlHQx28jIkspgfKalo+PcJxSZiYRCjcGBAbIzfAmlaHR6P1NTq0UikeR3tLZdUxMxcmtba3sUmfwPLtsb2pVxea0AAAAASUVORK5CYII=" id="130"/></item></list></costumes><sounds><list struct="atomic" id="131"></list></sounds><blocks></blocks><variables></variables><scripts><script x="84" y="52.33333333333334"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doAsk"><l>Do you want to delete an item based off its name or index?</l><comment w="90" collapsed="false">Allows for deletion via iten name or index.</comment></block><block s="doIfElse"><block s="reportEquals"><block s="getLastAnswer"></block><l>index</l></block><script><block s="doAsk"><l>What is the index of the item you wish to delete?</l></block><block s="doDeclareVariables"><list><l>itemIndex</l></list></block><block s="doSetVar"><l>itemIndex</l><block s="getLastAnswer"></block></block><block s="doDeleteFromList"><block var="itemIndex"/><block var="list"/></block></script><script><block s="doAsk"><l>What is the name of the item you wish to delete?</l></block><block s="doDeclareVariables"><list><l>itemName</l></list></block><block s="doSetVar"><l>itemName</l><block s="getLastAnswer"></block></block><block s="doDeleteFromList"><block s="reportListIndex"><block var="itemName"/><block var="list"/></block><block var="list"/></block></script></block><block s="doAsk"><l>Done! Would you like me to read the list?</l></block><block s="doIf"><block s="reportEquals"><block s="getLastAnswer"></block><l>Yes</l></block><script><block s="doForEach"><l>item</l><block var="list"/><script><block s="doSayFor"><block var="item"/><l>2</l></block></script></block></script></block></script></scripts></sprite><sprite name="Clear List" idx="2" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="0,137.70000000000002,38.55600000000003,1" pen="tip" id="196"><costumes><list id="197"><item><costume name="shopping-list-button-clear-list" center-x="53" center-y="15" image="data:image/png;base64,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" id="198"/></item></list></costumes><sounds><list struct="atomic" id="199"></list></sounds><blocks></blocks><variables></variables><scripts><script x="56" y="26"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doSayFor"><l>Clearing list, please wait one moment.</l><l>2</l></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list></list></block></block><block s="doSayFor"><l>All done!</l><l>2</l></block></script></scripts></sprite><sprite name="Search" idx="3" x="0" y="-51" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="140.25,33.660000000000004,0,1" pen="tip" id="217"><costumes><list id="218"><item><costume name="shopping-list-button-search" center-x="53" center-y="15" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAAAeCAYAAADEkotAAAAGQUlEQVRoQ+2aeVBTVxTGTyBkDwSQ6iDFgGGRRQFZIm6tOFo7OoJaSlttWeqC1FEUZaBS24oiitVahSKCoK2KFqlT1JlasKKyGpC1LLFB0FgEDBBIWBLs3Dd9mYAgjnaSjL77T5bz3r3f/X7vnnOT90gwTuPxeFRQKN4z5JgsotFpC3qk0sm9Uil7vPOI+NgO0BkMGZ3B7CFTyLWSjo5rCrk8U9jScu95npHGClpYWJiYmZrtGhwYWGvF48G8d96lOzs7gRV3CpiamoCenj7B4iUcGBpSQne3FCSdnVBX3wDlgjLF1d8ukdiGRsWtba2hIpGocrRuRwVlO9U2gEqjpC5cvMQgJCTYwNHB/iUkEae8qAOdXV1wMv3007TkJIWevl50ZXV1wshznwHl7ua+n0wmb45PSKDMmzv7RccijvsfHKiqroUvwjYOyHp6v79TdmeHepfDQE13mr7diMOJzTh9ioJSHNE074Co6T58/GFAf6ekI7iusfEMrkAFyobLdaExWSVnMs8bODlO07xCYkSVA7cKimDjurVyeX/fFKFQ2IYCKlCe7p5FqwODvDaFbSAs0wEHtkdGDV7PvZYiEAjCVKC4XK49m8mqul1YSGazWTogk5BQV98IH/j59j/p6jQRi8UybEU5OTrFLl3uGxm3ZzeZsEh3HPD3D5CVF5cECptFFzBQs2fNKdoWucPLb/ky3VFJKIEjR5PgVHpqukAgCMJAuc5w6fr5XKbhNHtbwh4dciD/5m2IjIgQFZUUWWOg7Hg2ivyCAv23zCbokExCSsuDh7DYx2fgr4Z6Ksnc3JxBN6D0VtfVAY1GfaPdWR8aBrlXr8AfN24Ad4ql1r3o6+sHJ3t7YPbJWSQul8vRfwoSYZNIK8JSUk9C/O5vVWN7eM+Gs2d+0ooWNCiPa6UzoHA9ShIYaxVUZXUNrA/5HJJTT8B0J0dA0LKzsuDKlRwC1H8OoAtH66DQL/C9sbGQmJQ4aqpB4NKOH4e21n8w2ZExX8HakCDsPYK8YulSFVD1GJ7CfJa8j8VROkPtYk4OGLLZELcvXvWdrYMjGHE4qlWMjEGrurTgNphNnAQHDh2COd58rV44WgeFZo+voobaGsyY4HXrMBgI4vbwcJVRTfebISoqGpb7+kGA/8phxuHQSsvLwdiYg8VwyJu3RQw7HkFELTnpGPb6ze69UFxYoFrFCBQO/bvDP8AjsRgO7I/TPihHM0dWH6NXWlNfD1QqRWuC1FcJMvyXi9nDahcubOOWrbB1yyYMhHptQ3H1TQCKi8WPYFdM9LA5jVeD1OPnzmfB9et5KqiaNmfYZgINPs3Wrv/3vDyKxWRzjWpBZubl5kLisaPYSkDG7NwRAQhUYXEJHD1yZNS0KJF0goerK5bKUG3DV9SLgBq5okZ+1iVQj9vaYS6fr2z4+x4Z+x3F9+SL4g8e5M6b461xUGjzgNIeaij1qaeq0XaEeOpDKet0agp2np9/ANy68SdWyxCshfPnPzMPfFeLp1BUg1BD9SgqOgoDjtc2VLdQ3cT7Ua9/mjSovkEIAatWdd+tqjDCQHm5e2WsCQ76NCx0vSZ1EGON40D2pRxIiI8rKSgs8MJA8Syt/F35XunnM8/SCfd0x4EvY75W5vyatb+yujoaA4U2FGA61JGdk0OxmWqtO0rfYCU9vb3g7cUflEu7XYTNzbWqG4ce7h7JCxYuCt4XF0vc6tCBCyQp+cTTjNQTZcWlxe5IjgqUlZXVRCaN3pSSnkHje2IxomnJAXTT0H/likGZtHvWveZmwTBQ6IODjV0QZ4Lpj5kXLmh8q64lT3Ru2AcPxRD4WWB/++PHsRVVFbG4wGceF3NzcTvMMTHZcCwxkWpvZ6NzE3mdBRUWl0JE+JaBPrkssezu3XD1uY72ACbJ1XnGTsWQMiZ002bymtUfkVhM5uvsj9bn1tAohLS0dMXlS9nKIYUytLax/uRIUWM+0mz9trW72SSzZJms13mZ7wo9t5kz9e3tbLF/EOh0Yhf/KnS7urrgfnMLVFRUwq2b+fLaygp9BpOV0f6kPUYkErWO1veYoPCDeZaWDhQG4xMjY2OfPpncTi6TsQYHBoid4SuQotHp/WxDI7FSqcyXtLVfpsoZV2vaanqe1+W/0F2sy7ahcccAAAAASUVORK5CYII=" id="219"/></item></list></costumes><sounds><list struct="atomic" id="220"></list></sounds><blocks></blocks><variables></variables><scripts><script x="69" y="33"><block s="receiveInteraction"><l><option>clicked</option></l></block><block s="doAsk"><l>What is the item you would like to search for?</l></block><block s="doDeclareVariables"><list><l>itemName</l></list></block><block s="doSetVar"><l>itemName</l><block s="getLastAnswer"></block></block><block s="doIfElse"><block s="reportListContainsItem"><block var="list"/><block var="itemName"/></block><script><block s="doSayFor"><block s="reportJoinWords"><list><l>The list contains </l><block var="itemName"/><l> at index </l><block s="reportListIndex"><block var="itemName"/><block var="list"/></block><l>.</l></list></block><l>2</l></block></script><script><block s="doSayFor"><block s="reportJoinWords"><list><l>The list does not contain </l><block var="itemName"/><l>.</l></list></block><l>2</l></block></script></block></script></scripts></sprite><watcher var="list" style="normal" x="10" y="10" color="243,118,29" extX="80" extY="305"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="map %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>mapone</l><l>mapmany</l></list></block><block s="doSetVar"><l>mapone</l><block s="reifyScript"><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="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><block s="evaluate"><block var="mapone"/><list><block s="reportCDR"><block var="data"/></block></list></block></block></block></script><list><l>data</l></list></block></block><block s="doSetVar"><l>mapmany</l><block s="reifyScript"><script><block s="doIf"><custom-block s="empty? %l"><block s="reportListItem"><l>1</l><block var="data lists"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></block><block s="evaluate"><block var="mapmany"/><list><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><list><block var="data lists"/></list></custom-block></list></block></block></block></script><list><l>data lists</l></list></block></block><block s="doIfElse"><custom-block s="empty? %l"><block s="reportCDR"><block var="lists"/></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="mapone"/><list><block s="reportListItem"><l>1</l><block var="lists"/></block></list></block></block></script><script><block s="doReport"><block s="evaluate"><block var="mapmany"/><list><block var="lists"/></list></block></block></script></block></script></block></script></block-definition><block-definition s="empty? %&apos;data&apos;" type="predicate" category="lists"><header></header><code></code><translations></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></translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><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></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></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><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></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></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></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="catch %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></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></script></block-definition><block-definition s="throw %&apos;cont&apos;" type="command" category="control"><header></header><code></code><translations></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></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></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></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></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="ignore %&apos;x&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="tell %&apos;sprite&apos; to %&apos;commands&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt">Sprite</input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block var="commands"/><block var="sprite"/></block><list></list></block></script></block-definition><block-definition s="ask for %&apos;reporter&apos; from %&apos;sprite&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%txt">Sprite</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block var="reporter"/><block var="sprite"/></block><list></list></block></block></script></block-definition><block-definition s="tell %&apos;sprite&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportAttributeOf"><block var="action"/><block var="sprite"/></block><list></list></block></script></block-definition><block-definition s="ask %&apos;sprite&apos; %&apos;expression&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">Sprite</input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportAttributeOf"><block var="expression"/><block var="sprite"/></block><list></list></block></block></script></block-definition><block-definition s="all but first letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="199" collapsed="false">Takes a text string as input, and reports a new text string containing all but the first character of the input.</comment><header></header><code></code><translations>pt:_ sem o primeiro caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but first letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="string"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but first of empty word.</l></custom-block></script></block><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>2</l></block><block s="doUntil"><block s="reportGreaterThan"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="all but first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="223.000001" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the first word, with one space between words and no spaces at the beginning or end. (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a primeira palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>bf</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bf</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportCDR"><block var="sentence"/></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but first of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportGreaterThan"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><script><block s="doSetVar"><l>bf</l><block s="reportJoinWords"><list><block var="bf"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block var="bf"/></block></script></block></script></block-definition><block-definition s="all but last letter of %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="218" collapsed="false">Takes a text string as input, and reports a new text string containing all but the last letter of the input.</comment><header></header><code></code><translations>pt:_ sem o último caractere&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l><l>i</l></list></block><block s="doIf"><block s="reportIsA"><block var="string"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="all but last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="string"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but last of empty word.</l></custom-block></script></block><block s="doSetVar"><l>result</l><l></l></block><block s="doSetVar"><l>i</l><l>1</l></block><block s="doUntil"><block s="reportEquals"><block var="i"/><block s="reportStringSize"><block var="string"/></block></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block s="reportLetter"><block var="i"/><block var="string"/></block></list></block></block><block s="doChangeVar"><l>i</l><l>1</l></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="all but last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211.99999999999997" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing all but the last word, with one space between words and no spaces at the beginning or end.  (Note: consider using SENTENCE-&gt;LIST and processing the resulting list instead of doing recursion on sentences in text string form.  List operations are faster.)</comment><header></header><code></code><translations>pt:_ sem a última palavra&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>bl</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>bl</l><l></l></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="index"/><block s="reportListLength"><block var="sentence"/></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="sentence"/></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>All but last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="index"/><l>1</l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><block s="doReport"><l></l></block></script></block><block s="doUntil"><block s="reportLessThan"><block var="index"/><l>1</l></block><script><block s="doSetVar"><l>bl</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="bl"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doReport"><block var="bl"/></block></script></block></script></block-definition><block-definition s="first word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="236" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the first word, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a primeira palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>first</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>first</l><l></l></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>First of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>first</l><block s="reportJoinWords"><list><block var="first"/><block s="reportLetter"><block var="index"/><block var="sentence"/></block></list></block></block></script></block><block s="doReport"><block var="first"/></block></script></block></script></block-definition><block-definition s="last letter of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="260" collapsed="false">Takes a text string as input, and reports the last character in the string.</comment><header></header><code></code><translations>pt:o último caractere de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="last letter of %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty word.</l></custom-block></script></block><block s="doReport"><block s="reportLetter"><block s="reportStringSize"><block var="word"/></block><block var="word"/></block></block></script></block-definition><block-definition s="last word of %&apos;sentence&apos;" type="reporter" category="operators"><comment x="0" y="0" w="262" collapsed="false">Takes a text string as input, divides it into words treating one or more spaces as a word separator (only spaces count; punctuation is part of the word) and reports a text string containing only the last word of the input, with no spaces before or after it.</comment><header></header><code></code><translations>pt:a última palavra de _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>last</l></list></block><block s="doWarp"><script><block s="doSetVar"><l>last</l><l></l></block><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="sentence"/></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><block var="sentence"/></block></block></script></block></script></block><block s="doSetVar"><l>index</l><block s="reportStringSize"><block var="sentence"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block><script><custom-block s="error %txt"><l>Last of empty sentence.</l></custom-block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><l>1</l></block><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block><block s="doChangeVar"><l>index</l><l>-1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block><script><block s="doSetVar"><l>last</l><block s="reportJoinWords"><list><block s="reportLetter"><block var="index"/><block var="sentence"/></block><block var="last"/></list></block></block></script></block><block s="doReport"><block var="last"/></block></script></block></script></block-definition><block-definition s="empty word? %&apos;word&apos;" type="predicate" category="operators"><comment x="0" y="0" w="208" collapsed="false">Takes a text string as input, and reports TRUE if the string has no characters in it of any kind, otherwise false.</comment><header></header><code></code><translations>pt:a palavra _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="empty word? %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportStringSize"><block var="word"/></block><l>0</l></block></block></script></block-definition><block-definition s="empty sentence? %&apos;sentence&apos;" type="predicate" category="operators"><comment x="0" y="0" w="221" collapsed="false">Takes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.</comment><header></header><code></code><translations>pt:a frase _ está vazia&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l></list></block><block s="doIf"><block s="reportIsA"><block var="sentence"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListIsEmpty"><block var="sentence"/></block></block></script></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doIf"><block s="reportEquals"><block s="reportStringSize"><block var="sentence"/></block><l>0</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doUntil"><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportStringSize"><block var="sentence"/></block></block><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportLetter"><block var="index"/><block var="sentence"/></block><l> </l></block></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><comment x="0" y="0" w="230.66666666666666" collapsed="false">Like JOIN, takes any number of words (text strings) and reports a sentence with its inputs concatenated, but inserts a blank space between the inputs.&#xD;Consider using SENTENCE (Lists palette) instead.</comment><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;pt:uma frase com as palavras _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="words"/></block></block><script><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="words"/></block><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportListIsEmpty"><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><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="join words %mult%txt"><block s="reportListItem"><l>1</l><block var="words"/></block></custom-block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></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"><comment x="0" y="0" w="165.33333333333334" collapsed="false">Takes a sentence in list form and reports the sentence as a text string.</comment><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;pt:uma frase com as palavras em _&#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"><comment x="0" y="0" w="196" collapsed="false">Takes a sentence in text string form and reports the sentence as a list of its words.</comment><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;pt:uma lista com as palavras da frase _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportStringSize"><l></l></block><l>0</l></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></block></script></block-definition><block-definition s="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="146.42857142857144" collapsed="false">report a list in which each item is one letter from the input word</comment><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;pt:uma lista com os caracteres da palavra _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="word"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="word $arrowRight list %txt"><l></l></custom-block></autolambda><list></list></block><block var="word"/></block></block></script></block><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block-definition><block-definition s="list $arrowRight word %&apos;list&apos;" type="reporter" category="operators"><comment x="0" y="0" w="158.57142857142858" collapsed="false">join all the items of the input list&#xD;into a single word, and report it</comment><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;pt:uma palavra com os caracteres em _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><block var="list"/></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>list</option></l></block></autolambda><list></list></block><block var="list"/></block><l></l></block><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><block s="reportNewList"><list><custom-block s="list $arrowRight word %l"><l/></custom-block></list></block><l></l></block></autolambda><list></list></block><block var="list"/></block></block></script></block-definition><block-definition s="sentence %&apos;phrase&apos;" type="reporter" category="lists"><comment x="0" y="0" w="302.6666666666667" collapsed="false">SENTENCE is the main constructor for sentences, represented&#xD;as lists of words.  It takes zero or more inputs, each of which can&#xD;be either a list or a text string.  If a list, the input is assumed to be&#xD;a list of words.  If a text string, it is converted to a list of words using&#xD;SENTENCE→LIST.  Then all the lists of words are appended to form a new list of words.&#xD;&#xD;If the inputs are lists of lists rather than lists of words, SENTENCE,&#xD;like APPEND, does only one level of flattening, reporting a list of&#xD;all the items of all the input lists.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%s"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="phrase"/></block><script><block s="doReport"><block s="reportNewList"><list></list><comment w="224.66666666666666" collapsed="true">Workaround for stupid append misfeature.</comment></block></block></script></block><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><l></l><custom-block s="sentence $arrowRight list %txt"><l></l></custom-block></block></autolambda><list></list></block><block var="phrase"/></block></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></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="printable %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="188.66666666666666" collapsed="false">Takes a (possibly deep) list as input,&#xD;and reports a human-readable text form &#xD;of the list (namely, Lisp notation).</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><l>()</l></block></script></block><block s="doReport"><block s="reportJoinWords"><list><l>(</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="printable %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block><l>)</l></list></block></block></script></block-definition></blocks><variables><variable name="list"><list struct="atomic" id="1966">Bread,Milk,Cheese,Chicken,Cereal</list></variable></variables></project><media name="U3L1-ShoppingList_Empty to Students" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>